]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
make the openbox engine use the new config shit instead of the themerc shit.
[chaz/openbox] / openbox / config.c
index 03fac801d5882135051baae91930dec0fda7975b..0f6be9a35348ad886e44f1e31ef1b9e8ba76c8c9 100644 (file)
@@ -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);
This page took 0.023342 seconds and 4 git commands to generate.