]> git.notmuchmail.org Git - notmuch/blobdiff - lib/open.cc
lib/config: don't overwrite database.path if the caller passed it
[notmuch] / lib / open.cc
index 6fa00a843b9201d5bdf56dd15b3139e7e5adb8ec..a942383b84b8cda800ae8006034555e267d11119 100644 (file)
@@ -247,7 +247,7 @@ _choose_database_path (void *ctx,
 }
 
 static notmuch_database_t *
-_alloc_notmuch ()
+_alloc_notmuch (const char *database_path, const char *config_path, const char *profile)
 {
     notmuch_database_t *notmuch;
 
@@ -263,6 +263,15 @@ _alloc_notmuch ()
     notmuch->transaction_count = 0;
     notmuch->transaction_threshold = 0;
     notmuch->view = 1;
+
+    notmuch->params = NOTMUCH_PARAM_NONE;
+    if (database_path)
+       notmuch->params |= NOTMUCH_PARAM_DATABASE;
+    if (config_path)
+       notmuch->params |= NOTMUCH_PARAM_CONFIG;
+    if (profile)
+       notmuch->params |= NOTMUCH_PARAM_PROFILE;
+
     return notmuch;
 }
 
@@ -510,7 +519,7 @@ notmuch_database_open_with_config (const char *database_path,
 
     _notmuch_init ();
 
-    notmuch = _alloc_notmuch ();
+    notmuch = _alloc_notmuch (database_path, config_path, profile);
     if (! notmuch) {
        status = NOTMUCH_STATUS_OUT_OF_MEMORY;
        goto DONE;
@@ -610,7 +619,7 @@ notmuch_database_create_with_config (const char *database_path,
 
     _notmuch_init ();
 
-    notmuch = _alloc_notmuch ();
+    notmuch = _alloc_notmuch (database_path, config_path, profile);
     if (! notmuch) {
        status = NOTMUCH_STATUS_OUT_OF_MEMORY;
        goto DONE;
@@ -812,7 +821,7 @@ notmuch_database_load_config (const char *database_path,
 
     _notmuch_init ();
 
-    notmuch = _alloc_notmuch ();
+    notmuch = _alloc_notmuch (database_path, config_path, profile);
     if (! notmuch) {
        status = NOTMUCH_STATUS_OUT_OF_MEMORY;
        goto DONE;
@@ -871,6 +880,13 @@ notmuch_database_load_config (const char *database_path,
     if (status_string)
        *status_string = message;
 
+    if (status &&
+       status != NOTMUCH_STATUS_NO_DATABASE
+       && status != NOTMUCH_STATUS_NO_CONFIG) {
+       notmuch_database_destroy (notmuch);
+       notmuch = NULL;
+    }
+
     if (database)
        *database = notmuch;