]> git.notmuchmail.org Git - notmuch/blobdiff - lib/config.cc
lib: remove "path" from notmuch struct
[notmuch] / lib / config.cc
index e6b660a9e65c163307aa4c28c7d2246e2d2b5b86..483a02efac8c3287df6fae66f83211e92da7bb9a 100644 (file)
@@ -338,7 +338,7 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
                                GKeyFile *file)
 {
     notmuch_status_t status = NOTMUCH_STATUS_SUCCESS;
-    gchar **groups, **keys, *val;
+    gchar **groups = NULL, **keys, *val;
 
     if (notmuch->config == NULL)
        notmuch->config = _notmuch_string_map_create (notmuch);
@@ -348,22 +348,29 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
        goto DONE;
     }
 
-    for (groups = g_key_file_get_groups (file, NULL); *groups; groups++) {
-       for (keys = g_key_file_get_keys (file, *groups, NULL, NULL); *keys; keys++) {
-           char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *groups,  *keys);
-           val = g_key_file_get_value (file, *groups, *keys, NULL);
+    groups = g_key_file_get_groups (file, NULL);
+    for (gchar **grp = groups; *grp; grp++) {
+       keys = g_key_file_get_keys (file, *grp, NULL, NULL);
+       for (gchar **keys_p = keys; *keys_p; keys_p++) {
+           char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp,  *keys_p);
+           val = g_key_file_get_value (file, *grp, *keys_p, NULL);
            if (! val) {
                status = NOTMUCH_STATUS_FILE_ERROR;
                goto DONE;
            }
            _notmuch_string_map_set (notmuch->config, absolute_key, val);
+           g_free (val);
            talloc_free (absolute_key);
            if (status)
                goto DONE;
        }
+       g_strfreev (keys);
     }
 
   DONE:
+    if (groups)
+       g_strfreev (groups);
+
     return status;
 }
 
@@ -489,5 +496,8 @@ notmuch_config_set (notmuch_database_t *notmuch, notmuch_config_key_t key, const
 void
 _notmuch_config_cache (notmuch_database_t *notmuch, notmuch_config_key_t key, const char *val)
 {
+    if (notmuch->config == NULL)
+       notmuch->config = _notmuch_string_map_create (notmuch);
+
     _notmuch_string_map_set (notmuch->config, _notmuch_config_key_to_string (key), val);
 }