URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1123
[ Назад ]

Исходное сообщение
"Обработка конфигурационного файла"

Отправлено fvl , 22-Ноя-02 04:03 
Вообщем у меня есть следующее:

Файл test.conf:
##################################
## Вот тут большущий коментарий
##################################
test {
    bla = bla; # и тут комментарий
    bla = bla;
    bla = bla;
}

Вот как обработать такой синтаксис?
У меня вот есть кое какая идея по этому поводу.

Файл parseconf.c
#include <stdio.h>
#define MAXLINE 256
...
void parseconf(void)
{
   FILE *fp;
   char *line;
   char *file;
   filename = "test.conf"
   if ((fp = fopen("filename", "r")) == NULL)
   {
    fprintf(stderr, "Can`t open filename: %s\n", filename);
    exit(1);
   }
   while ((fgets(line, MAXLINE, fp)) !=NULL)
   {
    checkconf(line);
   }
}

Где функция checkconf - обрабатывает синтаксис, считывает и записывает переменные.
Вот если так надо делать то не пойму, как мне написать эту функцию?
Как сделать чтоб она обрабатывала синтаксис? Если можете напишите готовый пример или поделитесь опытом или идеями.
Заранее спасибо!


Содержание

Сообщения в этом обсуждении
"RE: Обработка конфигурационного файла"
Отправлено joker , 22-Ноя-02 10:18 
попробуй поюзать регулярные выражения.(man regcomp, man regexec)
Но лучше поищи в инете примеры, потому что, например, у меня под РедХат ман довольно кривой по этим функциям.



"RE: Обработка конфигурационного файла"
Отправлено uldus , 22-Ноя-02 10:24 
>Где функция checkconf - обрабатывает синтаксис, считывает и записывает переменные.

Для твоего примера конфига такое не подойдет, так как присутствуют многострочные директивы конфигурации. Самый простой путь, не изобретать велосипед, а взять 2-3 небольшие программы в исходниках с конфигурационными файлами подходящего формата и посмотреть как там реализован парсинг конфигов.


"RE: Обработка конфигурационного файла"
Отправлено fvl , 22-Ноя-02 23:21 
Да я так и думал посмотреть в других прогах. Нашел подходящию - named. Хм. Вы видели его сырцы? Это ужас я там ничего не понял.