[PATCH v2 4/6] setup: move tag printing and parsing into separate functions
Austin Clements
amdragon at MIT.EDU
Sun Jan 22 21:07:37 PST 2012
Quoth Pieter Praet on Jan 23 at 5:22 am:
> From: Austin Clements <amdragon at MIT.EDU>
>
> * notmuch-setup.c (notmuch_setup_command):
> Break tag printing and response parsing out into separate functions
> called `print_tag_list' respectively `parse_tag_list', for reuse
> with the 'search.exclude_tags' option.
Since I'm revising this patch a little bit anyway, how about
setup: Create functions for tag list printing and parsing
This refactors the tag list printing and parsing currently used for
new.tags so that both can be reused for the new search.exclude_tags
option.
>
> ---
> notmuch-setup.c | 55 ++++++++++++++++++++++++++++++++++---------------------
> 1 files changed, 34 insertions(+), 21 deletions(-)
>
> diff --git a/notmuch-setup.c b/notmuch-setup.c
> index c3ea937..dcfa607 100644
> --- a/notmuch-setup.c
> +++ b/notmuch-setup.c
> @@ -87,6 +87,38 @@ welcome_message_post_setup (void)
> "have sufficient storage space available now.\n\n");
> }
>
> +static void
> +print_tag_list (const char **tags, size_t tags_len)
> +{
> + unsigned int i;
> + for (i = 0; i < tags_len; i++) {
> + if (i != 0)
> + printf (" ");
> + printf ("%s", tags[i]);
> + }
> +}
> +
> +static GPtrArray *
> +parse_tag_list (void *ctx, char *response)
> +{
> + GPtrArray *tags = g_ptr_array_new ();
> + char *tag = response;
> + char *space;
> +
> + while (tag && *tag) {
> + space = strchr (tag, ' ');
> + if (space)
> + g_ptr_array_add (tags, talloc_strndup (ctx, tag, space - tag));
> + else
> + g_ptr_array_add (tags, talloc_strdup (ctx, tag));
> + tag = space;
> + while (tag && *tag == ' ')
> + tag++;
> + }
> +
> + return tags;
> +}
> +
> int
> notmuch_setup_command (unused (void *ctx),
> unused (int argc), unused (char *argv[]))
> @@ -164,30 +196,11 @@ notmuch_setup_command (unused (void *ctx),
> new_tags = notmuch_config_get_new_tags (config, &new_tags_len);
>
> printf ("Tags to apply to all new messages (separated by spaces) [");
> -
> - for (i = 0; i < new_tags_len; i++) {
> - if (i != 0)
> - printf (" ");
> - printf ("%s", new_tags[i]);
> - }
> -
> + print_tag_list(new_tags, new_tags_len);
Missing space before paren. (Sorry, my fault.)
> prompt ("]: ");
>
> if (strlen (response)) {
> - GPtrArray *tags = g_ptr_array_new ();
> - char *tag = response;
> - char *space;
> -
> - while (tag && *tag) {
> - space = strchr (tag, ' ');
> - if (space)
> - g_ptr_array_add (tags, talloc_strndup (ctx, tag, space - tag));
> - else
> - g_ptr_array_add (tags, talloc_strdup (ctx, tag));
> - tag = space;
> - while (tag && *tag == ' ')
> - tag++;
> - }
> + GPtrArray *tags = parse_tag_list (ctx, response);
>
> notmuch_config_set_new_tags (config, (const char **) tags->pdata,
> tags->len);
More information about the notmuch
mailing list