On Thu, Apr 05 2012, Peter Wang <[email protected]> wrote: > Add a command to list all configuration items with their associated > values. > > 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 | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++--- > test/config | 1 - > 2 files changed, 62 insertions(+), 5 deletions(-) > > diff --git a/notmuch-config.c b/notmuch-config.c > index 85fc774..d5540ac 100644 > --- a/notmuch-config.c > +++ b/notmuch-config.c > @@ -799,20 +799,78 @@ notmuch_config_command_set (void *ctx, char *item, int > argc, char *argv[]) > return ret; > } > > +static int > +notmuch_config_command_list (void *ctx) > +{ > + notmuch_config_t *config; > + char **groups; > + size_t g, groups_length; > + > + config = notmuch_config_open (ctx, NULL, NULL); > + if (config == NULL) > + return 1; > + > + groups = g_key_file_get_groups (config->key_file, &groups_length); > + if (groups == NULL) > + return 1; > + > + for (g = 0; g < groups_length; g++) { > + char **keys; > + size_t k, keys_length; > + > + keys = g_key_file_get_keys (config->key_file, > + groups[g], &keys_length, NULL); > + if (keys == NULL) > + continue; > + > + for (k = 0; k < keys_length; k++) { > + char *value; > + > + value = g_key_file_get_string (config->key_file, > + groups[g], keys[k], NULL); > + if (value != NULL) { > + printf ("%s.%s=%s\n", groups[g], keys[k], value); > + free (value); > + } > + } > + > + g_strfreev (keys); > + } > + > + g_strfreev (groups); > + > + notmuch_config_close (config); > + > + return 0; > +} > + > int > notmuch_config_command (void *ctx, int argc, char *argv[]) > { > argc--; argv++; /* skip subcommand argument */ > > - if (argc < 2) { > - fprintf (stderr, "Error: notmuch config requires at least two > arguments.\n"); > + if (argc < 1) { > + fprintf (stderr, "Error: notmuch config requires at least one > argument.\n"); > return 1; > }
Hey, Peter. I would say everything up to here looks great.
> - if (strcmp (argv[0], "get") == 0)
> + if (strcmp (argv[0], "get") == 0) {
> + if (argc < 2) {
> + fprintf (stderr, "Error: notmuch config get requires at least "
> + "two arguments.\n");
> + return 1;
> + }
> return notmuch_config_command_get (ctx, argv[1]);
> - else if (strcmp (argv[0], "set") == 0)
> + } else if (strcmp (argv[0], "set") == 0) {
> + if (argc < 2) {
> + fprintf (stderr, "Error: notmuch config set requires at least "
> + "two arguments.\n");
> + return 1;
> + }
> return notmuch_config_command_set (ctx, argv[1], argc - 2, argv + 2);
But then these changes look unrelated to me. They do look good
intentioned, though. It's probably best to submit these changes in a
separate unrelated patch.
jamie.
pgppQGGBN9H3s.pgp
Description: PGP signature
_______________________________________________ notmuch mailing list [email protected] http://notmuchmail.org/mailman/listinfo/notmuch
