/* * example.c * * Copyright 2025 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * */ #include "microconf.h" /* Настройки */ #define TEST_FILE "microconf_test.conf" #define LEN_MAX_VAL 20 #define LEN_MAX_KEY 10 #define VALS_COUNT 3 /* Массивы */ char vals[VALS_COUNT][LEN_MAX_VAL] = {""}; char keys[VALS_COUNT][LEN_MAX_KEY] = {""}; /* Готовый обработчик, требует только имена массивов */ #define INPUT_KEYS_NUM keys #define INPUT_VALS_NUM vals #include "handler.h" /* * * Можно определить свой обработчик, например: * * save_data_t my_handler(unsigned long num) { * save_data_t t; * t.key = keys[num]; * t.value = vals[num]; * return t; * } * */ int main(void) { /* Отрыть файл */ file_t fp = fopen(TEST_FILE, "r"); /* Функция: * int microconf_compile ( * файловая_структура, * обработчик_ввода, * максимальная_длинна_ключа, * максимальная_длинна_значения, * максимальное_количество_ключей * ); */ int status = microconf_compile(fp, microconf_std_handler, LEN_MAX_KEY, LEN_MAX_VAL, VALS_COUNT); /* При ошибке - аварийно завершить */ if (status == EXIT_FAILURE) return status; /* Вывести в консоль */ unsigned char num_read = 0; while (num_read < 3) { char* key = keys[num_read]; char* val = vals[num_read]; printf("Key=%s Value=%s\n", key, val); num_read ++; } /* Закрытие файла и успешное завершение программы */ fclose(fp); return EXIT_SUCCESS; }