X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=curs_main.c;h=4811ba4e3932c1b432c917acbbc362373934b393;hp=f2b6cb26d8beec80bfb1d4d98fc1e374e169745e;hb=f0d5ecf432102dc3e6430ceb2a6c692ee856f4d4;hpb=9c02039bb94c2fb846e0226c321c7dd79df455c4 diff --git a/curs_main.c b/curs_main.c index f2b6cb2..4811ba4 100644 --- a/curs_main.c +++ b/curs_main.c @@ -18,12 +18,14 @@ #include "mutt_curses.h" #include "mx.h" #include "mutt_menu.h" -#include "mailbox.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 #include "pop.h" @@ -42,6 +44,7 @@ #include "lib/mem.h" #include "lib/intl.h" #include "lib/str.h" +#include "lib/debug.h" #include #include @@ -86,17 +89,6 @@ static const char *No_visible = N_("No visible messages."); break; \ } -#ifdef USE_IMAP -/* the error message returned here could be better. */ -#define CHECK_IMAP_ACL(aclbit) if (Context->magic == M_IMAP) \ - if (mutt_bit_isset (((IMAP_DATA *)Context->data)->capabilities, ACL) \ - && !mutt_bit_isset(((IMAP_DATA *)Context->data)->rights,aclbit)){ \ - mutt_flushinp(); \ - mutt_error ("Operation not permitted by the IMAP ACL for this mailbox"); \ - break; \ - } -#endif - #define CHECK_ATTACH if(option(OPTATTACHMSG)) \ {\ mutt_flushinp (); \ @@ -111,22 +103,6 @@ static const char *No_visible = N_("No visible messages."); extern const char *ReleaseDate; extern size_t UngetCount; -static void set_xterm_title_bar (char *title) -{ - fputs ("\033]2;", stdout); - fputs (title, stdout); - fputs ("\007", stdout); - fflush (stdout); -} - -static void set_xterm_icon_name (char *name) -{ - fputs ("\033]1;", stdout); - fputs (name, stdout); - fputs ("\007", stdout); - fflush (stdout); -} - void index_make_entry (char *s, size_t l, MUTTMENU * menu, int num) { format_flag flag = @@ -314,7 +290,7 @@ static void update_index (MUTTMENU * menu, CONTEXT * ctx, int check, /* 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]; @@ -347,7 +323,7 @@ static void update_index (MUTTMENU * menu, CONTEXT * ctx, int check, mutt_uncollapse_thread (Context, h); } } - FREE (&save_new); + mem_free (&save_new); mutt_set_virtual (Context); } } @@ -365,7 +341,6 @@ static void update_index (MUTTMENU * menu, CONTEXT * ctx, int check, if (menu->current < 0) menu->current = ci_first_message (); - } static void resort_index (MUTTMENU * menu) @@ -456,7 +431,7 @@ int mutt_index_menu (void) IndexHelp); if (!attach_msg) { - mutt_buffy_check (1); /* force the buffy check after we enter the folder */ + buffy_check (1); /* force the buffy check after we enter the folder */ /* record folder we open to place sidebar indicator properly */ if (Context && Context->path) sidebar_set_current (Context->path); @@ -500,7 +475,7 @@ int mutt_index_menu (void) 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); @@ -541,12 +516,12 @@ int mutt_index_menu (void) if (!attach_msg) { /* check for new mail in the incoming folders */ oldcount = newcount; - if ((newcount = mutt_buffy_check (0)) != oldcount) { + if ((newcount = buffy_check (0)) != oldcount) { menu->redraw |= REDRAW_STATUS; menu->redraw |= REDRAW_SIDEBAR; } if (do_buffy_notify) { - if (mutt_buffy_notify () && option (OPTBEEPNEW)) + if (buffy_notify () && option (OPTBEEPNEW)) beep (); } else @@ -583,15 +558,17 @@ int mutt_index_menu (void) DrawFullLine = 0; CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES - 2); SETCOLOR (MT_COLOR_STATUS); + BKGDSET (MT_COLOR_STATUS); mutt_paddstr (COLS, buf); SETCOLOR (MT_COLOR_NORMAL); + BKGDSET (MT_COLOR_NORMAL); sidebar_set_buffystats (Context); menu->redraw &= ~REDRAW_STATUS; if (option (OPTXTERMSETTITLES)) { menu_status_line (buf, sizeof (buf), menu, NONULL (XtermTitle)); - set_xterm_title_bar (buf); + mutt_xterm_set_title (buf); menu_status_line (buf, sizeof (buf), menu, NONULL (XtermIcon)); - set_xterm_icon_name (buf); + mutt_xterm_set_icon (buf); } } @@ -603,14 +580,15 @@ int mutt_index_menu (void) if (option (OPTARROWCURSOR)) move (menu->current - menu->top + menu->offset, 2); + else if (option (OPTBRAILLEFRIENDLY)) + move (menu->current - menu->top + menu->offset, 0); else move (menu->current - menu->top + menu->offset, COLS - 1); mutt_refresh (); op = km_dokey (MENU_MAIN); - dprint (4, - (debugfile, "mutt_index_menu[%d]: Got op %d\n", __LINE__, op)); + debug_print (4, ("Got op %d\n", op)); #if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM) if (SigWinch) { @@ -921,9 +899,7 @@ int mutt_index_menu (void) CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Deletion")); CHECK_ATTACH; mutt_pattern_func (M_DELETE, _("Delete messages matching: ")); @@ -981,8 +957,8 @@ int mutt_index_menu (void) snprintf (buf, sizeof (buf), "~A"); unset_option (OPTHIDEREAD); } - FREE (&Context->pattern); - Context->pattern = safe_strdup (buf); + mem_free (&Context->pattern); + Context->pattern = str_dup (buf); } if ((op == OP_TOGGLE_READ && mutt_pattern_func (M_LIMIT, NULL) == 0) || mutt_pattern_func (M_LIMIT, _("Limit to messages matching: ")) == 0) @@ -1101,9 +1077,7 @@ int mutt_index_menu (void) CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Undeletion")); if (mutt_pattern_func (M_UNDELETE, _("Undelete messages matching: ")) == 0) @@ -1169,7 +1143,7 @@ int mutt_index_menu (void) /* 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) { @@ -1212,14 +1186,15 @@ int mutt_index_menu (void) 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)); - mutt_buffy (buf, sizeof (buf)); + if (op != OP_SIDEBAR_OPEN) + buffy_next (buf, sizeof (buf)); } if (op == OP_SIDEBAR_OPEN) { @@ -1241,23 +1216,22 @@ int mutt_index_menu (void) else #endif mutt_expand_path (buf, sizeof (buf)); - sidebar_set_current (buf); if (mx_get_magic (buf) <= 0) { mutt_error (_("%s is not a mailbox."), buf); break; } - mutt_str_replace (&CurrentFolder, buf); + str_replace (&CurrentFolder, buf); if (Context) { int check; #ifdef USE_COMPRESSED if (Context->compressinfo && Context->realpath) - mutt_str_replace (&LastFolder, Context->realpath); + str_replace (&LastFolder, Context->realpath); else #endif - mutt_str_replace (&LastFolder, Context->path); + str_replace (&LastFolder, Context->path); oldcount = Context ? Context->msgcount : 0; if ((check = mx_close_mailbox (Context, &index_hint)) != 0) { @@ -1268,7 +1242,7 @@ int mutt_index_menu (void) menu->redraw = REDRAW_INDEX | REDRAW_STATUS; break; } - FREE (&Context); + mem_free (&Context); } mutt_sleep (0); @@ -1286,9 +1260,10 @@ int mutt_index_menu (void) } else menu->current = 0; + sidebar_set_current (buf); #ifdef USE_NNTP - /* mutt_buffy_check() must be done with mail-reader mode! */ + /* buffy_check() must be done with mail-reader mode! */ menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_MAIN, (Context && (Context->magic == @@ -1296,7 +1271,7 @@ int mutt_index_menu (void) IndexHelp); #endif mutt_clear_error (); - mutt_buffy_check (1); /* force the buffy check after we have changed + buffy_check (1); /* force the buffy check after we have changed the folder */ menu->redraw = REDRAW_FULL; set_option (OPTSEARCHINVALID); @@ -1323,6 +1298,10 @@ int mutt_index_menu (void) menu->current = mutt_thread_next_unread (Context, CURHDR); } + if (option (OPTPGPAUTODEC) && + (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) + mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw); + if ((op = mutt_display_message (CURHDR)) == -1) { unset_option (OPTNEEDRESORT); break; @@ -1346,7 +1325,7 @@ int mutt_index_menu (void) { if (Context) { mx_fastclose_mailbox (Context); - FREE (&Context); + mem_free (&Context); } done = 1; } @@ -1649,27 +1628,7 @@ int mutt_index_menu (void) CHECK_VISIBLE; 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 + CHECK_MX_ACL (Context, ACL_WRITE, _("Flagging")); if (tag) { for (j = 0; j < Context->vcount; j++) { @@ -1702,9 +1661,7 @@ int mutt_index_menu (void) CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_SEEN); -#endif + CHECK_MX_ACL (Context, ACL_SEEN, _("Toggling")); if (tag) { for (j = 0; j < Context->vcount; j++) { @@ -1811,10 +1768,6 @@ int mutt_index_menu (void) CHECK_VISIBLE; CHECK_READONLY; -/* #ifdef USE_IMAP -CHECK_IMAP_ACL(IMAP_ACL_WRITE); -#endif */ - if (mutt_change_flag (tag ? NULL : CURHDR, (op == OP_MAIN_SET_FLAG)) == 0) { menu->redraw = REDRAW_STATUS; @@ -1948,9 +1901,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Deletion")); if (tag) { mutt_tag_set_flag (M_DELETE, 1); @@ -1990,9 +1941,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Deletion")); rc = mutt_thread_set_flag (CURHDR, M_DELETE, 1, op == OP_DELETE_THREAD ? 0 : 1); @@ -2043,27 +1992,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_READONLY; CHECK_ATTACH; -#ifdef USE_POP - if (Context->magic == M_POP) { - mutt_flushinp (); - mutt_error (_("Can't edit message on POP server.")); - - break; - } -#endif - -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_INSERT); -#endif - -#ifdef USE_NNTP - if (Context->magic == M_NNTP) { - mutt_flushinp (); - mutt_error (_("Can't edit message on newsserver.")); - - break; - } -#endif + CHECK_MX_ACL (Context, ACL_INSERT, _("Editing")); if (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) @@ -2078,6 +2007,10 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_MSGCOUNT; CHECK_VISIBLE; CHECK_ATTACH; + + if (option (OPTPGPAUTODEC) && + (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) + mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw); ci_send_message (SENDFORWARD, NULL, NULL, Context, tag ? NULL : CURHDR); menu->redraw = REDRAW_FULL; break; @@ -2092,6 +2025,11 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_MSGCOUNT; CHECK_VISIBLE; CHECK_ATTACH; + + if (option (OPTPGPAUTODEC) && + (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) + mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw); + ci_send_message (SENDREPLY | SENDGROUPREPLY, NULL, NULL, Context, tag ? NULL : CURHDR); menu->redraw = REDRAW_FULL; @@ -2102,6 +2040,11 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_ATTACH; CHECK_MSGCOUNT; CHECK_VISIBLE; + + if (option (OPTPGPAUTODEC) && + (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) + mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw); + ci_send_message (SENDREPLY | SENDLISTREPLY, NULL, NULL, Context, tag ? NULL : CURHDR); menu->redraw = REDRAW_FULL; @@ -2169,9 +2112,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_SEEN); -#endif + CHECK_MX_ACL (Context, ACL_SEEN, _("Marking as read")); rc = mutt_thread_set_flag (CURHDR, M_READ, 1, op == OP_MAIN_READ_THREAD ? 0 : 1); @@ -2225,7 +2166,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); sleep (2); } else if (op != OP_FOLLOWUP || !CURHDR->env->followup_to || - mutt_strcasecmp (CURHDR->env->followup_to, "poster") || + str_casecmp (CURHDR->env->followup_to, "poster") || query_quadoption (OPT_FOLLOWUPTOPOSTER, _("Reply by mail as poster prefers?")) != M_YES) { @@ -2257,6 +2198,11 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_ATTACH; CHECK_MSGCOUNT; CHECK_VISIBLE; + + if (option (OPTPGPAUTODEC) && + (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) + mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw); + ci_send_message (SENDREPLY, NULL, NULL, Context, tag ? NULL : CURHDR); menu->redraw = REDRAW_FULL; break; @@ -2292,9 +2238,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Undeletion")); if (tag) { mutt_tag_set_flag (M_DELETE, 0); @@ -2321,9 +2265,7 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); CHECK_VISIBLE; CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Undeletion")); rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0, op == OP_UNDELETE_THREAD ? 0 : 1) @@ -2349,7 +2291,9 @@ CHECK_IMAP_ACL(IMAP_ACL_WRITE); break; case OP_BUFFY_LIST: - mutt_buffy_list (); + if (option (OPTFORCEBUFFYCHECK)) + buffy_check (1); + buffy_list (); menu->redraw = REDRAW_FULL; break;