Move the event loop to evtloop.c, and wake up sleeping jobs every 10 seconds.
[apps/madmutt.git] / pager.c
diff --git a/pager.c b/pager.c
index e0643b5..2e29e65 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -14,9 +14,8 @@
 #include <lib-lib/lib-lib.h>
 
 #include <lib-ui/lib-ui.h>
-#include <lib-ui/enter.h>
 #include <lib-ui/menu.h>
-#include <lib-ui/sidebar.h>
+#include <lib-ui/madtty.h>
 #include <lib-mx/mx.h>
 
 #include "mutt.h"
@@ -216,7 +215,7 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags,
   if (special || a->attr) {
     if ((a->attr & ANSI_COLOR)) {
       if (a->pair == -1)
-        a->pair = mutt_alloc_color (a->fg, a->bg);
+        a->pair = madtty_color_pair(a->fg, a->bg);
       color = a->pair;
       if (a->attr & ANSI_BOLD)
         color |= A_BOLD;
@@ -337,7 +336,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList,
             class->color = ColorQuote[0];
             *QuoteList = class;
         }
-        return (*QuoteList);
+        return *QuoteList;
     }
 
     /* Did I mention how much I like emulating Lisp in C? */
@@ -734,7 +733,7 @@ static int is_ansi(unsigned char *buf)
 {
     while (isdigit(*buf) || *buf == ';')
         buf++;
-    return (*buf == 'm');
+    return *buf == 'm';
 }
 
 static int check_attachment_marker(char *p)
@@ -776,7 +775,7 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
             fseeko (f, offset, 0);
         if (fgets ((char *) buf, blen - 1, f) == NULL) {
             fmt[0] = 0;
-            return (-1);
+            return -1;
         }
         *last_pos = ftello (f);
         b_read = (int) (*last_pos - offset);
@@ -817,10 +816,6 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
     return b_read;
 }
 
-#ifdef USE_NNTP
-#include "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)
@@ -1021,7 +1016,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
            &buf_ready) < 0) {
         if (change_last)
           (*last)--;
-        return (-1);
+        return -1;
       }
 
       resolve_types ((char *) fmt, (char *) buf, *lineInfo, n, *last,
@@ -1053,7 +1048,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
          &buf_ready) < 0) {
       if (change_last)
         (*last)--;
-      return (-1);
+      return -1;
     }
     regexec ((regex_t *) QuoteRegexp.rx, (char *) fmt, 1, pmatch, 0);
     (*lineInfo)[n].quote = classify_quote (QuoteList,
@@ -1069,7 +1064,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
          &buf_ready) < 0) {
       if (change_last)
         (*last)--;
-      return (-1);
+      return -1;
     }
 
     offset = 0;
@@ -1099,18 +1094,18 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
 
   if (!(flags & M_SHOW) && (*lineInfo)[n + 1].offset > 0) {
     /* we've already scanned this line, so just exit */
-    return (0);
+    return 0;
   }
   if ((flags & M_SHOWCOLOR) && *force_redraw && (*lineInfo)[n + 1].offset > 0) {
     /* no need to try to display this line... */
-    return (1);                 /* fake display */
+    return 1;                 /* fake display */
   }
 
   if ((b_read = fill_buffer (f, last_pos, (*lineInfo)[n].offset, buf, fmt,
                              sizeof (buf), &buf_ready)) < 0) {
     if (change_last)
       (*last)--;
-    return (-1);
+    return -1;
   }
 
   /* now chose a good place to break the line */
@@ -1193,7 +1188,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n,
   if (!(flags & M_SHOW))
     flags = 0;
 
-  return (flags);
+  return flags;
 }
 
 static int upNLines (int nlines, struct line_t *info, int cur, int hiding)
@@ -1234,7 +1229,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 
   int bodyoffset = 1;           /* offset of first line of real text */
   int statusoffset = 0;         /* offset for the status bar */
-  int helpoffset = LINES - 2;   /* offset for the help bar. */
   int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */
 
   MUTTMENU *pager_index = NULL;       /* the Pager Index (PI) */
@@ -1243,22 +1237,18 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
   int old_PagerIndexLines;      /* some people want to resize it
                                  * while inside the pager... */
 
-#ifdef USE_NNTP
-  char *followup_to;
-#endif
-
   if (!(flags & M_SHOWCOLOR))
     flags |= M_SHOWFLAT;
 
   if ((fp = fopen (fname, "r")) == NULL) {
     mutt_perror (fname);
-    return (-1);
+    return -1;
   }
 
   if (stat (fname, &sb) != 0) {
     mutt_perror (fname);
     m_fclose(&fp);
-    return (-1);
+    return -1;
   }
   unlink (fname);
 
@@ -1284,9 +1274,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 
     if (redraw & REDRAW_FULL) {
       SETCOLOR(main_w, MT_COLOR_NORMAL);
-      /* wclear(main_w) doesn't optimize screen redraws */
-      wmove(main_w, 0, 0);
-      wclrtobot(main_w);
+      werase(main_w);
 
       if (IsHeader (extra) && Context->vcount + 1 < PagerIndexLines)
         indexlen = Context->vcount + 1;
@@ -1297,12 +1285,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
 
       statusoffset = IsHeader (extra) ? indexlen : 0;
       bodyoffset   = statusoffset + 1;
-      helpoffset   = LINES - 2;
-      bodylen      = helpoffset - bodyoffset;
+      bodylen      = LINES - 2 - bodyoffset;
 
-      SETCOLOR(main_w, MT_COLOR_STATUS);
-      wmove(main_w, helpoffset, 0);
-      mutt_paddstr(main_w, getmaxx(main_w), "");
+      SETCOLOR(main_w, MT_COLOR_SIDEBAR);
+      mvwhline(main_w, LINES - 2, 0, ACS_HLINE, getmaxx(main_w));
       SETCOLOR(main_w, MT_COLOR_NORMAL);
 
       if (Resize != NULL) {
@@ -1451,10 +1437,8 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       SETCOLOR(main_w, MT_COLOR_NORMAL);
       BKGDSET(main_w, MT_COLOR_NORMAL);
     }
-    /* if we're not using the index, update every time */
-    if (index == 0)
-      sidebar_draw ();
 
+    sidebar_draw ();
     redraw = 0;
     mutt_refresh();
 
@@ -2052,70 +2036,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       redraw = REDRAW_FULL;
       break;
 
-#ifdef USE_NNTP
-    case OP_POST:
-      CHECK_MODE (IsHeader (extra) && !IsAttach (extra));
-      CHECK_ATTACH;
-      if (extra->ctx && extra->ctx->magic == M_NNTP &&
-          !((nntp_data_t *) extra->ctx->data)->allowed &&
-          query_quadoption (OPT_TOMODERATED,
-                            _
-                            ("Posting to this group not allowed, may be moderated. Continue?"))
-          != M_YES)
-        break;
-      ci_send_message (SENDNEWS, NULL, NULL, extra->ctx, NULL);
-      redraw = REDRAW_FULL;
-      break;
-
-    case OP_FORWARD_TO_GROUP:
-      CHECK_MODE (IsHeader (extra) || IsMsgAttach (extra));
-      CHECK_ATTACH;
-      if (extra->ctx && extra->ctx->magic == M_NNTP &&
-          !((nntp_data_t *) extra->ctx->data)->allowed &&
-          query_quadoption (OPT_TOMODERATED,
-                            _
-                            ("Posting to this group not allowed, may be moderated. Continue?"))
-          != M_YES)
-        break;
-      if (IsMsgAttach (extra))
-        mutt_attach_forward (extra->fp, extra->hdr, extra->idx,
-                             extra->idxlen, extra->bdy, SENDNEWS);
-      else
-        ci_send_message (SENDNEWS | SENDFORWARD, NULL, NULL, extra->ctx,
-                         extra->hdr);
-      redraw = REDRAW_FULL;
-      break;
-
-    case OP_FOLLOWUP:
-      CHECK_MODE (IsHeader (extra) || IsMsgAttach (extra));
-      CHECK_ATTACH;
-
-      if (IsMsgAttach (extra))
-        followup_to = extra->bdy->hdr->env->followup_to;
-      else
-        followup_to = extra->hdr->env->followup_to;
-
-      if (!followup_to || m_strcasecmp(followup_to, "poster") ||
-          query_quadoption (OPT_FOLLOWUPTOPOSTER,
-                            _("Reply by mail as poster prefers?")) != M_YES) {
-        if (extra->ctx && extra->ctx->magic == M_NNTP
-            && !((nntp_data_t *) extra->ctx->data)->allowed
-            && query_quadoption (OPT_TOMODERATED,
-                                 _
-                                 ("Posting to this group not allowed, may be moderated. Continue?"))
-            != M_YES)
-          break;
-        if (IsMsgAttach (extra))
-          mutt_attach_reply (extra->fp, extra->hdr, extra->idx,
-                             extra->idxlen, extra->bdy, SENDNEWS | SENDREPLY);
-        else
-          ci_send_message (SENDNEWS | SENDREPLY, NULL, NULL,
-                           extra->ctx, extra->hdr);
-        redraw = REDRAW_FULL;
-        break;
-      }
-#endif
-
     case OP_REPLY:
       CHECK_MODE (IsHeader (extra) || IsMsgAttach (extra));
       CHECK_ATTACH;
@@ -2282,10 +2202,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
       }
       break;
 
-    case OP_VERSION:
-      mutt_version ();
-      break;
-
     case OP_BUFFY_LIST:
       if (option (OPTFORCEBUFFYCHECK))
         buffy_check (1);
@@ -2351,7 +2267,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra)
   p_delete(&lineInfo);
   if (pager_index)
     mutt_menuDestroy (&pager_index);
-  return (rc != -1 ? rc : 0);
+  return rc != -1 ? rc : 0;
 }
 
 #undef CHECK_ATTACH