- case OP_CHECK_TRADITIONAL:
- CHECK_MODE (IsHeader (extra));
- if (!(WithCrypto & APPLICATION_PGP))
- break;
- if (!(extra->hdr->security & PGP_TRADITIONAL_CHECKED))
- {
- ch = -1;
- rc = OP_CHECK_TRADITIONAL;
- }
- break;
-
- case OP_CREATE_ALIAS:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- if (IsMsgAttach (extra))
- mutt_create_alias (extra->bdy->hdr->env, NULL);
- else
- mutt_create_alias (extra->hdr->env, NULL);
- MAYBE_REDRAW (redraw);
- break;
-
- case OP_PURGE_MESSAGE:
- case OP_DELETE:
- CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
-
-#ifdef USE_IMAP
-CHECK_IMAP_ACL(IMAP_ACL_DELETE);
-#endif
-
- mutt_set_flag (Context, extra->hdr, M_DELETE, 1);
- mutt_set_flag (Context, extra->hdr, M_PURGED,
- ch != OP_PURGE_MESSAGE ? 0 : 1);
- if (option (OPTDELETEUNTAG))
- mutt_set_flag (Context, extra->hdr, M_TAG, 0);
- redraw = REDRAW_STATUS | REDRAW_INDEX;
- if (option (OPTRESOLVE))
- {
- ch = -1;
- rc = OP_MAIN_NEXT_UNDELETED;
- }
- break;
-
- case OP_DELETE_THREAD:
- case OP_DELETE_SUBTHREAD:
- CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
-
-#ifdef USE_IMAP
-CHECK_IMAP_ACL(IMAP_ACL_DELETE);
-#endif
-
- r = mutt_thread_set_flag (extra->hdr, M_DELETE, 1,
- ch == OP_DELETE_THREAD ? 0 : 1);
-
- if (r != -1)
- {
- if (option (OPTDELETEUNTAG))
- mutt_thread_set_flag (extra->hdr, M_TAG, 0,
- ch == OP_DELETE_THREAD ? 0 : 1);
- if (option (OPTRESOLVE))
- {
- rc = OP_MAIN_NEXT_UNDELETED;
- ch = -1;
- }
-
- if (!option (OPTRESOLVE) && PagerIndexLines)
- redraw = REDRAW_FULL;
- else
- redraw = REDRAW_STATUS | REDRAW_INDEX;
- }
- break;
-
- case OP_DISPLAY_ADDRESS:
- CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
- if (IsMsgAttach (extra))
- mutt_display_address (extra->bdy->hdr->env);
- else
- mutt_display_address (extra->hdr->env);
- break;
-
- case OP_ENTER_COMMAND:
- old_smart_wrap = option (OPTWRAP);
- old_markers = option (OPTMARKERS);
- old_PagerIndexLines = PagerIndexLines;
-
- CurrentMenu = MENU_PAGER;
- mutt_enter_command ();
-
- if (option (OPTNEEDRESORT))
- {
- unset_option (OPTNEEDRESORT);
- CHECK_MODE(IsHeader (extra));
- set_option (OPTNEEDRESORT);
- }
-
- if (old_PagerIndexLines != PagerIndexLines)
- {
- if (index)
- mutt_menuDestroy (&index);
- index = NULL;
- }
-
- if (option (OPTWRAP) != old_smart_wrap ||
- option (OPTMARKERS) != old_markers)
- {
- if (flags & M_PAGER_RETWINCH)
- {
- ch = -1;
- rc = OP_REFORMAT_WINCH;
- continue;
- }
-
- /* count the real lines above */
- j = 0;
- for (i = 0; i <= topline; i++)
- {
- if (!lineInfo[i].continuation)
- j++;
- }
-
- /* we need to restart the whole thing */
- for (i = 0; i < maxLine; i++)
- {
- lineInfo[i].offset = 0;
- lineInfo[i].type = -1;
- lineInfo[i].continuation = 0;
- lineInfo[i].chunks = 0;
- lineInfo[i].search_cnt = -1;
- lineInfo[i].quote = NULL;
-
- safe_realloc (&(lineInfo[i].syntax), sizeof (struct syntax_t));
- if (SearchCompiled && lineInfo[i].search)
- FREE (&(lineInfo[i].search));
- }
-
- if (SearchCompiled)
- {
- regfree (&SearchRE);
- SearchCompiled = 0;
- }
- SearchFlag = 0;
-
- /* try to keep the old position */
- topline = 0;
- lastLine = 0;
- while (j > 0 && display_line (fp, &last_pos, &lineInfo, topline,
- &lastLine, &maxLine,
- (has_types ? M_TYPES : 0),
- &QuoteList, &q_level, &force_redraw,
- &SearchRE) == 0)
- {
- redraw |= REDRAW_SIDEBAR;
- if (! lineInfo[topline].continuation)
- j--;
- if (j > 0)
- topline++;
- }
-
- ch = 0;
- }
-
- if (option (OPTFORCEREDRAWPAGER))
- redraw = REDRAW_FULL;
- unset_option (OPTFORCEREDRAWINDEX);
- unset_option (OPTFORCEREDRAWPAGER);
- break;
-
- case OP_FLAG_MESSAGE:
- CHECK_MODE(IsHeader (extra));
- CHECK_READONLY;
-
-#ifdef USE_POP
- if (Context->magic == M_POP)
- {
- mutt_flushinp ();
- mutt_error _("Can't change 'important' flag on POP server.");
- break;
- }
-#endif
-
-#ifdef USE_IMAP
-CHECK_IMAP_ACL(IMAP_ACL_WRITE);
-#endif
-
-#ifdef USE_NNTP
- if (Context->magic == M_NNTP)
- {
- mutt_flushinp ();
- mutt_error _("Can't change 'important' flag on NNTP server.");
- break;
- }
-#endif
-
- mutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged);
- redraw = REDRAW_STATUS | REDRAW_INDEX;
- if (option (OPTRESOLVE))
- {
- ch = -1;
- rc = OP_MAIN_NEXT_UNDELETED;
- }
- break;
-
- case OP_PIPE:
- CHECK_MODE(IsHeader (extra) || IsAttach (extra));
- if (IsAttach (extra))
- mutt_pipe_attachment_list (extra->fp, 0, extra->bdy, 0);
- else
- mutt_pipe_message (extra->hdr);
- MAYBE_REDRAW (redraw);
- break;
-
- case OP_PRINT:
- CHECK_MODE(IsHeader (extra) || IsAttach (extra));
- if (IsAttach (extra))
- mutt_print_attachment_list (extra->fp, 0, extra->bdy);