mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 10:58:10 +01:00
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.
This commit is contained in:
parent
ba33a15ec3
commit
ed6f941c2a
1 changed files with 34 additions and 21 deletions
|
@ -87,6 +87,38 @@ welcome_message_post_setup (void)
|
||||||
"have sufficient storage space available now.\n\n");
|
"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
|
int
|
||||||
notmuch_setup_command (unused (void *ctx),
|
notmuch_setup_command (unused (void *ctx),
|
||||||
unused (int argc), unused (char *argv[]))
|
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);
|
new_tags = notmuch_config_get_new_tags (config, &new_tags_len);
|
||||||
|
|
||||||
printf ("Tags to apply to all new messages (separated by spaces) [");
|
printf ("Tags to apply to all new messages (separated by spaces) [");
|
||||||
|
print_tag_list (new_tags, new_tags_len);
|
||||||
for (i = 0; i < new_tags_len; i++) {
|
|
||||||
if (i != 0)
|
|
||||||
printf (" ");
|
|
||||||
printf ("%s", new_tags[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt ("]: ");
|
prompt ("]: ");
|
||||||
|
|
||||||
if (strlen (response)) {
|
if (strlen (response)) {
|
||||||
GPtrArray *tags = g_ptr_array_new ();
|
GPtrArray *tags = parse_tag_list (ctx, response);
|
||||||
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++;
|
|
||||||
}
|
|
||||||
|
|
||||||
notmuch_config_set_new_tags (config, (const char **) tags->pdata,
|
notmuch_config_set_new_tags (config, (const char **) tags->pdata,
|
||||||
tags->len);
|
tags->len);
|
||||||
|
|
Loading…
Reference in a new issue