LINUX.ORG.RU

стандартные средства для поддержки файлов конфигов

 


0

1

Маразм крепчал.
Где в линуксе стандартная библиотека для поддержки обработки файлов конфигов типа по образу и подобию всяких squid.conf и т.д?
Порылся в памяти и интернете и ни там ни там ничего путнего не нашел.
Пока подозреваю провал в памяти и деградацию способности гуглить.

UPD: пардон, про язык совсем забыл. интересует под С/С++.

★★★★★

Последнее исправление: yax123 (всего исправлений: 1)
Ответ на: комментарий от leave

Для православной С. Можно и С++, хотя плюсы я пока рассматриваю в рамках Qt, а там вроде как свой велосипед для конфигов есть.

yax123 ★★★★★
() автор топика

Где в линуксе стандартная библиотека для поддержки обработки файлов конфигов

это вы так пошутили?

anonymous
()
Ответ на: комментарий от sergej

хм. за ответ спасибо.
А еще вопрос для расширения кругозора. В линуксе куча прог которые используют конфиги. Все городят свой велосипед или используют что-то одно?

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Обычно велосипед называется lex+bison. Очень удобно и не ограничивает синтаксис конфига.

sergej ★★★★★
()
Ответ на: комментарий от yax123

Все городят свой велосипед или используют что-то одно?

это смотря что у тебя за конфиг. key=value можно и велосипедом.

emulek
()
Ответ на: комментарий от emulek

Хочется обработки каментов, ключей-значений, ну может еще секций (на текущем этапе это не актуально, но вообще не плохо бы).
Можно конечно велосипедить, но с одной стороны лениво, а с другой интересней заниматься основной задачей (мировое госоподство, грабление кОрОванов и т.д.).

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Хочется обработки каментов, ключей-значений, ну может еще секций (на текущем этапе это не актуально, но вообще не плохо бы).

Вроде libconfig должен подойти.

theNamelessOne ★★★★★
()
Ответ на: комментарий от yax123

Хочется обработки каментов

man 7 regex

ну может еще секций (на текущем этапе это не актуально, но вообще не плохо бы).

надо будет — сделаешь. Может ты туда вообще Lua вставишь?

emulek
()

Guile же. Официальная штука в GNU для таких вот вещей.

держки обработки файлов конфигов типа по образу и подобию всяких squid.conf и т.д?

Формат конфигов разве где-то стандартизирован?

yoghurt ★★★★★
()
Ответ на: комментарий от Eddy_Em

О как все возбудились :). В принципе после libconfig ветку можно было бы закрыть как решенную. С другой стороны поступают всякие разные предложения которые может кому-то быть интересными.

Сам писать точно не буду, JSON лично меня бесит до зубовного скрежета.
Регекспы так же прикручивать не буду (я лучше основной тематикой займусь).
Lua на самом деле очень любопытно, но не здесь и не сейчас.

yax123 ★★★★★
() автор топика

libconfig++ или что-либо xml-ное, если нужна гибкость. Я за второй вариант, поскольку он гибкий и удобный.

andreyu ★★★★★
()
Ответ на: комментарий от Deleted

Упаси Велес юзать это для конфигов в своем софте. Хотя, если для конторки делаешь - можно, я разрешаю :)

По теме: Use libxml2, <username>!

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

xml в конфигах, на мой взгляд, лишний геморрой.
если кто-то конфиг напишет на все случаи жизни, а тебе только пару мест поправить раз в жизни, стерпеть еще можно. А если самому его придумывать и заполнять - ну его нафик.

yax123 ★★★★★
() автор топика

Предложу protobuf. Прекрасно сериализует данные, в том числе, в читаемом ascii формате. Это будет хорошо работать, если конфиги пишутся и читаются преимущественно программно. Например, настройки сервиса, управляемые через web-интерфейс или другой ui. Если во главу ставится генерация конфига человеком, то вариант protobuf не оптимален, конечно/

Deleted
()

Если используется OpenSSL, то можно взять парсилку конфигов оттуда же. Она умеет переменные окружения, каменты и еще немного. Вот тут подробнее: http://www.openssl.org/docs/apps/config.html

API простой - NCONF_new, NCONF_load, NCONF_get_string, NCONF_get_number_e и т.п.

Минусы - документации практически нет, нужно смотреть в исходники OpenSSL-ных утилит. И эта парсилка не нравится valgrind'у, пишет что там может что-то течь. Но это весь OpenSSL такой

anonymous
()

Для C++ есть boost::program_options или boost::property_tree

codeogre
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.