LINUX.ORG.RU

есть стандартные методы работы с .conf-файлами?


0

0

Господа! кто знает или может предложить какой-нибудь простой метод работы с .conf-файлами? Ну, типа программа хочет читать свой настройки из /etc/prog.conf, есть ли библиотека/функции как вычленять секции, параметры и их значения (типа функций работы с .ini-файлами в windows)?

Смотри в сторону flex, bison.

asd
()

Да вы что! Я не хочу делать крутую прогу синтаксического и лексического анализа! Мне надо настройки проги считать из файла!

stormbringer
() автор топика

Тогда, если у тебя все просто, используй fscanf().

asd
()

Да, но там МНОГО настроек, расположены они могут быть не по порядку,
и делать их будет глупый юзер!

что-то типа такого:

[options]
plugin=file
plugin=sql

[file]
filename="/var/log/comtr"

[sql]
host="sqlhost"
database="test"
user="phone"
password="12345"

можно конечно самому написать прогу, которая разбирала бы секции и сопоставляла
параметрам значения, но мой вопрос и был:
А НЕТ ЛИ ТАКОЙ ЛИБЫ/ФУНКЦИЙ СТАНДАРТНОЙ!
неужели все делают себе сами процедуры работы с конфигами (вот ведь уродство!)

stormbringer
() автор топика

А зачем тебе эти названия секций ? Убери их и с помощью lex'a ты напишешь разбор конфига также быстро, как если бы ты использовал либу :). И расположены параметры будут как угодно. Если же тебе нужны названия секций - тут уже надо bison юзать.

timur
()

И, кстати, про KDE: это демон ;) Зачем ему иксы?

stormbringer
() автор топика

Если надо очень шустро и с максимально наименьшим кодом, то тогда - http://www.enjoy.ne.jp/~gm/program/parsecfg/index.html. Понимает "плоские" файлы типа id_tag = value, а также файло типа .INI в виндах (как раз то, что тебе нужно) ;-)

Druker
()

Спасибо, Druker (кого интересно дрючишь?). Но 'parsecfg' не потянет, так как там надо знать все возможные параметры на стадии написания программы, а мне надо чтобы можно было получить сначала список всех секций и параметров в них, а затем передать их(параметры и значения) в соответствующие plugin'ы. Короче, придется видимо самому клепать, а потом где-нить выкладывать...

stormbringer
() автор топика

Возьми за основу parsecfg - и создавай чего-то типа хэша в памяти при однократном
чтении файла, например, в структуру типа:
typedef struct
{
	char *identificator;
	char *parameter;
	struct config_pair *next;
} config_pair;

Druker
()

Proshe wsego ispol'zowat' kakoj popalo skriptowyj jazyk dlia konfigow, a potom wydirat' ego peremennye.

anonymous
()
2 апреля 2001 г.

Лучше использовать XML для описания конфигов. Библиотек для работы с ним - море.

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