fix parsing issues in slurp_newsrc
[apps/madmutt.git] / help.c
diff --git a/help.c b/help.c
index 584e80b..d54d1ed 100644 (file)
--- a/help.c
+++ b/help.c
@@ -39,9 +39,9 @@ static struct binding_t *help_lookupFunction (int op, int menu)
   return (NULL);
 }
 
-void mutt_make_help (char *d, ssize_t dlen, char *txt, int menu, int op)
+void mutt_make_help (char *d, ssize_t dlen, const char *txt, int menu, int op)
 {
-  char buf[SHORT_STRING];
+  char buf[STRING];
 
   if (km_expand_key (buf, sizeof (buf), km_find_func (menu, op)) ||
       km_expand_key (buf, sizeof (buf), km_find_func (MENU_GENERIC, op)))
@@ -140,8 +140,8 @@ static int pad (FILE * f, int col, int i)
   return (col + 1);
 }
 
-static void format_line (FILE * f, int ismacro,
-                         const char *t1, const char *t2, const char *t3)
+static void help_format_line (FILE * f, int ismacro,
+                              const char *t1, const char *t2, const char *t3)
 {
   int col;
   int col_a, col_b;
@@ -164,9 +164,7 @@ static void format_line (FILE * f, int ismacro,
   }
 
   if (ismacro > 0) {
-    if (!m_strcmp(Pager, "builtin"))
-      fputs ("_\010", f);
-    fputs ("M ", f);
+    fputs ("_\010M ", f);
     col += 2;
 
     if (!split) {
@@ -205,15 +203,9 @@ static void format_line (FILE * f, int ismacro,
       print_macro (f, n, &t3);
 
       if (*t3) {
-        if (m_strcmp(Pager, "builtin")) {
-          fputc ('\n', f);
-          n = 0;
-        }
-        else {
-          n += col - COLS;
-          if (option (OPTMARKERS))
-            ++n;
-        }
+        n += col - COLS;
+        if (option (OPTMARKERS))
+          ++n;
         col = pad (f, n, col_b);
       }
     }
@@ -226,7 +218,7 @@ static void dump_menu (FILE * f, int menu)
 {
   struct keymap_t *map;
   struct binding_t *b;
-  char buf[SHORT_STRING];
+  char buf[STRING];
 
   /* browse through the keymap table */
   for (map = Keymaps[menu]; map; map = map->next) {
@@ -235,13 +227,13 @@ static void dump_menu (FILE * f, int menu)
 
       if (map->op == OP_MACRO) {
         if (map->descr == NULL)
-          format_line (f, -1, buf, "macro", map->macro);
+          help_format_line (f, -1, buf, "macro", map->macro);
         else
-          format_line (f, 1, buf, map->macro, map->descr);
+          help_format_line (f, 1, buf, map->macro, map->descr);
       }
       else {
         b = help_lookupFunction (map->op, menu);
-        format_line (f, 0, buf, b ? b->name : "UNKNOWN",
+        help_format_line (f, 0, buf, b ? b->name : "UNKNOWN",
                      b ? _(HelpStrings[b->op]) :
                      _("ERROR: please report this bug"));
       }
@@ -266,14 +258,14 @@ static void dump_unbound (FILE * f,
   for (i = 0; funcs[i].name; i++) {
     if (!is_bound (map, funcs[i].op) &&
         (!aux || !is_bound (aux, funcs[i].op)))
-      format_line (f, 0, funcs[i].name, "", _(HelpStrings[funcs[i].op]));
+      help_format_line (f, 0, funcs[i].name, "", _(HelpStrings[funcs[i].op]));
   }
 }
 
 void mutt_help (int menu)
 {
     char tmp[_POSIX_PATH_MAX];
-    char buf[SHORT_STRING];
+    char buf[STRING];
     const char *desc;
     FILE *f;
     struct binding_t *funcs;
@@ -284,7 +276,7 @@ void mutt_help (int menu)
         desc = _("<UNKNOWN>");
 
     do {
-        f = m_tempfile(tmp, sizeof(tmp), NONULL(Tempdir), NULL);
+        f = m_tempfile(tmp, sizeof(tmp), NONULL(mod_core.tmpdir), NULL);
         if (!f) {
             mutt_perror(tmp);
             return;
@@ -303,10 +295,12 @@ void mutt_help (int menu)
         if (menu != MENU_PAGER)
             dump_unbound (f, OpGeneric, Keymaps[MENU_GENERIC], Keymaps[menu]);
 
-        fclose(f);
+        m_fclose(&f);
 
         snprintf(buf, sizeof (buf), _("Help for %s"), desc);
-    } while (mutt_do_pager(buf, tmp,
-                           M_PAGER_RETWINCH | M_PAGER_MARKER | M_PAGER_NSKIP,
-                           NULL) == OP_REFORMAT_WINCH);
+    } while (mutt_pager(buf, tmp,
+                        M_PAGER_RETWINCH | M_PAGER_MARKER | M_PAGER_NSKIP,
+                        NULL) == OP_REFORMAT_WINCH);
 }
+
+#undef HELP_C