void mutt_edit_file (const char *editor, const char *data)
{
- char cmd[LONG_STRING];
+ BUFFER *cmd;
+
+ cmd = mutt_buffer_pool_get ();
mutt_endwin (NULL);
- mutt_expand_file_fmt (cmd, sizeof (cmd), editor, data);
- if (mutt_system (cmd))
+ mutt_expand_file_fmt (cmd, editor, data);
+ if (mutt_system (mutt_b2s (cmd)))
{
- mutt_error (_("Error running \"%s\"!"), cmd);
+ mutt_error (_("Error running \"%s\"!"), mutt_b2s (cmd));
mutt_sleep (2);
}
#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)
#endif
keypad (stdscr, TRUE);
clearok (stdscr, TRUE);
+
+ mutt_buffer_pool_release (&cmd);
}
int mutt_yesorno (const char *msg, int def)
rc = mutt_pager (banner, tempfile, do_color, info);
else
{
- char cmd[STRING];
+ BUFFER *cmd = NULL;
+ cmd = mutt_buffer_pool_get ();
mutt_endwin (NULL);
- mutt_expand_file_fmt (cmd, sizeof(cmd), Pager, tempfile);
- if (mutt_system (cmd) == -1)
+ mutt_expand_file_fmt (cmd, Pager, tempfile);
+ if (mutt_system (mutt_b2s (cmd)) == -1)
{
- mutt_error (_("Error running \"%s\"!"), cmd);
+ mutt_error (_("Error running \"%s\"!"), mutt_b2s (cmd));
rc = -1;
}
else
rc = 0;
mutt_unlink (tempfile);
+ mutt_buffer_pool_release (&cmd);
}
return rc;
mutt_buffer_addch (d, '\'');
}
-void mutt_expand_file_fmt (char *dest, size_t destlen, const char *fmt, const char *src)
+void mutt_expand_file_fmt (BUFFER *dest, const char *fmt, const char *src)
{
char tmp[LONG_STRING];
mutt_quote_filename (tmp, sizeof (tmp), src);
- mutt_expand_fmt (dest, destlen, fmt, tmp);
+ /* TODO: this will be fixed in the next commit */
+ mutt_expand_fmt (dest->data, dest->dsize, fmt, tmp);
+ mutt_buffer_fix_dptr (dest);
}
void mutt_expand_fmt (char *dest, size_t destlen, const char *fmt, const char *src)
void mutt_error_history_display (void);
void mutt_error_history_init (void);
void mutt_expand_aliases_env (ENVELOPE *);
-void mutt_expand_file_fmt (char *, size_t, const char *, const char *);
+void mutt_expand_file_fmt (BUFFER *, const char *, const char *);
void mutt_expand_fmt (char *, size_t, const char *, const char *);
void mutt_expand_link (char *, const char *, const char *);
void mutt_fix_reply_recipients (ENVELOPE *env);
FILE *fp;
QUERY *first = NULL;
QUERY *cur = NULL;
- char cmd[_POSIX_PATH_MAX];
+ BUFFER *cmd = NULL;
char *buf = NULL;
size_t buflen;
int dummy = 0;
char *p;
pid_t thepid;
+ cmd = mutt_buffer_pool_get ();
+ mutt_expand_file_fmt (cmd, QueryCmd, s);
- mutt_expand_file_fmt (cmd, sizeof(cmd), QueryCmd, s);
-
- if ((thepid = mutt_create_filter (cmd, NULL, &fp, NULL)) < 0)
+ if ((thepid = mutt_create_filter (mutt_b2s (cmd), NULL, &fp, NULL)) < 0)
{
- dprint (1, (debugfile, "unable to fork command: %s", cmd));
+ dprint (1, (debugfile, "unable to fork command: %s", mutt_b2s (cmd)));
+ mutt_buffer_pool_release (&cmd);
return 0;
}
+ mutt_buffer_pool_release (&cmd);
+
if (!quiet)
mutt_message _("Waiting for response...");
fgets (msg, sizeof (msg), fp);
static void run_mime_type_query (BODY *att)
{
FILE *fp, *fperr;
- char cmd[HUGE_STRING];
+ BUFFER *cmd = NULL;
char *buf = NULL;
size_t buflen;
int dummy = 0;
pid_t thepid;
- mutt_expand_file_fmt (cmd, sizeof(cmd), MimeTypeQueryCmd, att->filename);
+ cmd = mutt_buffer_pool_get ();
+ mutt_expand_file_fmt (cmd, MimeTypeQueryCmd, att->filename);
- if ((thepid = mutt_create_filter (cmd, NULL, &fp, &fperr)) < 0)
+ if ((thepid = mutt_create_filter (mutt_b2s (cmd), NULL, &fp, &fperr)) < 0)
{
- mutt_error (_("Error running \"%s\"!"), cmd);
+ mutt_error (_("Error running \"%s\"!"), mutt_b2s (cmd));
+ mutt_buffer_pool_release (&cmd);
return;
}
+ mutt_buffer_pool_release (&cmd);
if ((buf = mutt_read_line (buf, &buflen, fp, &dummy, 0)) != NULL)
{