X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=parser%2Fparse.c;h=8c2d012eaeb511e089c8f1fa01fb2a4f2268cc83;hb=d658612cac44ccc1406aea1bad48c851016e4751;hp=85ffc15168e2b2b2b57d558b325ce2205b0ae230;hpb=41f0ff035bef7fb14e4ede5aa36c71e8948731b9;p=chaz%2Fopenbox diff --git a/parser/parse.c b/parser/parse.c index 85ffc151..8c2d012e 100644 --- a/parser/parse.c +++ b/parser/parse.c @@ -165,6 +165,7 @@ gboolean parse_load(const gchar *path, const gchar *rootname, xmlDocPtr *doc, xmlNodePtr *root) { struct stat s; + if (stat(path, &s) < 0) return FALSE; @@ -242,7 +243,7 @@ gchar *parse_string(xmlDocPtr doc, xmlNodePtr node) gint parse_int(xmlDocPtr doc, xmlNodePtr node) { xmlChar *c = xmlNodeListGetString(doc, node->children, TRUE); - gint i = atoi((gchar*)c); + gint i = c ? atoi((gchar*)c) : 0; xmlFree(c); return i; } @@ -251,11 +252,11 @@ gboolean parse_bool(xmlDocPtr doc, xmlNodePtr node) { xmlChar *c = xmlNodeListGetString(doc, node->children, TRUE); gboolean b = FALSE; - if (!xmlStrcasecmp(c, (const xmlChar*) "true")) + if (c && !xmlStrcasecmp(c, (const xmlChar*) "true")) b = TRUE; - else if (!xmlStrcasecmp(c, (const xmlChar*) "yes")) + else if (c && !xmlStrcasecmp(c, (const xmlChar*) "yes")) b = TRUE; - else if (!xmlStrcasecmp(c, (const xmlChar*) "on")) + else if (c && !xmlStrcasecmp(c, (const xmlChar*) "on")) b = TRUE; xmlFree(c); return b; @@ -411,7 +412,7 @@ void parse_paths_startup() xdg_config_dir_paths = slist_path_add(xdg_config_dir_paths, g_strdup(xdg_config_home_path), (GSListFunc) g_slist_prepend); - + path = g_getenv("XDG_DATA_DIRS"); if (path && path[0] != '\0') /* not unset or empty */ xdg_data_dir_paths = split_paths(path);