[PATCH 1/2] config: Add 'config list' command

Peter Wang novalazy at gmail.com
Tue Mar 20 15:31:37 PDT 2012


Add a command to list all keys in a given configuration section.

One use is as follows: a MUA may prefer to store data in a central
notmuch configuration file so that the data is accessible across
different machines, e.g. an addressbook.  The list command helps
to implement features such as tab completion on the keys.
---
 notmuch-config.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/notmuch-config.c b/notmuch-config.c
index e9b2750..595cf54 100644
--- a/notmuch-config.c
+++ b/notmuch-config.c
@@ -799,6 +799,31 @@ notmuch_config_command_set (void *ctx, char *item, int argc, char *argv[])
     return ret;
 }
 
+static int
+notmuch_config_command_list (void *ctx, char *group)
+{
+    notmuch_config_t *config;
+    char **keys;
+    size_t i, length;
+
+    config = notmuch_config_open (ctx, NULL, NULL);
+    if (config == NULL)
+	return 1;
+
+    keys = g_key_file_get_keys (config->key_file,
+				group, &length, NULL);
+    if (keys != NULL) {
+	for (i = 0; i < length; i++)
+	    printf ("%s\n", keys[i]);
+
+	free (keys);
+    }
+
+    notmuch_config_close (config);
+
+    return 0;
+}
+
 int
 notmuch_config_command (void *ctx, int argc, char *argv[])
 {
@@ -813,6 +838,8 @@ notmuch_config_command (void *ctx, int argc, char *argv[])
 	return notmuch_config_command_get (ctx, argv[1]);
     else if (strcmp (argv[0], "set") == 0)
 	return notmuch_config_command_set (ctx, argv[1], argc - 2, argv + 2);
+    else if (strcmp (argv[0], "list") == 0)
+	return notmuch_config_command_list (ctx, argv[1]);
 
     fprintf (stderr, "Unrecognized argument for notmuch config: %s\n",
 	     argv[0]);
-- 
1.7.4.4



More information about the notmuch mailing list