rm *.li/*.c files when cpkg2c fails.
[apps/madmutt.git] / help.c
diff --git a/help.c b/help.c
index 0fa80c1..bce7b3d 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)))
@@ -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) {
@@ -272,43 +264,41 @@ static void dump_unbound (FILE * f,
 
 void mutt_help (int menu)
 {
-  char t[_POSIX_PATH_MAX];
-  char buf[SHORT_STRING];
-  const char *desc;
-  FILE *f;
-  struct binding_t *funcs;
-
-  mutt_mktemp (t);
-
-  funcs = km_get_table (menu);
-  desc = mutt_getnamebyvalue (menu, Menus);
-  if (!desc)
-    desc = _("<UNKNOWN>");
-
-  do {
-    if ((f = safe_fopen (t, "w")) == NULL) {
-      mutt_perror (t);
-      return;
-    }
+    char tmp[_POSIX_PATH_MAX];
+    char buf[STRING];
+    const char *desc;
+    FILE *f;
+    struct binding_t *funcs;
+
+    funcs = km_get_table (menu);
+    desc = mutt_getnamebyvalue (menu, Menus);
+    if (!desc)
+        desc = _("<UNKNOWN>");
+
+    do {
+        f = m_tempfile(tmp, sizeof(tmp), NONULL(MCore.tmpdir), NULL);
+        if (!f) {
+            mutt_perror(tmp);
+            return;
+        }
 
-    dump_menu (f, menu);
-    if (menu != MENU_EDITOR && menu != MENU_PAGER) {
-      fputs (_("\nGeneric bindings:\n\n"), f);
-      dump_menu (f, MENU_GENERIC);
-    }
+        dump_menu(f, menu);
+        if (menu != MENU_EDITOR && menu != MENU_PAGER) {
+            fputs(_("\nGeneric bindings:\n\n"), f);
+            dump_menu(f, MENU_GENERIC);
+        }
 
-    fputs (_("\nUnbound functions:\n\n"), f);
-    if (funcs)
-      dump_unbound (f, funcs, Keymaps[menu], NULL);
-    if (menu != MENU_PAGER)
-      dump_unbound (f, OpGeneric, Keymaps[MENU_GENERIC], Keymaps[menu]);
+        fputs(_("\nUnbound functions:\n\n"), f);
+        if (funcs)
+            dump_unbound(f, funcs, Keymaps[menu], NULL);
 
-    fclose (f);
+        if (menu != MENU_PAGER)
+            dump_unbound (f, OpGeneric, Keymaps[MENU_GENERIC], Keymaps[menu]);
 
-    snprintf (buf, sizeof (buf), _("Help for %s"), desc);
-  }
-  while
-    (mutt_do_pager (buf, t,
-                    M_PAGER_RETWINCH | M_PAGER_MARKER | M_PAGER_NSKIP, NULL)
-     == OP_REFORMAT_WINCH);
+        m_fclose(&f);
+
+        snprintf(buf, sizeof (buf), _("Help for %s"), desc);
+    } while (mutt_pager(buf, tmp,
+                        M_PAGER_RETWINCH | M_PAGER_MARKER | M_PAGER_NSKIP,
+                        NULL) == OP_REFORMAT_WINCH);
 }