LINUX.ORG.RU

чем парсить простой конфиг?


0

0

В конфиге строки вида

name=value

нагуглил libconfig и libConfuse, но как-то неохота тащить полмега для маленькой программки, есть ли альтернативы?

или не заморачиваться и сделать "руками"?

★★★★★

не заморачиваться и сделать "руками". Будет быстрее.

Die-Hard ★★★★★
()

на чём хоть парсить то? boost::program_options не плох в принципе, если а) C++ б) не хочется заморачиваться с собственным парсером в) конфиг простой a'la INI.

// wbr

klalafuda ★☆☆
()

bison/flex.

anonymous
()

libconfig мне понравился... использую его для программы на рутере - но там и конфиг посложнее будет. Если у тебя такой уж жёсткий ембедед, то strtok в помощь: Считал имя переменной -> в switch/case выбрал переменную и из второго возврата strtok взял для неё значение. Самый "ненакладный" вариант :)

lv ★★
()

>тащить полмега для маленькой программки

ты что хочешь статически линковаться? тогда кдоктору.
в противном случае ты ничего не тащишь и не раздуваешь.

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

>ты что хочешь статически линковаться?

нет, но пете/васе придется тащить либу, которая раз в 10 больше самой программы

программа на C, уже руками делаю

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

> В конфиге строки вида

> name=value

На быструю руку: exec-ом позвать баш, через readline и set выставить переменные окружения, а потом в основной программе читать их.

anonymous
()

Если в программе используется glib, то можно им

ttnl ★★★★★
()

`g_key_file_` — и добро пожаловать в царство G-пятки! Зато есть на большинстве систем.

Sphinx ★★☆☆
()
Ответ на: комментарий от lazyklimm

>нет, но пете/васе придется тащить либу, которая раз в 10 больше самой программы

просто та же либа может быть уже установлена в системе и использоваться другими программами

generatorglukoff ★★
()

cat config | tr '=' ':' > config.yml

А дальше YAML парсером

anonymous
()

Сходу вспоминается, что:

- fgets() + strspn() + strcspn() (для примера см. wmbday - http://git.altlinux.org/people/php_coder/packages/wmbday.git?p=wmbday.git;a=b...)

- fread() + regexec() (для примера см. mpdscribble - http://git.altlinux.org/people/php_coder/packages/mpdscribble.git?p=mpdscribb...)

- использовать libconfuse (для примера см. katrin - http://git.altlinux.org/people/zver/packages/katrin.git?p=katrin.git;a=blob;f...)

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