]> granicus.if.org Git - mutt/commitdiff
Convert mutt_expand_file_fmt() to accept BUFFER dest parameter.
authorKevin McCarthy <kevin@8t8.us>
Tue, 9 Apr 2019 22:20:51 +0000 (15:20 -0700)
committerKevin McCarthy <kevin@8t8.us>
Wed, 10 Apr 2019 21:32:31 +0000 (14:32 -0700)
mutt_expand_fmt() will be converted in the next commit, at the same
time as rfc1524_expand_filename().

curs_lib.c
muttlib.c
protos.h
query.c
sendlib.c

index cb43f9e7990d6047662cf9e7faae08f93ce14941..bdf6487fc5f30ca4d6558e7d7a15f186cf3fb84a 100644 (file)
@@ -260,13 +260,15 @@ void mutt_clear_error (void)
 
 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)
@@ -275,6 +277,8 @@ void mutt_edit_file (const char *editor, const char *data)
 #endif
   keypad (stdscr, TRUE);
   clearok (stdscr, TRUE);
+
+  mutt_buffer_pool_release (&cmd);
 }
 
 int mutt_yesorno (const char *msg, int def)
@@ -936,18 +940,20 @@ int mutt_do_pager (const char *banner,
     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;
index b3fc9bba0fbf662cce5e51413c102e45124ce704..2ffdaed5249498348900b6b34265a041fd9b10e6 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1050,12 +1050,14 @@ void mutt_buffer_quote_filename (BUFFER *d, const char *f)
   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)
index 7c27727d74b83ff4460ac4df52ec3360e10a47e7..396c7810e504245346ebcd1a47bbb0ff328d4c74 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -205,7 +205,7 @@ void mutt_enter_command (void);
 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);
diff --git a/query.c b/query.c
index 6299ccfec5e5b19eec6d47b42be7642ad0b43472..87e90286f8c41d56479cc1550cce7032f412f316 100644 (file)
--- a/query.c
+++ b/query.c
@@ -94,7 +94,7 @@ static QUERY *run_query (char *s, int quiet)
   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;
@@ -102,14 +102,17 @@ static QUERY *run_query (char *s, int quiet)
   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);
index 8a772823012ed1b415c2fbbda031aa9a14818186..984e05284659d7e2fd5d7197006be5449da7984b 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
@@ -1355,19 +1355,22 @@ BODY *mutt_make_message_attach (CONTEXT *ctx, HEADER *hdr, int attach_msg)
 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)
   {