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

Reply via email to