]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-config.c
test: standardize argument order to test_expect_equal_file
[notmuch] / notmuch-config.c
index cdb4088d1535e1d04a54f6ebb877f8812dfb755f..e4aaef610173661b83491cfec95547f82703ad3d 100644 (file)
@@ -215,24 +215,23 @@ get_config_from_file (notmuch_config_t *config, notmuch_bool_t create_new)
 
     FILE *fp = fopen(config->filename, "r");
     if (fp == NULL) {
-       /* If create_new is true, then the caller is prepared for a
-        * default configuration file in the case of FILE NOT FOUND.
-        */
-       if (create_new) {
-           config->is_new = TRUE;
-           ret = TRUE;
-           goto out;
-       } else if (errno == ENOENT) {
-           fprintf (stderr, "Configuration file %s not found.\n"
-                    "Try running 'notmuch setup' to create a configuration.\n",
-                    config->filename);
-           goto out;
+       if (errno == ENOENT) {
+           /* If create_new is true, then the caller is prepared for a
+            * default configuration file in the case of FILE NOT FOUND.
+            */
+           if (create_new) {
+               config->is_new = TRUE;
+               ret = TRUE;
+           } else {
+               fprintf (stderr, "Configuration file %s not found.\n"
+                        "Try running 'notmuch setup' to create a configuration.\n",
+                        config->filename);
+           }
        } else {
-           fprintf (stderr, "Error opening config file '%s': %s\n"
-                    "Try running 'notmuch setup' to create a configuration.\n",
+           fprintf (stderr, "Error opening config file '%s': %s\n",
                     config->filename, strerror(errno));
-           goto out;
        }
+       goto out;
     }
 
     config_str = talloc_zero_array (config, char, config_bufsize);
@@ -322,7 +321,7 @@ out:
 notmuch_config_t *
 notmuch_config_open (void *ctx,
                     const char *filename,
-                    notmuch_bool_t create_new)
+                    notmuch_config_mode_t config_mode)
 {
     GError *error = NULL;
     size_t tmp;
@@ -334,7 +333,7 @@ notmuch_config_open (void *ctx,
     int file_had_search_group;
     int file_had_crypto_group;
 
-    notmuch_config_t *config = talloc (ctx, notmuch_config_t);
+    notmuch_config_t *config = talloc_zero (ctx, notmuch_config_t);
     if (config == NULL) {
        fprintf (stderr, "Out of memory.\n");
        return NULL;
@@ -342,6 +341,9 @@ notmuch_config_open (void *ctx,
     
     talloc_set_destructor (config, notmuch_config_destructor);
 
+    /* non-zero defaults */
+    config->maildir_synchronize_flags = TRUE;
+
     if (filename) {
        config->filename = talloc_strdup (config, filename);
     } else if ((notmuch_config_env = getenv ("NOTMUCH_CONFIG"))) {
@@ -353,24 +355,13 @@ notmuch_config_open (void *ctx,
 
     config->key_file = g_key_file_new ();
 
-    config->is_new = FALSE;
-    config->database_path = NULL;
-    config->user_name = NULL;
-    config->user_primary_email = NULL;
-    config->user_other_email = NULL;
-    config->user_other_email_length = 0;
-    config->new_tags = NULL;
-    config->new_tags_length = 0;
-    config->new_ignore = NULL;
-    config->new_ignore_length = 0;
-    config->maildir_synchronize_flags = TRUE;
-    config->search_exclude_tags = NULL;
-    config->search_exclude_tags_length = 0;
-    config->crypto_gpg_path = NULL;
+    if (config_mode & NOTMUCH_CONFIG_OPEN) {
+       notmuch_bool_t create_new = (config_mode & NOTMUCH_CONFIG_CREATE) != 0;
 
-    if (! get_config_from_file (config, create_new)) {
-       talloc_free (config);
-       return NULL;
+       if (! get_config_from_file (config, create_new)) {
+           talloc_free (config);
+           return NULL;
+       }
     }
 
     /* Whenever we know of configuration sections that don't appear in
@@ -643,11 +634,11 @@ _config_get_list (notmuch_config_t *config,
 
 static void
 _config_set_list (notmuch_config_t *config,
-                 const char *group, const char *name,
+                 const char *group, const char *key,
                  const char *list[],
                  size_t length, const char ***config_var )
 {
-    g_key_file_set_string_list (config->key_file, group, name, list, length);
+    g_key_file_set_string_list (config->key_file, group, key, list, length);
 
     /* drop the cached value */
     talloc_free (*config_var);