g_free(c);
}
-ObParseInst* parse_startup()
+ObParseInst* parse_startup(void)
{
ObParseInst *i = g_new(ObParseInst, 1);
i->callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
g_hash_table_insert(i->callbacks, c->tag, c);
}
-gboolean parse_load_rc(const gchar *type, xmlDocPtr *doc, xmlNodePtr *root)
+gboolean parse_load_rc(const gchar *file, xmlDocPtr *doc, xmlNodePtr *root)
{
GSList *it;
gboolean r = FALSE;
- gchar *fname;
- if (type == NULL)
- fname = g_strdup("rc.xml");
- else
- fname = g_strdup_printf("rc-%s.xml", type);
+ if (file && parse_load(file, "openbox_config", doc, root))
+ return TRUE;
for (it = xdg_config_dir_paths; !r && it; it = g_slist_next(it)) {
gchar *path;
- path = g_build_filename(it->data, "openbox", fname, NULL);
+ path = g_build_filename(it->data, "openbox", "rc.xml", NULL);
r = parse_load(path, "openbox_config", doc, root);
g_free(path);
}
- g_free(fname);
return r;
}
xmlDocPtr *doc, xmlNodePtr *root)
{
struct stat s;
+
if (stat(path, &s) < 0)
return FALSE;
{
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;
return list;
}
-void parse_paths_startup()
+void parse_paths_startup(void)
{
const gchar *path;
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);
(GSListFunc) g_slist_prepend);
}
-void parse_paths_shutdown()
+void parse_paths_shutdown(void)
{
GSList *it;
return ret;
}
-const gchar* parse_xdg_config_home_path()
+const gchar* parse_xdg_config_home_path(void)
{
return xdg_config_home_path;
}
-const gchar* parse_xdg_data_home_path()
+const gchar* parse_xdg_data_home_path(void)
{
return xdg_data_home_path;
}
-GSList* parse_xdg_config_dir_paths()
+GSList* parse_xdg_config_dir_paths(void)
{
return xdg_config_dir_paths;
}
-GSList* parse_xdg_data_dir_paths()
+GSList* parse_xdg_data_dir_paths(void)
{
return xdg_data_dir_paths;
}