[PATCH 16/27] CLI/config: use notmuch_database_reopen

Subject: [PATCH 16/27] CLI/config: use notmuch_database_reopen

Date: Thu, 4 Mar 2021 09:01:28 -0400

To: notmuch@notmuchmail.org

Cc: David Bremner

From: David Bremner


This allows `notmuch config` to use the common configuration
information carried by the notmuch_database_t opened at the top level.
---
 notmuch-config.c         | 16 +++++++---------
 test/T750-user-header.sh |  3 ++-
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/notmuch-config.c b/notmuch-config.c
index a46c639e..2ad3f52e 100644
--- a/notmuch-config.c
+++ b/notmuch-config.c
@@ -693,9 +693,8 @@ notmuch_config_command_get (notmuch_database_t *notmuch, char *item)
 }
 
 static int
-_set_db_config (notmuch_config_t *config, const char *key, int argc, char **argv)
+_set_db_config (notmuch_database_t *notmuch, const char *key, int argc, char **argv)
 {
-    notmuch_database_t *notmuch;
     const char *val = "";
 
     if (argc > 1) {
@@ -708,12 +707,11 @@ _set_db_config (notmuch_config_t *config, const char *key, int argc, char **argv
 	val = argv[0];
     }
 
-    if (notmuch_database_open (notmuch_config_get_database_path (config),
-			       NOTMUCH_DATABASE_MODE_READ_WRITE, &notmuch))
+    if (print_status_database ("notmuch config", notmuch,
+			       notmuch_database_reopen (notmuch,
+							NOTMUCH_DATABASE_MODE_READ_WRITE)))
 	return EXIT_FAILURE;
 
-    /* XXX Handle UUID mismatch? */
-
     if (print_status_database ("notmuch config", notmuch,
 			       notmuch_database_set_config (notmuch, key, val)))
 	return EXIT_FAILURE;
@@ -726,7 +724,7 @@ _set_db_config (notmuch_config_t *config, const char *key, int argc, char **argv
 }
 
 static int
-notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char *argv[])
+notmuch_config_command_set (notmuch_config_t *config, notmuch_database_t *notmuch, char *item, int argc, char *argv[])
 {
     char *group, *key;
     config_key_info_t *key_info;
@@ -741,7 +739,7 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char
 	return 1;
 
     if (key_info && key_info->in_db) {
-	return _set_db_config (config, item, argc, argv);
+	return _set_db_config (notmuch, item, argc, argv);
     }
 
     if (_item_split (item, &group, &key))
@@ -838,7 +836,7 @@ notmuch_config_command (notmuch_config_t *config, notmuch_database_t *notmuch, i
 		     "one argument.\n");
 	    return EXIT_FAILURE;
 	}
-	ret = notmuch_config_command_set (config, argv[1], argc - 2, argv + 2);
+	ret = notmuch_config_command_set (config, notmuch, argv[1], argc - 2, argv + 2);
     } else if (strcmp (argv[0], "list") == 0) {
 	ret = notmuch_config_command_list (notmuch);
     } else {
diff --git a/test/T750-user-header.sh b/test/T750-user-header.sh
index b19db571..586788b3 100755
--- a/test/T750-user-header.sh
+++ b/test/T750-user-header.sh
@@ -5,7 +5,8 @@ test_description='indexing user specified headers'
 test_begin_subtest "error adding user header before initializing DB"
 notmuch config set index.header.List List-Id 2>&1 | notmuch_dir_sanitize > OUTPUT
 cat <<EOF > EXPECTED
-Error: Cannot open database at MAIL_DIR/.notmuch: No such file or directory.
+notmuch config: Illegal argument for function
+Cannot reopen closed or nonexistent database
 EOF
 test_expect_equal_file EXPECTED OUTPUT
 
-- 
2.30.1
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: