Use p_new instead of xmalloc()
[apps/madmutt.git] / pager.c
diff --git a/pager.c b/pager.c
index ea3ec2b..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 <wchar.h>
-#include <wctype.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/mapping.h>
-#include <lib-lib/rx.h>
+#include <lib-lib/lib-lib.h>
+#include <lib-crypt/crypt.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 "alias.h"
 #include "attach.h"
 #include "recvattach.h"
 #include "charset.h"
-#include "sidebar.h"
 #include "buffy.h"
 
-#include "mx.h"
-
 #include <imap/imap_private.h>
 
-#include <lib-crypt/crypt.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;
@@ -139,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
@@ -192,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)
@@ -227,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 */
     }
   }
 
@@ -292,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 */
@@ -433,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 */
@@ -465,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 */
@@ -530,8 +496,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
 
                 /* 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 */
@@ -561,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,
@@ -581,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;
@@ -606,15 +568,13 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
           new_class_color (tmp, q_level);
 
           return tmp;
-        }
-        else {
+        } 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;
@@ -664,8 +624,7 @@ resolve_types (char *buf, char *rawbuf, 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) {
@@ -680,19 +639,14 @@ resolve_types (char *buf, char *rawbuf, struct line_t *lineInfo, int n, int last
   }
   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)
-    lineInfo[n].type = MT_COLOR_ATTACHMENT;
-#else
   else if (check_attachment_marker ((char *) rawbuf) == 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)) {
@@ -704,7 +658,7 @@ resolve_types (char *buf, char *rawbuf, 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) {
@@ -723,25 +677,24 @@ resolve_types (char *buf, char *rawbuf, 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 ||
@@ -778,9 +731,9 @@ resolve_types (char *buf, char *rawbuf, 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;
       }
@@ -788,24 +741,24 @@ resolve_types (char *buf, char *rawbuf, 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)
@@ -870,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++;
@@ -890,9 +842,9 @@ static int trim_incomplete_mbyte(unsigned char *buf, size_t len) {
   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';
@@ -933,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 */
@@ -945,9 +897,9 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
                && check_attachment_marker ((char *) p) == 0) {
         while (*p++ != '\a')    /* skip pseudo-ANSI sequence */
           ;
-      }
-      else
+      } else {
         *fmt++ = *p++;
+      }
     }
     *fmt = 0;
   }
@@ -955,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)
@@ -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;
@@ -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;
@@ -1659,13 +1603,13 @@ 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) && pager_index) {
       /* redraw the pager_index indicator, because the
        * flags for this message might have changed. */
       menu_redraw_current (pager_index);
-      sidebar_draw (MENU_PAGER);
+      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);
@@ -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)
@@ -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)