Use p_new instead of xmalloc()
[apps/madmutt.git] / pager.c
diff --git a/pager.c b/pager.c
index 9f3dc2a..a25490c 100644 (file)
--- a/pager.c
+++ b/pager.c
  * please see the file GPL in the top level source directory.
  */
 
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
+#include <lib-crypt/crypt.h>
 
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/mapping.h>
+#include <lib-ui/curses.h>
+#include <lib-ui/enter.h>
+#include <lib-ui/menu.h>
+#include <lib-ui/sidebar.h>
+#include <lib-mx/mx.h>
 
 #include "mutt.h"
-#include "enter.h"
-#include "mutt_curses.h"
+#include "alias.h"
 #include "keymap.h"
-#include "mutt_menu.h"
 #include "sort.h"
 #include "pager.h"
 #include "attach.h"
 #include "recvattach.h"
-#include "mbyte.h"
-#include "sidebar.h"
+#include "charset.h"
 #include "buffy.h"
 
-#include "mx.h"
-
 #include <imap/imap_private.h>
 
-#include <lib-crypt/crypt.h>
-
-#include "lib/rx.h"
-#include "lib/debug.h"
-
-#include <wchar.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
 #define ISHEADER(x) ((x) == MT_COLOR_HEADER || (x) == MT_COLOR_HDEFAULT)
 
-#define IsAttach(x) (x && (x)->bdy)
-#define IsRecvAttach(x) (x && (x)->bdy && (x)->fp)
-#define IsSendAttach(x) (x && (x)->bdy && !(x)->fp)
-#define IsMsgAttach(x) (x && (x)->fp && (x)->bdy && (x)->bdy->hdr)
-#define IsHeader(x) (x && (x)->hdr && !(x)->bdy)
-#define SW              (option(OPTMBOXPANE)?SidebarWidth:0)
-
-static const char *Not_available_in_this_menu =
-N_("Not available in this menu.");
-static const char *Mailbox_is_read_only = N_("Mailbox is read-only.");
-static const char *Function_not_permitted_in_attach_message_mode =
-N_("Function not permitted in attach-message mode.");
+#define IsAttach(x)      (x && (x)->bdy)
+#define IsRecvAttach(x)  (x && (x)->bdy && (x)->fp)
+#define IsSendAttach(x)  (x && (x)->bdy && !(x)->fp)
+#define IsMsgAttach(x)   (x && (x)->fp && (x)->bdy && (x)->bdy->hdr)
+#define IsHeader(x)      (x && (x)->hdr && !(x)->bdy)
+#define SW               (option(OPTMBOXPANE)?SidebarWidth:0)
 
 /* hack to return to position when returning from index to same message */
 static int TopLine = 0;
 static HEADER *OldHdr = NULL;
 
-#define CHECK_MODE(x)  if (!(x)) \
-                       { \
-                               mutt_flushinp (); \
-                               mutt_error _(Not_available_in_this_menu); \
-                               break; \
-                       }
-
-#define CHECK_READONLY if (Context->readonly) \
-                       { \
-                               mutt_flushinp (); \
-                               mutt_error _(Mailbox_is_read_only);     \
-                               break; \
-                       }
-
-#define CHECK_ATTACH if(option(OPTATTACHMSG)) \
-                    {\
-                       mutt_flushinp (); \
-                       mutt_error _(Function_not_permitted_in_attach_message_mode); \
-                       break; \
-                    }
+#define CHECK_MODE(x) \
+    if (!(x)) {                                         \
+        mutt_flushinp();                                \
+        mutt_error _("Not available in this menu.");    \
+        break;                                          \
+    }
+
+#define CHECK_READONLY \
+    if (Context->readonly) {                            \
+        mutt_flushinp();                                \
+        mutt_error _("Mailbox is read-only.");          \
+        break;                                          \
+    }
+
+#define CHECK_ATTACH \
+    if (option(OPTATTACHMSG)) {                         \
+        mutt_flushinp();                                \
+        mutt_error _("Function not permitted in attach-message mode."); \
+        break;                                          \
+    }
 
 struct q_class_t {
   int length;
@@ -137,37 +113,32 @@ static struct resize {
   int line;
   int SearchCompiled;
   int SearchBack;
-}     *Resize = NULL;
+} *Resize = NULL;
 #endif
 
 #define NumSigLines 4
 
-static int check_sig (const char *s, struct line_t *info, int n)
+static int check_sig(const char *s, struct line_t *info, int n)
 {
-  int count = 0;
+    int count = 0;
 
-  while (n > 0 && count <= NumSigLines) {
-    if (info[n].type != MT_COLOR_SIGNATURE)
-      break;
-    count++;
-    n--;
-  }
+    while (n > 0 && count <= NumSigLines) {
+        if (info[n].type != MT_COLOR_SIGNATURE)
+            break;
+        count++;
+        n--;
+    }
 
-  if (count == 0)
-    return (-1);
+    if (count == 0)
+        return -1;
 
-  if (count > NumSigLines) {
-    /* check for a blank line */
-    while (*s) {
-      if (!ISSPACE (*s))
-        return 0;
-      s++;
+    if (count > NumSigLines) {
+        /* check for a blank line */
+        s = skipspaces(s);
+        return *s ? -1 : 0;
     }
 
-    return (-1);
-  }
-
-  return (0);
+    return 0;
 }
 
 static void
@@ -190,9 +161,10 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags,
     }
     m = (lineInfo[n].syntax)[0].first;
     cnt += (lineInfo[n].syntax)[0].last;
-  }
-  else
+  } else {
     m = n;
+  }
+
   if (!(flags & M_SHOWCOLOR))
     def_color = ColorDefs[MT_COLOR_NORMAL];
   else if (lineInfo[m].type == MT_COLOR_HEADER)
@@ -225,8 +197,7 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags,
         color = (lineInfo[m].syntax)[i].color;
         break;
       }
-      /* don't break here, as cnt might be 
-       * in the next chunk as well */
+      /* don't break here, as cnt might be in the next chunk as well */
     }
   }
 
@@ -290,7 +261,7 @@ static void append_line (struct line_t *lineInfo, int n, int cnt)
   int m;
 
   lineInfo[n + 1].type = lineInfo[n].type;
-  (lineInfo[n + 1].syntax)[0].color = (lineInfo[n].syntax)[0].color;
+  lineInfo[n + 1].syntax[0].color = lineInfo[n].syntax[0].color;
   lineInfo[n + 1].continuation = 1;
 
   /* find the real start of the line */
@@ -311,7 +282,7 @@ static void new_class_color (struct q_class_t *class, int *q_level)
 
 static void
 shift_class_colors (struct q_class_t *QuoteList, struct q_class_t *new_class,
-                    int index, int *q_level)
+                    int lindex, int *q_level)
 {
   struct q_class_t *q_list;
 
@@ -319,7 +290,7 @@ shift_class_colors (struct q_class_t *QuoteList, struct q_class_t *new_class,
   new_class->index = -1;
 
   while (q_list) {
-    if (q_list->index >= index) {
+    if (q_list->index >= lindex) {
       q_list->index++;
       q_list->color = ColorQuote[q_list->index % ColorQuoteUsed];
     }
@@ -338,8 +309,8 @@ shift_class_colors (struct q_class_t *QuoteList, struct q_class_t *new_class,
     }
   }
 
-  new_class->index = index;
-  new_class->color = ColorQuote[index % ColorQuoteUsed];
+  new_class->index = lindex;
+  new_class->color = ColorQuote[lindex % ColorQuoteUsed];
   (*q_level)++;
 }
 
@@ -368,7 +339,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
   struct q_class_t *class = NULL, *tmp = NULL, *ptr, *save;
   char *tail_qptr;
   int offset, tail_lng;
-  int index = -1;
+  int lindex = -1;
 
   if (ColorQuoteUsed <= 1) {
     /* not much point in classifying quotes... */
@@ -421,7 +392,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
           if (q_list == *QuoteList)
             *QuoteList = tmp;
 
-          index = q_list->index;
+          lindex = q_list->index;
 
           /* tmp should be the return class too */
           class = tmp;
@@ -431,8 +402,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
            * go down after this point
            */
           q_list = tmp->next;
-        }
-        else {
+        } else {
           /* found another branch for which tmp is a shorter prefix */
 
           /* save the next sibling for later */
@@ -454,7 +424,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
           q_list->prev = ptr;
           q_list->up = tmp;
 
-          index = q_list->index;
+          lindex = q_list->index;
 
           /* next class to test; as above, we shouldn't go down */
           q_list = save;
@@ -463,14 +433,12 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
         /* we found a shorter prefix, so certain quotes have changed classes */
         *force_redraw = 1;
         continue;
-      }
-      else {
+      } else {
         /* shorter, but not a substring of the current class: try next */
         q_list = q_list->next;
         continue;
       }
-    }
-    else {
+    } else {
       /* case 2: try subclassing the current top level node */
 
       /* tmp != NULL means we already found a shorter prefix at case 1 */
@@ -521,15 +489,14 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
                 q_list->next = NULL;
                 q_list->prev = NULL;
 
-                index = q_list->index;
+                lindex = q_list->index;
 
                 /* tmp should be the return class too */
                 class = tmp;
 
                 /* next class to test */
                 q_list = tmp->next;
-              }
-              else {
+              } else {
                 /* found another branch for which tmp is a shorter prefix */
 
                 /* save the next sibling for later */
@@ -550,7 +517,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
                 q_list->prev = ptr;
                 q_list->up = tmp;
 
-                index = q_list->index;
+                lindex = q_list->index;
 
                 /* next class to test */
                 q_list = save;
@@ -559,13 +526,11 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
               /* we found a shorter prefix, so we need a redraw */
               *force_redraw = 1;
               continue;
-            }
-            else {
+            } else {
               q_list = q_list->next;
               continue;
             }
-          }
-          else {
+          } else {
             /* longer than the current prefix: try subclassing it */
             if (tmp == NULL
                 && m_strncmp(tail_qptr, (q_list->prefix) + offset,
@@ -579,8 +544,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
               tail_qptr = (char *) qptr + offset;
 
               continue;
-            }
-            else {
+            } else {
               /* nope, try the next prefix */
               q_list = q_list->next;
               continue;
@@ -604,15 +568,13 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
           new_class_color (tmp, q_level);
 
           return tmp;
-        }
-        else {
-          if (index != -1)
-            shift_class_colors (*QuoteList, tmp, index, q_level);
+        } else {
+          if (lindex != -1)
+            shift_class_colors (*QuoteList, tmp, lindex, q_level);
 
           return class;
         }
-      }
-      else {
+      } else {
         /* nope, try the next prefix */
         q_list = q_list->next;
         continue;
@@ -634,8 +596,8 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
     *QuoteList = class;
   }
 
-  if (index != -1)
-    shift_class_colors (*QuoteList, tmp, index, q_level);
+  if (lindex != -1)
+    shift_class_colors (*QuoteList, tmp, lindex, q_level);
 
   return class;
 }
@@ -646,7 +608,7 @@ static int brailleCol = -1;
 static int check_attachment_marker (char *);
 
 static void
-resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
+resolve_types (char *buf, char *rawbuf, struct line_t *lineInfo, int n, int last,
                struct q_class_t **QuoteList, int *q_level, int *force_redraw,
                int q_classify)
 {
@@ -662,8 +624,7 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
     else if (n > 0 && (buf[0] == ' ' || buf[0] == '\t')) {
       lineInfo[n].type = lineInfo[n - 1].type;  /* wrapped line */
       (lineInfo[n].syntax)[0].color = (lineInfo[n - 1].syntax)[0].color;
-    }
-    else {
+    } else {
       lineInfo[n].type = MT_COLOR_HDEFAULT;
       color_line = ColorHdrList;
       while (color_line) {
@@ -676,21 +637,16 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
       }
     }
   }
-  else if (m_strncmp("\033[0m", raw, 4) == 0)       /* a little hack... */
+  else if (m_strncmp("\033[0m", rawbuf, 4) == 0)       /* a little hack... */
     lineInfo[n].type = MT_COLOR_NORMAL;
-#if 0
-  else if (m_strncmp("[-- ", buf, 4) == 0)
+  else if (check_attachment_marker ((char *) rawbuf) == 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 (m_strcmp("-- \n", buf) == 0
            || m_strcmp("-- \r\n", buf) == 0) {
     i = n + 1;
 
     lineInfo[n].type = MT_COLOR_SIGNATURE;
-    while (i < last && check_sig (buf, lineInfo, i - 1) == 0 &&
+    while (i < last && check_sig(buf, lineInfo, i - 1) == 0 &&
            (lineInfo[i].type == MT_COLOR_NORMAL ||
             lineInfo[i].type == MT_COLOR_QUOTED ||
             lineInfo[i].type == MT_COLOR_HEADER)) {
@@ -702,7 +658,7 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
       lineInfo[i++].type = MT_COLOR_SIGNATURE;
     }
   }
-  else if (check_sig (buf, lineInfo, n - 1) == 0)
+  else if (check_sig(buf, lineInfo, n - 1) == 0)
     lineInfo[n].type = MT_COLOR_SIGNATURE;
   else if (regexec ((regex_t *) QuoteRegexp.rx, buf, 1, pmatch, 0) == 0) {
     if (regexec ((regex_t *) Smileys.rx, buf, 1, smatch, 0) == 0) {
@@ -721,25 +677,24 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
                                                 pmatch[0].rm_so, force_redraw,
                                                 q_level);
           lineInfo[n].type = MT_COLOR_QUOTED;
-        }
-        else
+        } else {
           lineInfo[n].type = MT_COLOR_NORMAL;
+        }
 
         buf[smatch[0].rm_so] = c;
-      }
-      else
+      } else {
         lineInfo[n].type = MT_COLOR_NORMAL;
-    }
-    else {
+      }
+    else {
       if (q_classify && lineInfo[n].quote == NULL)
         lineInfo[n].quote = classify_quote (QuoteList, buf + pmatch[0].rm_so,
                                             pmatch[0].rm_eo - pmatch[0].rm_so,
                                             force_redraw, q_level);
       lineInfo[n].type = MT_COLOR_QUOTED;
     }
-  }
-  else
+  } else {
     lineInfo[n].type = MT_COLOR_NORMAL;
+  }
 
   /* body patterns */
   if (lineInfo[n].type == MT_COLOR_NORMAL ||
@@ -776,9 +731,9 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
             }
             found = 1;
             null_rx = 0;
-          }
-          else
+          } else {
             null_rx = 1;        /* empty regexp; don't add it, but keep looking */
+          }
         }
         color_line = color_line->next;
       }
@@ -786,24 +741,24 @@ resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
       if (null_rx)
         offset++;               /* avoid degenerate cases */
       else
-        offset = (lineInfo[n].syntax)[i].last;
+        offset = lineInfo[n].syntax[i].last;
     } while (found || null_rx);
   }
 }
 
-static int is_ansi (unsigned char *buf)
+static int is_ansi(unsigned char *buf)
 {
-  while (*buf && (isdigit (*buf) || *buf == ';'))
-    buf++;
-  return (*buf == 'm');
+    while (isdigit(*buf) || *buf == ';')
+        buf++;
+    return (*buf == 'm');
 }
 
-static int check_attachment_marker (char *p)
+static int check_attachment_marker(char *p)
 {
-  char *q = AttachmentMarker;
+    char *q = AttachmentMarker;
 
-  for (; *p == *q && *q && *p && *q != '\a' && *p != '\a'; p++, q++);
-  return (int) (*p - *q);
+    for (; *p == *q && *q && *p && *q != '\a' && *p != '\a'; p++, q++);
+    return (int)(*p - *q);
 }
 
 static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
@@ -868,8 +823,7 @@ static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
         if (buf[pos + 1] != '9')
           a->bg = buf[pos + 1] - '0';
         pos += 3;
-      }
-      else {
+      } else {
         while (pos < x && buf[pos] != ';')
           pos++;
         pos++;
@@ -883,14 +837,14 @@ static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
 /* trim tail of buf so that it contains complete multibyte characters */
 static int trim_incomplete_mbyte(unsigned char *buf, size_t len) {
   mbstate_t mbstate;
-  size_t k;
+  ssize_t k;
 
   p_clear(&mbstate, 1);
   for (; len > 0; buf += k, len -= k) {
     k = mbrtowc (NULL, (char *) buf, len, &mbstate);
-    if (k == -2) 
-      break; 
-    else if (k == -1 || k == 0) 
+    if (k == -2)
+      break;
+    if (k == -1 || k == 0)
       k = 1;
   }
   *buf = '\0';
@@ -900,7 +854,7 @@ static int trim_incomplete_mbyte(unsigned char *buf, size_t len) {
 
 static int
 fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
-             unsigned char *fmt, size_t blen, int *buf_ready)
+             unsigned char *fmt, ssize_t blen, int *buf_ready)
 {
   unsigned char *p;
   static int b_read = 0;
@@ -931,9 +885,9 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
         else if (*(p + 1)) {    /* bold or overstrike */
           *(fmt - 1) = *(p + 1);
           p += 2;
-        }
-        else                    /* ^H */
+        } else {                  /* ^H */
           *fmt++ = *p++;
+        }
       }
       else if (*p == '\033' && *(p + 1) == '[' && is_ansi (p + 2)) {
         while (*p++ != 'm')     /* skip ANSI sequence */
@@ -941,12 +895,11 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
       }
       else if (*p == '\033' && *(p + 1) == ']'
                && check_attachment_marker ((char *) p) == 0) {
-        debug_print (2, ("seen attachment marker.\n"));
         while (*p++ != '\a')    /* skip pseudo-ANSI sequence */
           ;
-      }
-      else
+      } else {
         *fmt++ = *p++;
+      }
     }
     *fmt = 0;
   }
@@ -954,11 +907,9 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
 }
 
 #ifdef USE_NNTP
-#include "mx.h"
-#include "nntp.h"
+#include <nntp/nntp.h>
 #endif
 
-
 static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
                         int flags, ansi_attr * pa, int cnt,
                         int *pspace, int *pvch, int *pcol, int *pspecial)
@@ -1000,7 +951,6 @@ 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) {
-      debug_print (1, ("mbrtowc returned %d; errno = %d.\n", k, errno));
       if (col + 4 > wrap_cols)
         break;
       col += 4;
@@ -1014,7 +964,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
 
     /* Handle backspace */
     special = 0;
-    if (IsWPrint (wc)) {
+    if (iswprint(wc)) {
       wchar_t wc1;
       mbstate_t mbstate1;
       int k1, k2;
@@ -1025,7 +975,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
                            &mbstate1), k1 - k > 0 && wc1 == '\b')
              && (wc1 = 0, k2 =
                  mbrtowc (&wc1, (char *) buf + ch + k1, cnt - ch - k1,
-                          &mbstate1), k2 > 0 && IsWPrint (wc1))) {
+                          &mbstate1), k2 > 0 && iswprint(wc1))) {
         if (wc == wc1) {
           special |= (wc == '_' && special & A_UNDERLINE)
             ? A_UNDERLINE : A_BOLD;
@@ -1033,8 +983,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
         else if (wc == '_' || wc1 == '_') {
           special |= A_UNDERLINE;
           wc = (wc1 == '_') ? wc : wc1;
-        }
-        else {
+        } else {
           /* special = 0; / * overstrike: nothing to do! */
           wc = wc1;
         }
@@ -1051,7 +1000,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
       last_special = special;
     }
 
-    if (IsWPrint (wc)) {
+    if (iswprint(wc)) {
       if (wc == ' ')
         space = ch;
       t = wcwidth (wc);
@@ -1087,13 +1036,12 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
       col += 4;
       if (pa)
         printw ("\\%03o", wc);
-    }
-    else {
+    } else {
       if (col + 1 > wrap_cols)
         break;
       ++col;
       if (pa)
-        addch (replacement_char ());
+        addch (CharsetReplacement);
     }
   }
   *pspace = space;
@@ -1119,7 +1067,6 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
  *     0       normal exit, line was not displayed
  *     >0      normal exit, line was displayed
  */
-
 static int
 display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
               int *last, int *max, int flags, struct q_class_t **QuoteList,
@@ -1255,9 +1202,8 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
   }
 
   /* now chose a good place to break the line */
-  cnt =
-    format_line (lineInfo, n, buf, flags, 0, b_read, &ch, &vch, &col,
-                 &special);
+  cnt = format_line(lineInfo, n, buf, flags, 0, b_read, &ch, &vch, &col,
+                    &special);
   buf_ptr = buf + cnt;
 
   /* move the break point only if smart_wrap is set */
@@ -1274,9 +1220,9 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
           buf_ptr = buf + cnt;
         else
           cnt = ch + 1;
-      }
-      else
+      } else {
         buf_ptr = buf + cnt;    /* a very long word... */
+      }
     }
     if (!(flags & M_PAGER_NSKIP))
       /* skip leading blanks on the next line too */
@@ -1392,7 +1338,6 @@ static struct mapping_t PagerNewsHelpExtra[] = {
 #endif
 
 
-
 /* This pager is actually not so simple as it once was.  It now operates in
    two modes: one for viewing messages and the other for viewing help.  These
    can be distinguished by whether or not ``hdr'' is NULL.  The ``hdr'' arg
@@ -1403,8 +1348,8 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 {
   static char searchbuf[STRING];
   char buffer[LONG_STRING];
-  char helpstr[SHORT_STRING * 2];
-  char tmphelp[SHORT_STRING * 2];
+  char helpstr[STRING * 2];
+  char tmphelp[STRING * 2];
   int maxLine, lastLine = 0;
   struct line_t *lineInfo;
   struct q_class_t *QuoteList = NULL;
@@ -1425,7 +1370,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
   int helpoffset = LINES - 2;   /* offset for the help bar. */
   int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */
 
-  MUTTMENU *index = NULL;       /* the Pager Index (PI) */
+  MUTTMENU *pager_index = NULL;       /* the Pager Index (PI) */
   int indexoffset = 0;          /* offset for the PI */
   int indexlen = PagerIndexLines;       /* indexlen not always == PIL */
   int indicator = indexlen / 3; /* the indicator line of the PI */
@@ -1446,7 +1391,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 
   if (stat (fname, &sb) != 0) {
     mutt_perror (fname);
-    fclose (fp);
+    m_fclose(&fp);
     return (-1);
   }
   unlink (fname);
@@ -1467,10 +1412,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
     (lineInfo[i].syntax)[0].first = (lineInfo[i].syntax)[0].last = -1;
   }
 
-  mutt_compile_help (helpstr, sizeof (helpstr), MENU_PAGER, PagerHelp);
+  mutt_compile_help (helpstr, sizeof(helpstr), MENU_PAGER, PagerHelp);
   if (IsHeader (extra)) {
     m_strcpy(tmphelp, sizeof(tmphelp), helpstr);
-    mutt_compile_help (buffer, sizeof (buffer), MENU_PAGER,
+    mutt_compile_help (buffer, sizeof(buffer), MENU_PAGER,
 #ifdef USE_NNTP
                        (Context
                         && (Context->magic == M_NNTP)) ? PagerNewsHelpExtra :
@@ -1480,8 +1425,8 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
   }
   if (!InHelp) {
     m_strcpy(tmphelp, sizeof(tmphelp), helpstr);
-    mutt_make_help (buffer, sizeof (buffer), _("Help"), MENU_PAGER, OP_HELP);
-    snprintf (helpstr, sizeof (helpstr), "%s %s", tmphelp, buffer);
+    mutt_make_help (buffer, sizeof(buffer), _("Help"), MENU_PAGER, OP_HELP);
+    snprintf (helpstr, sizeof(helpstr), "%s %s", tmphelp, buffer);
   }
 
   while (ch != -1) {
@@ -1509,8 +1454,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
         bodylen = helpoffset - bodyoffset;
         if (!option (OPTHELP))
           bodylen++;
-      }
-      else {
+      } else {
         helpoffset = 0;
         indexoffset = 1;
         statusoffset = LINES - 2;
@@ -1543,31 +1487,31 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 #endif
 
       if (IsHeader (extra) && PagerIndexLines) {
-        if (index == NULL) {
+        if (pager_index == NULL) {
           /* only allocate the space if/when we need the index.
              Initialise the menu as per the main index */
-          index = mutt_new_menu ();
-          index->menu = MENU_MAIN;
-          index->make_entry = index_make_entry;
-          index->color = index_color;
-          index->max = Context->vcount;
-          index->current = extra->hdr->virtual;
+          pager_index = mutt_new_menu ();
+          pager_index->menu = MENU_MAIN;
+          pager_index->make_entry = index_make_entry;
+          pager_index->color = index_color;
+          pager_index->max = Context->vcount;
+          pager_index->current = extra->hdr->virtual;
         }
 
         SETCOLOR (MT_COLOR_NORMAL);
-        index->offset = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0);
+        pager_index->offset = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0);
 
-        index->pagelen = indexlen - 1;
+        pager_index->pagelen = indexlen - 1;
 
         /* some fudge to work out where abouts the indicator should go */
-        if (index->current - indicator < 0)
-          index->top = 0;
-        else if (index->max - index->current < index->pagelen - indicator)
-          index->top = index->max - index->pagelen;
+        if (pager_index->current - indicator < 0)
+          pager_index->top = 0;
+        else if (pager_index->max - pager_index->current < pager_index->pagelen - indicator)
+          pager_index->top = pager_index->max - pager_index->pagelen;
         else
-          index->top = index->current - indicator;
+          pager_index->top = pager_index->current - indicator;
 
-        menu_redraw_index (index);
+        menu_redraw_index (pager_index);
       }
 
       redraw |= REDRAW_BODY | REDRAW_INDEX | REDRAW_STATUS;
@@ -1659,15 +1603,15 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
     }
 
     if (redraw & REDRAW_SIDEBAR)
-      sidebar_draw (MENU_PAGER);
+      sidebar_draw ();
 
-    if ((redraw & REDRAW_INDEX) && index) {
+    if ((redraw & REDRAW_INDEX) && pager_index) {
       /* redraw the pager_index indicator, because the
        * flags for this message might have changed. */
-      menu_redraw_current (index);
-      sidebar_draw (MENU_PAGER);
-      /* print out the index status bar */
-      menu_status_line (buffer, sizeof (buffer), index, NONULL (Status));
+      menu_redraw_current (pager_index);
+      sidebar_draw ();
+      /* print out the pager_index status bar */
+      menu_status_line (buffer, sizeof (buffer), pager_index, NONULL (Status));
       move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), SW);
       SETCOLOR (MT_COLOR_STATUS);
       BKGDSET (MT_COLOR_STATUS);
@@ -1677,7 +1621,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
     }
     /* if we're not using the index, update every time */
     if (index == 0)
-      sidebar_draw (MENU_PAGER);
+      sidebar_draw ();
 
     redraw = 0;
 
@@ -1697,9 +1641,9 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       else
         topline = TopLine;
       continue;
-    }
-    else
+    } else {
       OldHdr = NULL;
+    }
 
     ch = km_dokey (MENU_PAGER);
     if (ch != -1)
@@ -1729,8 +1673,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 
         ch = -1;
         rc = OP_REFORMAT_WINCH;
-      }
-      else {
+      } else {
         for (i = 0; i < maxLine; i++) {
           lineInfo[i].offset = 0;
           lineInfo[i].type = -1;
@@ -1776,8 +1719,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       else if (option (OPTPAGERSTOP)) {
         /* emulate "less -q" and don't go on to the next message. */
         mutt_error _("Bottom of message is shown.");
-      }
-      else {
+      } else {
         /* end of the current message, so display the next message. */
         rc = OP_MAIN_NEXT_UNDELETED;
         ch = -1;
@@ -1834,8 +1776,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       else if (option (OPTPAGERSTOP)) {
         /* emulate "less -q" and don't go on to the next message. */
         mutt_error _("Bottom of message is shown.");
-      }
-      else {
+      } else {
         /* end of the current message, so display the next message. */
         rc = OP_MAIN_NEXT_UNDELETED;
         ch = -1;
@@ -1890,7 +1831,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
                           M_CLEAR) != 0)
         break;
 
-      if (!strcmp (buffer, searchbuf)) {
+      if (!m_strcmp (buffer, searchbuf)) {
         if (SearchCompiled) {
           /* do an implicit search-next */
           if (ch == OP_SEARCH)
@@ -2190,9 +2131,9 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       }
 
       if (old_PagerIndexLines != PagerIndexLines) {
-        if (index)
-          mutt_menuDestroy (&index);
-        index = NULL;
+        if (pager_index)
+          mutt_menuDestroy (&pager_index);
+        pager_index = NULL;
       }
 
       if (option (OPTWRAP) != old_smart_wrap ||
@@ -2571,7 +2512,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
     case OP_SIDEBAR_NEXT_NEW:
     case OP_SIDEBAR_PREV:
     case OP_SIDEBAR_PREV_NEW:
-      sidebar_scroll (ch, MENU_PAGER);
+      sidebar_scroll (ch);
       break;
     default:
       ch = -1;
@@ -2579,7 +2520,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
     }
   }
 
-  fclose (fp);
+  m_fclose(&fp);
   if (IsHeader (extra)) {
     Context->msgnotreadyet = -1;
     if (rc == -1)
@@ -2602,7 +2543,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
     SearchCompiled = 0;
   }
   p_delete(&lineInfo);
-  if (index)
-    mutt_menuDestroy (&index);
+  if (pager_index)
+    mutt_menuDestroy (&pager_index);
   return (rc != -1 ? rc : 0);
 }