X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=0f6be9a35348ad886e44f1e31ef1b9e8ba76c8c9;hb=5bf68f762b8fc87cf5583b645b948b4fe55f179f;hp=03fac801d5882135051baae91930dec0fda7975b;hpb=94f2b4a7b8b62ed031fe96da4d24b2d5dbb4aded;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index 03fac801..0f6be9a3 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -17,26 +17,21 @@ static GData *config = NULL; static GData *config_def = NULL; /* provided by cparse.l */ -void cparse_go(FILE *); +void cparse_go(char *filename, FILE *); void config_startup() { - /* test definition */ - ConfigDefEntry *def; - - def = config_def_new("test", Config_String); - config_def_set(def); - - def = config_def_new("test", Config_String); - config_def_set(def); + /* set up built in variables! and their default values! */ - def = config_def_new("testlist", Config_String); - config_def_add_value(def, "one"); - config_def_add_value(def, "two"); - config_def_set(def); + config_def_set(config_def_new("engine", Config_String)); + config_def_set(config_def_new("theme", Config_String)); + config_def_set(config_def_new("font", Config_String)); + config_def_set(config_def_new("font.shadow", Config_Integer)); + config_def_set(config_def_new("font.shadow.offset", Config_Integer)); + config_def_set(config_def_new("titlebar.layout", Config_String)); - g_datalist_foreach(&config_def, print_config, NULL); + /*g_datalist_foreach(&config_def, print_config, NULL);*/ } void config_shutdown() @@ -49,22 +44,26 @@ void config_parse() { FILE *file; char *path; + gboolean load = FALSE; - /* load the system wide rc file first */ - path = g_build_filename(RCDIR, "rc3", NULL); + /* load the user rc */ + path = g_build_filename(g_get_home_dir(), ".openbox", "rc3", NULL); if ((file = fopen(path, "r")) != NULL) { - cparse_go(file); + cparse_go(path, file); fclose(file); + load = TRUE; } g_free(path); - /* then load the user one which can override it */ - path = g_build_filename(g_get_home_dir(), ".openbox", "rc3", NULL); - if ((file = fopen(path, "r")) != NULL) { - cparse_go(file); - fclose(file); + if (!load) { + /* load the system wide rc */ + path = g_build_filename(RCDIR, "rc3", NULL); + if ((file = fopen(path, "r")) != NULL) { + /*cparse_go(path, file);*/ + fclose(file); + } + g_free(path); } - g_free(path); } gboolean config_set(char *name, ConfigValueType type, ConfigValue value) @@ -75,7 +74,7 @@ gboolean config_set(char *name, ConfigValueType type, ConfigValue value) name = g_ascii_strdown(name, -1); g_message("Setting %s", name); - g_datalist_foreach(&config_def, print_config, NULL); + /*g_datalist_foreach(&config_def, print_config, NULL);*/ def = g_datalist_get_data(&config_def, name); if (def == NULL) { @@ -195,8 +194,10 @@ gboolean config_def_add_value(ConfigDefEntry *entry, char *value) gboolean config_def_set(ConfigDefEntry *entry) { gboolean ret = FALSE; + ConfigDefEntry *def; - if (g_datalist_get_data(&config_def, entry->name)) { + if ((def = g_datalist_get_data(&config_def, entry->name))) { + g_assert(def != entry); /* adding it twice!? */ g_warning("Definition already set for config option '%s'. ", entry->name); config_def_free(entry);