aboutsummaryrefslogtreecommitdiff
path: root/notmuch-config.c
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2021-02-27 09:22:32 -0400
committerDavid Bremner <david@tethera.net>2021-04-06 21:32:36 -0300
commitec4b7efbe4bd6d50bd6046bac5f7ef4ceaa30154 (patch)
treeeddfc4417ad06ddb22498aeabaef37c15810781a /notmuch-config.c
parent77d4b26d3e374afac0012148a8ac0a08158406f1 (diff)
CLI/config: remove calls to notmuch_config_open from top level
This will allow simplifying the subcommand interface. Change the internal API to notmuch_config_open to not tie it to the implementation of subcommands in notmuch.c. It also fixes a previously broken test, since notmuch_config_open does not understand the notion of the empty string as a config file name.
Diffstat (limited to 'notmuch-config.c')
-rw-r--r--notmuch-config.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/notmuch-config.c b/notmuch-config.c
index c4283576..7aac8e94 100644
--- a/notmuch-config.c
+++ b/notmuch-config.c
@@ -248,7 +248,7 @@ get_config_from_file (notmuch_config_t *config, bool create_new)
notmuch_config_t *
notmuch_config_open (notmuch_database_t *notmuch,
const char *filename,
- notmuch_command_mode_t config_mode)
+ bool create)
{
char *notmuch_config_env = NULL;
@@ -272,13 +272,9 @@ notmuch_config_open (notmuch_database_t *notmuch,
config->key_file = g_key_file_new ();
- if (config_mode & NOTMUCH_COMMAND_CONFIG_OPEN) {
- bool create_new = (config_mode & NOTMUCH_COMMAND_CONFIG_CREATE) != 0;
-
- if (! get_config_from_file (config, create_new)) {
- talloc_free (config);
- return NULL;
- }
+ if (! get_config_from_file (config, create)) {
+ talloc_free (config);
+ return NULL;
}
if (config->is_new)
@@ -582,13 +578,14 @@ _set_db_config (notmuch_database_t *notmuch, const char *key, int argc, char **a
}
static int
-notmuch_config_command_set (notmuch_config_t *config, notmuch_database_t *notmuch,
+notmuch_config_command_set (unused(notmuch_config_t *config), notmuch_database_t *notmuch,
int argc, char *argv[])
{
char *group, *key;
config_key_info_t *key_info;
+ notmuch_config_t *config;
bool update_database = false;
- int opt_index;
+ int opt_index, ret;
char *item;
notmuch_opt_desc_t options[] = {
@@ -629,6 +626,11 @@ notmuch_config_command_set (notmuch_config_t *config, notmuch_database_t *notmuc
if (_item_split (item, &group, &key))
return 1;
+ config = notmuch_config_open (notmuch,
+ notmuch_config_path (notmuch), false);
+ if (! config)
+ return 1;
+
/* With only the name of an item, we clear it from the
* configuration file.
*
@@ -649,7 +651,11 @@ notmuch_config_command_set (notmuch_config_t *config, notmuch_database_t *notmuc
break;
}
- return notmuch_config_save (config);
+ ret = notmuch_config_save (config);
+
+ notmuch_config_close (config);
+
+ return ret;
}
static