LINUX.ORG.RU

Парсинг конфиг-файлов


0

0

Немного пишу на шелле и TCL/TK для своих ндобностей. Сейчас встал вопрос насчет кофиг-файла с кучей опций. В виндах и досе существовали INI с понятным синтаксисом и разбиением на блоки. В юниксе везде все по разному.

Как посоветуете работать с конфигами? Придумывать чтото и парсить самому? Никаких приблуд готовых нету? Или хоть подтолкните в правильную сторону...

Спасибо заранее.

З.Ы. Надеюсь, получилось обьяснить, что мне надо:)

anonymous

> Немного пишу на шелле и TCL/TK для своих ндобностей.

Встраивай tcl. Зачем что-то придумывать.

anonymous
()

Re

на шелле стандартное решение для конфига с тучей опций --
написать файл на шелле, который будет определять какие-то переменные,
и прямо этот файл вызывать во время инициализации приложения.
если есть смысл разбить конфиг на логически независимые части --
создается каталог ~/.my-app.d/ и аналогичным образом импортируются
все файлы из этого каталога.
описание и значение всех опций записываются в те же файлы в виде
комментариев.

зачем что-то парить самому если можно воспользоваться парсером
интерпретатора?

два основных недостатка такого подхода -- потенциальные проблемы
с визардами и прочим гуевыми конфигураторами и возможность поместить
в конфиг вредоносный код.

на sourceforge/freshmeat можно найти несколько библиотек для
разбора опций командной строки и конфигурационных файлов, разной
степени разумности.

anonymous
()
Ответ на: Re от anonymous

> два основных недостатка такого подхода -- потенциальные проблемы с визардами и прочим гуевыми конфигураторами и возможность поместить в конфиг вредоносный код.

Для тикля можно создать безопасный подчиненный интерпретатор и выполнять конфиг в нем. С кофигуратором проблем тоже не должно возникнуть.

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

Так... Может ткнете пальцем, где найти хреновину для тикля для разбора конфигов? А то чего то гуглил, одна хрень лезет.. С шеллом все понятно, так и делал, но с тиклем такое не проходит. Можно конечно сделать source, и кусок с конфигом, но в конфиге тогда получается тиклевый синтаксис, разновсячечкие set и т.д., а хочется по простому, чтоб другим тоже было понятно. Посему хочется именно библиотеку или скрипт для тикля по етому поводу.

P.S. Я с TCL относительно недавно работаю, поэтому немного не все иногда понимаю... Никто не подскажет русскоязычный ресурс, форум, сугубо по тиклю? А то ангийкой документации полно, но когда хочешь чтото конкретное, очень сложно искать:/

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

Я libConfuse пользуюсь, правда не знаю, можно ли ее из TCL использовать.

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

> Так... Может ткнете пальцем, где найти хреновину для тикля для
разбора конфигов? А то чего то гуглил, одна хрень лезет.. 

Добавь в строку поиска site:tcl.tk. Ответ практически на любой вопрос
находится на раз.

Здесь немного информации есть: http://wiki.tcl.tk/2438 .

> С шеллом все понятно, так и делал, но с тиклем такое не
проходит. Можно конечно сделать source, и кусок с конфигом, но в
конфиге тогда получается тиклевый синтаксис, разновсячечкие set и
т.д., а хочется по простому, чтоб другим тоже было понятно. 

array set config {
	addr server
	port 10000
}

Что сложного-то?

> Посему хочется именно библиотеку или скрипт для тикля по етому
поводу.

В tcllib есть библиотека для работы с ini файлами. Только зачем?

> Никто не подскажет русскоязычный ресурс, форум, сугубо по тиклю? А
то ангийкой документации полно, но когда хочешь чтото конкретное,
очень сложно искать:/

http://mail.ice.ru/lists/tcl/ -- он полуживой, но попробуй написать.

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

>Читай про lex и yacc - они для таких вещей созданы

Что-то я сомневаюсь, что именно для таких :-) Отпарсить конфиг файл можно и своим парсером -- пишется за 15 мин.. А еще есть XML :-)

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