From 4773c64567c30f798de38174fa55931be7df25b4 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Tue, 11 Aug 2009 14:56:55 +0200 Subject: Initial commit. --- config.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 config.c (limited to 'config.c') diff --git a/config.c b/config.c new file mode 100644 index 0000000..ea574fb --- /dev/null +++ b/config.c @@ -0,0 +1,44 @@ +#include +#include + +#include + +config_t config; + +int cfg_init() { + config_init(&config); + + char cfg_file[0xff]; + strcpy(cfg_file, getenv("HOME")); + strcat(cfg_file, "/.ircstats/config"); + + if(config_read_file(&config, cfg_file) == CONFIG_TRUE) { + return 1; + } else { + int line = config_error_line(&config); + if(line == 0) + fprintf(stderr, "Could not read config: %s\n", config_error_text(&config)); + else + fprintf(stderr, "Parse error on line %d: %s\n", config_error_line(&config), config_error_text(&config)); + } + + config_setting_t *regexes_setting = config_lookup(&config, "regexes"); + if(!config_setting_is_aggregate(regexes_setting)) { + fprintf(stderr, "Setting \"regexes\" must be an aggregate type.\n"); + return 1; + } + + int regex_count = config_setting_length(regexes_setting); + + for(int i = 0; i < regex_count; i++) { + config_setting_t *re_setting = config_setting_get_elem(regexes_setting, i); + const char *text, *join; + if(!(config_setting_lookup_string(re_setting, "text", &text) && config_setting_lookup_string(re_setting, "join", &join))) { + fprintf(stderr, "Regex set #%d missing one or more keys.\n", i+1); + continue; + } + } + + return 0; +} + -- cgit v1.2.3