void mutt_help (int menu)
{
- char t[_POSIX_PATH_MAX];
+ BUFFER *t = NULL;
char buf[SHORT_STRING];
const char *desc;
FILE *f;
const struct binding_t *funcs;
- mutt_mktemp (t, sizeof (t));
+ /* We don't use the buffer pool because of the extended lifetime of t */
+ t = mutt_buffer_new ();
+ mutt_buffer_mktemp (t);
funcs = km_get_table (menu);
desc = mutt_getnamebyvalue (menu, Menus);
do
{
- if ((f = safe_fopen (t, "w")) == NULL)
+ if ((f = safe_fopen (mutt_b2s (t), "w")) == NULL)
{
- mutt_perror (t);
- return;
+ mutt_perror (mutt_b2s (t));
+ goto cleanup;
}
dump_menu (f, menu);
snprintf (buf, sizeof (buf), _("Help for %s"), desc);
}
while
- (mutt_do_pager (buf, t,
+ (mutt_do_pager (buf, mutt_b2s (t),
MUTT_PAGER_RETWINCH | MUTT_PAGER_MARKER | MUTT_PAGER_NSKIP | MUTT_PAGER_NOWRAP,
NULL)
== OP_REFORMAT_WINCH);
+
+cleanup:
+ mutt_buffer_free (&t);
}