From: Konstantin Sobolev <kos@supportwizard.com>
[apps/madmutt.git] / pager.c
diff --git a/pager.c b/pager.c
index 7bb69ff..0ef2507 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -833,6 +833,8 @@ static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
       a->attr = ANSI_OFF;
       a->pair = -1;
     }
+    a->bg = -2;
+    a->fg = -2;
     while (pos < x) {
       if (buf[pos] == '1' && (pos + 1 == x || buf[pos + 1] == ';')) {
         a->attr |= ANSI_BOLD;
@@ -851,12 +853,8 @@ static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
         pos += 2;
       }
       else if (buf[pos] == '0' && (pos + 1 == x || buf[pos + 1] == ';')) {
-#ifdef HAVE_COLOR
-        if (a->pair != -1)
-          mutt_free_color (a->fg, a->bg);
-#endif
-        a->attr = ANSI_OFF;
-        a->pair = -1;
+        a->bg = -2;
+        a->fg = -2;
         pos += 2;
       }
       else if (buf[pos] == '3' && isdigit (buf[pos + 1])) {
@@ -866,7 +864,8 @@ static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
 #endif
         a->pair = -1;
         a->attr |= ANSI_COLOR;
-        a->fg = buf[pos + 1] - '0';
+        if (buf[pos + 1] != '9')
+          a->fg = buf[pos + 1] - '0';
         pos += 3;
       }
       else if (buf[pos] == '4' && isdigit (buf[pos + 1])) {
@@ -876,7 +875,8 @@ static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a)
 #endif
         a->pair = -1;
         a->attr |= ANSI_COLOR;
-        a->bg = buf[pos + 1] - '0';
+        if (buf[pos + 1] != '9')
+          a->bg = buf[pos + 1] - '0';
         pos += 3;
       }
       else {
@@ -1536,8 +1536,8 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 
       if (option (OPTHELP)) {
         SETCOLOR (MT_COLOR_STATUS);
-        move (helpoffset, 0);
-        mutt_paddstr (COLS, helpstr);
+        move (helpoffset, SW);
+        mutt_paddstr (COLS-SW, helpstr);
         SETCOLOR (MT_COLOR_NORMAL);
       }
 
@@ -1659,13 +1659,9 @@ 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);
       }
-      if (option(OPTSTATUSONTOP)) {
-        move(0,0);
-      } else {
-        move(LINES-2,SW);
-      }
-      mutt_paddstr (COLS - 10 - (option(OPTSTATUSONTOP)?0:SW), IsHeader (extra)
-                    || IsMsgAttach (extra) ? buffer : banner);
+      move(statusoffset,SW);
+      mutt_paddstr (COLS - 10 - SW, IsHeader (extra) || 
+                    IsMsgAttach (extra) ? buffer : banner);
 
       addstr (" -- (");
       if (last_pos < sb.st_size - 1)
@@ -1686,12 +1682,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       sidebar_draw (MENU_PAGER);
       /* print out the index status bar */
       menu_status_line (buffer, sizeof (buffer), index, NONULL (Status));
-      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)),
-            option (OPTSTATUSONTOP) ? 0 : SW);
+      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), SW);
       SETCOLOR (MT_COLOR_STATUS);
       BKGDSET (MT_COLOR_STATUS);
-      mutt_paddstr (COLS - (option (OPTSTATUSONTOP) ? 0 : SW),
-                    buffer);
+      mutt_paddstr (COLS-SW, buffer);
       SETCOLOR (MT_COLOR_NORMAL);
       BKGDSET (MT_COLOR_NORMAL);
     }