Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=yaxmenu.git;a=commitdiff;h=dd379bd74a97985fd6288facad09d159be0b5ea9
commit dd379bd74a97985fd6288facad09d159be0b5ea9 Author: James Buren <r...@frugalware.org> Date: Mon Dec 7 12:03:09 2009 -0600 config.c * use generic parsing function + callback diff --git a/src/config.c b/src/config.c index 471e47c..bc32520 100644 --- a/src/config.c +++ b/src/config.c @@ -27,43 +27,13 @@ static const char config_file_name[] = "cfgrc"; static const char config_key_theme[] = "theme"; static const char config_key_menu[] = "menu"; -static inline bool _config_parse_line(char *line) { - char *str, *key, *val; - size_t i, j; - - assert(line); - - str = strchr(line,G->comment_char); - - if(str) - *str = '\0'; - - line += strspn(line,G->whitespace_chars); - - if(!*line) - return true; - - if(sscanf(line,G->scanner_format,&i,&j)) - return false; - - *(line + i - 1) = '\0'; - - *(line + j - 1) = '\0'; - - key = xstrtrim(line); - - val = xstrtrim(line + i); - - if(!*key || !*val) - return false; - +static bool _config_parse_callback(const char *key,const char *val) { if(!strcasecmp(key,config_key_theme)) xsetstr(&G->theme,val); else if(!strcasecmp(key,config_key_menu)) xsetstr(&G->menu,val); else return false; - return true; } @@ -86,14 +56,12 @@ bool config_parse(void) { return false; } - for( num = 1 ; fgets(line,array_entries(line),file) ; ++num ) - if(!_config_parse_line(line)) { - eprintf("Parsing error at line %u in %s.\n",num,path); - fclose(file); - return false; - } + num = xparsefile(file,_config_parse_callback); + + if(num) + eprintf("Parsing error at line %u in %s.\n",num,path); fclose(file); - return true; + return !num; } _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git