X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pager.c;h=a78f52201fdf8846c66b5d97591aaeba139c74e0;hp=8f8b5fef124436d2ed834d78e827b0d0434640a7;hb=34a88259726b0a7dacc3affe6f37214f893c9ce3;hpb=9c02039bb94c2fb846e0226c321c7dd79df455c4 diff --git a/pager.c b/pager.c index 8f8b5fe..a78f522 100644 --- a/pager.c +++ b/pager.c @@ -17,7 +17,6 @@ #include "mutt.h" #include "mutt_curses.h" -#include "mutt_regex.h" #include "keymap.h" #include "mutt_menu.h" #include "mapping.h" @@ -38,6 +37,7 @@ #include "lib/mem.h" #include "lib/intl.h" #include "lib/str.h" +#include "lib/rx.h" #include #include @@ -81,17 +81,6 @@ N_("Function not permitted in attach-message mode."); 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 - struct q_class_t { int length; int index; @@ -390,7 +379,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList, if (length <= q_list->length) { /* case 1: check the top level nodes */ - if (mutt_strncmp (qptr, q_list->prefix, length) == 0) { + if (safe_strncmp (qptr, q_list->prefix, length) == 0) { if (length == q_list->length) return q_list; /* same prefix: return the current class */ @@ -479,7 +468,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList, /* tmp != NULL means we already found a shorter prefix at case 1 */ if (tmp == NULL - && mutt_strncmp (qptr, q_list->prefix, q_list->length) == 0) { + && safe_strncmp (qptr, q_list->prefix, q_list->length) == 0) { /* ok, it's a subclass somewhere on this branch */ ptr = q_list; @@ -491,7 +480,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList, while (q_list) { if (length <= q_list->length) { - if (mutt_strncmp (tail_qptr, (q_list->prefix) + offset, tail_lng) + if (safe_strncmp (tail_qptr, (q_list->prefix) + offset, tail_lng) == 0) { /* same prefix: return the current class */ if (length == q_list->length) @@ -575,7 +564,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList, else { /* longer than the current prefix: try subclassing it */ if (tmp == NULL - && mutt_strncmp (tail_qptr, (q_list->prefix) + offset, + && safe_strncmp (tail_qptr, (q_list->prefix) + offset, q_list->length - offset) == 0) { /* still a subclass: go down one level */ ptr = q_list; @@ -672,7 +661,7 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last, lineInfo[n].type = MT_COLOR_HDEFAULT; color_line = ColorHdrList; while (color_line) { - if (REGEXEC (color_line->rx, buf) == 0) { + if (REGEXEC (&color_line->rx, buf) == 0) { lineInfo[n].type = MT_COLOR_HEADER; lineInfo[n].syntax[0].color = color_line->pair; break; @@ -681,17 +670,17 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last, } } } - else if (mutt_strncmp ("\033[0m", raw, 4) == 0) /* a little hack... */ + else if (safe_strncmp ("\033[0m", raw, 4) == 0) /* a little hack... */ lineInfo[n].type = MT_COLOR_NORMAL; #if 0 - else if (mutt_strncmp ("[-- ", buf, 4) == 0) + else if (safe_strncmp ("[-- ", buf, 4) == 0) lineInfo[n].type = MT_COLOR_ATTACHMENT; #else else if (check_attachment_marker ((char *) raw) == 0) lineInfo[n].type = MT_COLOR_ATTACHMENT; #endif - else if (mutt_strcmp ("-- \n", buf) == 0 - || mutt_strcmp ("-- \r\n", buf) == 0) { + else if (safe_strcmp ("-- \n", buf) == 0 + || safe_strcmp ("-- \r\n", buf) == 0) { i = n + 1; lineInfo[n].type = MT_COLOR_SIGNATURE; @@ -1630,9 +1619,12 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) _mutt_make_string (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), Context, extra->bdy->hdr, M_FORMAT_MAKEPRINT); } - move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), - option (OPTSTATUSONTOP) ? 0 : SidebarWidth); - mutt_paddstr (COLS - 10, IsHeader (extra) + if (option(OPTSTATUSONTOP)) { + move(0,0); + } + /*move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (InHelp?(LINES-2):(indexlen - 1))), + option (OPTSTATUSONTOP) ? 0 : SidebarWidth);*/ + mutt_paddstr (COLS - 10 - (option(OPTSTATUSONTOP)?0:SidebarWidth), IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner); addstr (" -- ("); @@ -2097,9 +2089,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) CHECK_MODE (IsHeader (extra)); CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Deletion")); mutt_set_flag (Context, extra->hdr, M_DELETE, 1); mutt_set_flag (Context, extra->hdr, M_PURGED, @@ -2118,9 +2108,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) CHECK_MODE (IsHeader (extra)); CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Deletion")); r = mutt_thread_set_flag (extra->hdr, M_DELETE, 1, ch == OP_DELETE_THREAD ? 0 : 1); @@ -2232,27 +2220,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) 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 + CHECK_MX_ACL (Context, ACL_WRITE, _("Flagging")); mutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged); redraw = REDRAW_STATUS | REDRAW_INDEX; @@ -2329,7 +2297,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) else followup_to = extra->hdr->env->followup_to; - if (!followup_to || mutt_strcasecmp (followup_to, "poster") || + if (!followup_to || safe_strcasecmp (followup_to, "poster") || query_quadoption (OPT_FOLLOWUPTOPOSTER, _("Reply by mail as poster prefers?")) != M_YES) { if (extra->ctx && extra->ctx->magic == M_NNTP @@ -2469,9 +2437,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) CHECK_MODE (IsHeader (extra)); CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_SEEN); -#endif + CHECK_MX_ACL (Context, ACL_SEEN, _("Toggling")); if (extra->hdr->read || extra->hdr->old) mutt_set_flag (Context, extra->hdr, M_NEW, 1); @@ -2490,9 +2456,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) CHECK_MODE (IsHeader (extra)); CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Undeletion")); mutt_set_flag (Context, extra->hdr, M_DELETE, 0); mutt_set_flag (Context, extra->hdr, M_PURGED, 0); @@ -2508,9 +2472,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) CHECK_MODE (IsHeader (extra)); CHECK_READONLY; -#ifdef USE_IMAP - CHECK_IMAP_ACL (IMAP_ACL_DELETE); -#endif + CHECK_MX_ACL (Context, ACL_DELETE, _("Undeletion")); r = mutt_thread_set_flag (extra->hdr, M_DELETE, 0, ch == OP_UNDELETE_THREAD ? 0 : 1)