X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=parser%2Fparse.c;h=8c2d012eaeb511e089c8f1fa01fb2a4f2268cc83;hb=758ef2cafa559e7941d82364956e8afb33d1ad2f;hp=167456509e63a44e983ba1660dfb0f4669700ef4;hpb=24c0d618471276fd514cd666bc7067d30be8d0ca;p=chaz%2Fopenbox diff --git a/parser/parse.c b/parser/parse.c index 16745650..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,11 +412,14 @@ 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); else { + xdg_data_dir_paths = slist_path_add(xdg_data_dir_paths, + g_strdup(DATADIR), + (GSListFunc) g_slist_append); xdg_data_dir_paths = slist_path_add(xdg_data_dir_paths, g_build_filename (G_DIR_SEPARATOR_S, @@ -426,9 +430,6 @@ void parse_paths_startup() (G_DIR_SEPARATOR_S, "usr", "share", NULL), (GSListFunc) g_slist_append); - xdg_data_dir_paths = slist_path_add(xdg_data_dir_paths, - g_strdup(DATADIR), - (GSListFunc) g_slist_append); } xdg_data_dir_paths = slist_path_add(xdg_data_dir_paths, g_strdup(xdg_data_home_path),