#include "mutt_menu.h"
#include "mapping.h"
#include "sort.h"
+#include "recvattach.h"
#include "buffy.h"
#include "mx.h"
#include "sidebar.h"
+#include "thread.h"
#include "xterm.h"
#ifdef USE_POP
N_("Function not permitted in attach-message mode.");
static const char *No_visible = N_("No visible messages.");
+#define CHECK_IN_MAILBOX if (!Context) \
+ { \
+ mutt_flushinp (); \
+ mutt_error (_(No_mailbox_is_open)); \
+ break; \
+ }
+
#define CHECK_MSGCOUNT if (!Context) \
{ \
- mutt_flushinp (); \
+ mutt_flushinp (); \
mutt_error(_(No_mailbox_is_open)); \
break; \
} \
* they will be visible in the limited view */
if (Context->pattern) {
#define THIS_BODY Context->hdrs[j]->content
- if (oldcount || check == M_REOPENED) {
- for (j = (check == M_REOPENED) ? 0 : oldcount; j < Context->msgcount;
- j++) {
- if (mutt_pattern_exec
- (Context->limit_pattern, M_MATCH_FULL_ADDRESS, Context,
- Context->hdrs[j])) {
- Context->hdrs[j]->virtual = Context->vcount;
- Context->v2r[Context->vcount] = j;
- Context->hdrs[j]->limited = 1;
- Context->vcount++;
- Context->vsize +=
- THIS_BODY->length + THIS_BODY->offset - THIS_BODY->hdr_offset;
- }
+ for (j = (check == M_REOPENED) ? 0 : oldcount; j < Context->msgcount; j++) {
+ if (mutt_pattern_exec
+ (Context->limit_pattern, M_MATCH_FULL_ADDRESS, Context,
+ Context->hdrs[j])) {
+ Context->hdrs[j]->virtual = Context->vcount;
+ Context->v2r[Context->vcount] = j;
+ Context->hdrs[j]->limited = 1;
+ Context->vcount++;
+ Context->vsize +=
+ THIS_BODY->length + THIS_BODY->offset - THIS_BODY->hdr_offset;
}
}
#undef THIS_BODY
/* save the list of new messages */
if (oldcount && check != M_REOPENED && ((Sort & SORT_MASK) == SORT_THREADS)) {
save_new =
- (HEADER **) safe_malloc (sizeof (HEADER *) *
+ (HEADER **) mem_malloc (sizeof (HEADER *) *
(Context->msgcount - oldcount));
for (j = oldcount; j < Context->msgcount; j++)
save_new[j - oldcount] = Context->hdrs[j];
mutt_uncollapse_thread (Context, h);
}
}
- FREE (&save_new);
+ mem_free (&save_new);
mutt_set_virtual (Context);
}
}
if (menu->current < 0)
menu->current = ci_first_message ();
-
}
static void resort_index (MUTTMENU * menu)
if ((check = mx_check_mailbox (Context, &index_hint, 0)) < 0) {
if (!Context->path) {
/* fatal error occurred */
- FREE (&Context);
+ mem_free (&Context);
menu->redraw = REDRAW_FULL;
}
set_option (OPTSEARCHINVALID);
break;
case OP_MAIN_SHOW_LIMIT:
- CHECK_MSGCOUNT;
+ CHECK_IN_MAILBOX;
if (!Context->pattern)
mutt_message (_("No limit pattern is in effect."));
case OP_MAIN_LIMIT:
case OP_TOGGLE_READ:
- CHECK_MSGCOUNT;
+ CHECK_IN_MAILBOX;
menu->oldcurrent = (Context->vcount && menu->current >= 0
&& menu->current <
Context->vcount) ? CURHDR->index : -1;
snprintf (buf, sizeof (buf), "~A");
unset_option (OPTHIDEREAD);
}
- FREE (&Context->pattern);
+ mem_free (&Context->pattern);
Context->pattern = str_dup (buf);
}
if ((op == OP_TOGGLE_READ && mutt_pattern_func (M_LIMIT, NULL) == 0) ||
else
menu->current = 0;
menu->redraw = REDRAW_INDEX | REDRAW_STATUS;
- if ((Sort & SORT_MASK) == SORT_THREADS)
+ if (Context->msgcount && (Sort & SORT_MASK) == SORT_THREADS)
mutt_draw_tree (Context);
menu->redraw = REDRAW_FULL;
}
/* check for a fatal error, or all messages deleted */
if (!Context->path)
- FREE (&Context);
+ mem_free (&Context);
/* if we were in the pager, redisplay the message */
if (menu->menu == MENU_PAGER) {
cp = _("Open newsgroup in read-only mode");
else
cp = _("Open newsgroup");
- nntp_buffy (buf);
+ nntp_buffy (buf, sizeof (buf));
}
else
#endif
{
if (Context && Context->path)
strncpy (buf, Context->path, sizeof (buf));
- if (op != OP_SIDEBAR_OPEN)
- buffy_next (buf, sizeof (buf));
+ if (op != OP_SIDEBAR_OPEN)
+ buffy_next (buf, sizeof (buf));
}
if (op == OP_SIDEBAR_OPEN) {
menu->redraw = REDRAW_INDEX | REDRAW_STATUS;
break;
}
- FREE (&Context);
+ mem_free (&Context);
}
mutt_sleep (0);
{
if (Context) {
mx_fastclose_mailbox (Context);
- FREE (&Context);
+ mem_free (&Context);
}
done = 1;
}
case OP_TOGGLE_WRITE:
- CHECK_MSGCOUNT;
+ CHECK_IN_MAILBOX;
if (mx_toggle_write (Context) == 0)
menu->redraw |= REDRAW_STATUS;
break;
break;
case OP_BUFFY_LIST:
+ if (option (OPTFORCEBUFFYCHECK))
+ buffy_check (1);
buffy_list ();
menu->redraw = REDRAW_FULL;
break;