X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pager.c;h=4a935c3017da71a3889ca2f193d1d2706d202392;hp=691d055b307879c661f353db66e30784bcca2f86;hb=4dc555afd969ac7aed5c50db80ff9df17ed39e47;hpb=03e55f6e21bec2158e32c23af1917fe1f45c6b5e diff --git a/pager.c b/pager.c index 691d055..4a935c3 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" @@ -26,6 +25,7 @@ #include "attach.h" #include "mbyte.h" #include "sidebar.h" +#include "buffy.h" #include "mx.h" @@ -38,6 +38,8 @@ #include "lib/mem.h" #include "lib/intl.h" #include "lib/str.h" +#include "lib/rx.h" +#include "lib/debug.h" #include #include @@ -81,17 +83,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 +381,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 +470,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 +482,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 +566,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 +663,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 +672,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; @@ -925,7 +916,7 @@ fill_buffer (FILE * f, long *last_pos, long offset, unsigned char *buf, } else if (*p == '\033' && *(p + 1) == ']' && check_attachment_marker ((char *) p) == 0) { - dprint (2, (debugfile, "fill_buffer: Seen attachment marker.\n")); + debug_print (2, ("seen attachment marker.\n")); while (*p++ != '\a') /* skip pseudo-ANSI sequence */ ; } @@ -984,8 +975,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, k = mbrtowc (&wc, (char *) buf + ch, cnt - ch, &mbstate); if (k == -2 || k == -1) { - dprint (1, (debugfile, "%s:%d: mbrtowc returned %d; errno = %d.\n", - __FILE__, __LINE__, k, errno)); + debug_print (1, ("mbrtowc returned %d; errno = %d.\n", k, errno)); if (col + 4 > wrap_cols) break; col += 4; @@ -2100,9 +2090,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, @@ -2121,9 +2109,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); @@ -2235,27 +2221,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; @@ -2332,7 +2298,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 @@ -2472,9 +2438,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); @@ -2493,9 +2457,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); @@ -2511,9 +2473,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) @@ -2539,7 +2499,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) break; case OP_BUFFY_LIST: - mutt_buffy_list (); + buffy_list (); redraw |= REDRAW_SIDEBAR; break;