From: Kevin McCarthy Date: Mon, 27 Mar 2017 18:39:42 +0000 (-0700) Subject: Fix (un)sidebar_whitelist to expand paths. X-Git-Tag: neomutt-20170414~22 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d1383dc3a3a789be0dd87b2b290d44012fa713c0;p=neomutt Fix (un)sidebar_whitelist to expand paths. Thanks to Arturo for reporting the issue. Closes #485 --- diff --git a/init.c b/init.c index e6bb38919..551d91898 100644 --- a/init.c +++ b/init.c @@ -1172,6 +1172,46 @@ static int parse_unlist (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err return 0; } +static int parse_path_list (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) +{ + char path[_POSIX_PATH_MAX]; + + do + { + mutt_extract_token (buf, s, 0); + strfcpy (path, buf->data, sizeof (path)); + mutt_expand_path (path, sizeof (path)); + add_to_list ((LIST **) data, path); + } + while (MoreArgs (s)); + + return 0; +} + +static int parse_path_unlist (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) +{ + char path[_POSIX_PATH_MAX]; + + do + { + mutt_extract_token (buf, s, 0); + /* + * Check for deletion of entire list + */ + if (mutt_strcmp (buf->data, "*") == 0) + { + mutt_free_list ((LIST **) data); + break; + } + strfcpy (path, buf->data, sizeof (path)); + mutt_expand_path (path, sizeof (path)); + remove_from_list ((LIST **) data, path); + } + while (MoreArgs (s)); + + return 0; +} + static int parse_lists (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) { group_context_t *gc = NULL; diff --git a/init.h b/init.h index 11ea140b0..ff50724c2 100644 --- a/init.h +++ b/init.h @@ -4392,6 +4392,8 @@ const struct mapping_t SortSidebarMethods[] = { static int parse_list (BUFFER *, BUFFER *, unsigned long, BUFFER *); static int parse_spam_list (BUFFER *, BUFFER *, unsigned long, BUFFER *); static int parse_unlist (BUFFER *, BUFFER *, unsigned long, BUFFER *); +static int parse_path_list (BUFFER *, BUFFER *, unsigned long, BUFFER *); +static int parse_path_unlist (BUFFER *, BUFFER *, unsigned long, BUFFER *); static int parse_group (BUFFER *, BUFFER *, unsigned long, BUFFER *); @@ -4496,8 +4498,8 @@ const struct command_t Commands[] = { { "set", parse_set, 0 }, { "setenv", parse_setenv, 0 }, #ifdef USE_SIDEBAR - { "sidebar_whitelist",parse_list, UL &SidebarWhitelist }, - { "unsidebar_whitelist",parse_unlist, UL &SidebarWhitelist }, + { "sidebar_whitelist",parse_path_list, UL &SidebarWhitelist }, + { "unsidebar_whitelist",parse_path_unlist, UL &SidebarWhitelist }, #endif { "source", parse_source, 0 }, { "spam", parse_spam_list, MUTT_SPAM },