CLI/config: use notmuch_database_reopen

This allows `notmuch config` to use the common configuration
information carried by the notmuch_database_t opened at the top level.
This commit is contained in:
David Bremner 2021-02-14 13:46:13 -04:00
parent b76da87d29
commit f055e94562
2 changed files with 10 additions and 10 deletions

View file

@ -696,9 +696,8 @@ notmuch_config_command_get (notmuch_database_t *notmuch, char *item)
} }
static int 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 = ""; const char *val = "";
if (argc > 1) { if (argc > 1) {
@ -711,12 +710,11 @@ _set_db_config (notmuch_config_t *config, const char *key, int argc, char **argv
val = argv[0]; val = argv[0];
} }
if (notmuch_database_open (notmuch_config_get_database_path (config), if (print_status_database ("notmuch config", notmuch,
NOTMUCH_DATABASE_MODE_READ_WRITE, &notmuch)) notmuch_database_reopen (notmuch,
NOTMUCH_DATABASE_MODE_READ_WRITE)))
return EXIT_FAILURE; return EXIT_FAILURE;
/* XXX Handle UUID mismatch? */
if (print_status_database ("notmuch config", notmuch, if (print_status_database ("notmuch config", notmuch,
notmuch_database_set_config (notmuch, key, val))) notmuch_database_set_config (notmuch, key, val)))
return EXIT_FAILURE; return EXIT_FAILURE;
@ -729,7 +727,8 @@ _set_db_config (notmuch_config_t *config, const char *key, int argc, char **argv
} }
static int 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; char *group, *key;
config_key_info_t *key_info; config_key_info_t *key_info;
@ -744,7 +743,7 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char
return 1; return 1;
if (key_info && key_info->in_db) { 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)) if (_item_split (item, &group, &key))
@ -842,7 +841,7 @@ notmuch_config_command (notmuch_config_t *config, notmuch_database_t *notmuch,
"one argument.\n"); "one argument.\n");
return EXIT_FAILURE; 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) { } else if (strcmp (argv[0], "list") == 0) {
ret = notmuch_config_command_list (notmuch); ret = notmuch_config_command_list (notmuch);
} else { } else {

View file

@ -5,7 +5,8 @@ test_description='indexing user specified headers'
test_begin_subtest "error adding user header before initializing DB" test_begin_subtest "error adding user header before initializing DB"
notmuch config set index.header.List List-Id 2>&1 | notmuch_dir_sanitize > OUTPUT notmuch config set index.header.List List-Id 2>&1 | notmuch_dir_sanitize > OUTPUT
cat <<EOF > EXPECTED 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 EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT