Сделал бранч для экспериментов - uird.next.
Пока добавлен только новый парсер параметров cfg_parser, разбирает параметры из конфига uird и cmdline и записывает в папку /tmp/parameters используя фс как массив. Значительно упрощается доступ к параметрам. Для получения значений можно использовать стандартные ls, cat, grep и т.д. Чтоб еще больше упростить добавил функцию getpar. Она заменяет и cmdline_value и cmdline_parameter.
Теперь на примере. Параметр uird.from=/MagOS::/mnt/magos::noexec,/MagOS-Data::/mnt/data
getpar uird.from
вернет
1 2
это номера файлов в которых хранятся значения первого и второго параметра. Нужны для перебора параметров в цикле.
getpar uird.from 1
вернет
/MagOS
/mnt/magos
noexec
Здесь 1 это номер файла, то есть вернет весь первый параметр, с его подпараметрами (то что разделяется :: )
getpar uird.from 1 1
вернет
/MagOS
вторая цифра здесь номер строки
когда значение у параметра заведомо одно именно так оно и получается
getpar параметр 1 1
Теперь побочные, но полезные штуки.
getpar uird.from [[:digit:]]
вернет все значения по одному в строку, полезно когда нет подпараметров, например для uird.ro(cp,rw,run) это будут все значения разделенные переводом строки. Этот digit, будет добавлен к cat /папка/папка[[:digit:]], то есть можно и что-то другое [1-3] например. Имена файлов там только цифры.
getpar uird.from 1 "2,$"
вернет
/mnt/magos
noexec
то есть все подзначения первого параметра от второго до последнего, там просто sed по этому можно передать /regexp/ (только то что соответствует регекспу) или 1,4 (с первого по четвертый)
Если параметр значений не имеет, то два варианта проверки.
- по коду завершения: 0 если параметр включен, и не 0 если не включен
- по возвращаемому значению: enabled - если включен и пусто если выключен.
Второй варант проверки удобен для параметров, которые можно использовать со значениями и без. Если включено то там либо enabled либо цифры, если выключено - пусто.
Для выключения параметра включенного в конфиге передаем ему пустое значение.
P.S. Пока не все проверки переписал, только чтоб с моим cmdline загрузилось :))