From: Carl Worth Date: Wed, 27 Oct 2010 20:26:32 +0000 (-0700) Subject: notmuch config: Provide support for querying non-standard configuration values. X-Git-Tag: 0.4~57 X-Git-Url: https://git.notmuchmail.org/git?a=commitdiff_plain;h=49d90ede87e355b086618c647d19e696b9f7069a;p=notmuch notmuch config: Provide support for querying non-standard configuration values. We might as well be general here, and allow the "notmuch config" command to query any stored value from the configuration file, (whether or not the rest of the code actually knows anything about that value). --- diff --git a/notmuch-config.c b/notmuch-config.c index 2e81d1c2..188ecd71 100644 --- a/notmuch-config.c +++ b/notmuch-config.c @@ -566,7 +566,7 @@ int notmuch_config_command (void *ctx, int argc, char *argv[]) { notmuch_config_t *config; - const char *item; + char *item; if (argc != 2) { fprintf (stderr, "Error: notmuch config requires two arguments.\n"); @@ -606,9 +606,36 @@ notmuch_config_command (void *ctx, int argc, char *argv[]) for (i = 0; i < length; i++) printf ("%s\n", tags[i]); } else { - fprintf (stderr, "Unknown configuration item: %s\n", - argv[1]); - return 1; + char **value; + size_t i, length; + char *group, *period, *key; + + group = item; + + period = index (item, '.'); + if (period == NULL || *(period+1) == '\0') { + fprintf (stderr, + "Invalid configuration name: %s\n" + "(Should be of the form
.)\n", item); + return 1; + } + + *period = '\0'; + key = period + 1; + + value = g_key_file_get_string_list (config->key_file, + group, key, + &length, NULL); + if (value == NULL) { + fprintf (stderr, "Unknown configuration item: %s.%s\n", + group, key); + return 1; + } + + for (i = 0; i < length; i++) + printf ("%s\n", value[i]); + + free (value); } notmuch_config_close (config);