#ifdef USE_IMAP
case OP_BROWSER_TOGGLE_LSUB:
- ImapListSubscribed = !ImapListSubscribed;
+ bool_str_toggle(Config, "imap_list_subscribed", NULL);
mutt_unget_event(0, OP_CHECK_NEW);
break;
break;
case OP_ENTER_MASK:
-
+ {
mutt_str_strfcpy(buf, NONULL(Mask ? Mask->pattern : NULL), sizeof(buf));
- if (mutt_get_field(_("File Mask: "), buf, sizeof(buf), 0) == 0)
- {
- regex_t *rx = mutt_mem_malloc(sizeof(regex_t));
- char *s = buf;
- int not = 0, err;
+ if (mutt_get_field(_("File Mask: "), buf, sizeof(buf), 0) != 0)
+ break;
- buffy = 0;
- /* assume that the user wants to see everything */
- if (!buf[0])
- mutt_str_strfcpy(buf, ".", sizeof(buf));
- SKIPWS(s);
- if (*s == '!')
- {
- s++;
- SKIPWS(s);
- not = 1;
- }
+ buffy = 0;
+ /* assume that the user wants to see everything */
+ if (!buf[0])
+ mutt_str_strfcpy(buf, ".", sizeof(buf));
- err = REGCOMP(rx, s, REG_NOSUB);
- if (err != 0)
+ struct Buffer errmsg = { 0 };
+ int rc = cs_str_string_set(Config, "mask", buf, NULL);
+ if (CSR_RESULT(rc) != CSR_SUCCESS)
+ {
+ if (!mutt_buffer_is_empty(&errmsg))
{
- regerror(err, rx, buf, sizeof(buf));
- FREE(&rx);
- mutt_error("%s", buf);
+ mutt_error("%s", errmsg.data);
+ FREE(&errmsg.data);
}
- else
- {
- if (Mask && Mask->regex)
- {
- regfree(Mask->regex);
- FREE(&Mask->regex);
- }
- else
- {
- Mask = mutt_mem_calloc(1, sizeof(struct Regex));
- }
- mutt_str_replace(&Mask->pattern, buf);
- Mask->regex = rx;
- Mask->not = not;
+ break;
+ }
- destroy_state(&state);
+ destroy_state(&state);
#ifdef USE_IMAP
- if (state.imap_browse)
- {
- init_state(&state, NULL);
- state.imap_browse = true;
- imap_browse(LastDir, &state);
- browser_sort(&state);
- menu->data = state.entry;
- init_menu(&state, menu, title, sizeof(title), buffy);
- }
- else
+ if (state.imap_browse)
+ {
+ init_state(&state, NULL);
+ state.imap_browse = true;
+ imap_browse(LastDir, &state);
+ browser_sort(&state);
+ menu->data = state.entry;
+ init_menu(&state, menu, title, sizeof(title), buffy);
+ }
+ else
#endif
- if (examine_directory(menu, &state, LastDir, NULL) == 0)
- init_menu(&state, menu, title, sizeof(title), buffy);
- else
- {
- mutt_error(_("Error scanning directory."));
- goto bail;
- }
- kill_prefix = 0;
- if (state.entrylen == 0)
- {
- mutt_error(_("No files match the file mask"));
- break;
- }
- }
+ if (examine_directory(menu, &state, LastDir, NULL) == 0)
+ init_menu(&state, menu, title, sizeof(title), buffy);
+ else
+ {
+ mutt_error(_("Error scanning directory."));
+ goto bail;
+ }
+ kill_prefix = 0;
+ if (state.entrylen == 0)
+ {
+ mutt_error(_("No files match the file mask"));
+ break;
}
break;
+ }
case OP_SORT:
case OP_SORT_REVERSE:
browser_highlight_default(&state, menu);
menu->redraw = REDRAW_FULL;
}
- SortBrowser = sort;
+ cs_str_native_set(Config, "sort_browser", sort, NULL);
break;
}
if (OptNews)
{
struct FolderFile *ff = &state.entry[menu->current];
- int rc;
struct NntpData *nntp_data = NULL;
- rc = nntp_newsrc_parse(CurrentNewsSrv);
+ int rc = nntp_newsrc_parse(CurrentNewsSrv);
if (rc < 0)
break;
regex_t rx;
memset(&rx, 0, sizeof(rx));
char *s = buf;
- int rc, j = menu->current;
+ int j = menu->current;
if (i == OP_SUBSCRIBE_PATTERN || i == OP_UNSUBSCRIBE_PATTERN)
{
break;
}
- rc = nntp_newsrc_parse(nserv);
+ int rc = nntp_newsrc_parse(nserv);
if (rc < 0)
break;