]> granicus.if.org Git - mutt/commitdiff
Add mutt_buffer_adv_mktemp() transition function.
authorKevin McCarthy <kevin@8t8.us>
Mon, 15 Oct 2018 02:02:47 +0000 (19:02 -0700)
committerKevin McCarthy <kevin@8t8.us>
Mon, 15 Oct 2018 20:53:08 +0000 (13:53 -0700)
muttlib.c
protos.h

index 5a76a9ed2f4843765384fafe4a50e0437e47e34c..7789479c03928ce5b7f76b3cd94783ef1fd3d554 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -55,6 +55,36 @@ BODY *mutt_new_body (void)
   return (p);
 }
 
+void mutt_buffer_adv_mktemp (BUFFER *buf)
+{
+  BUFFER *prefix = NULL;
+  char *suffix;
+  struct stat sb;
+
+  if (!(buf->data && buf->data[0]))
+  {
+    mutt_buffer_mktemp (buf);
+  }
+  else
+  {
+    prefix = mutt_buffer_pool_get ();
+    mutt_buffer_strcpy (prefix, buf->data);
+    mutt_sanitize_filename (prefix->data, 1);
+    mutt_buffer_printf (buf, "%s/%s", NONULL (Tempdir), mutt_b2s (prefix));
+    if (lstat (mutt_b2s (buf), &sb) == -1 && errno == ENOENT)
+      goto out;
+
+    if ((suffix = strrchr (prefix->data, '.')) != NULL)
+    {
+      *suffix = 0;
+      ++suffix;
+    }
+    mutt_buffer_mktemp_pfx_sfx (buf, mutt_b2s (prefix), suffix);
+
+out:
+    mutt_buffer_pool_release (&prefix);
+  }
+}
 
 /* Modified by blong to accept a "suggestion" for file name.  If
  * that file exists, then construct one with unique name but 
index 074a68136cdad36845dd328c87825fbe56eda521..19100d6c623c49c7045e7044a7c78cc6194d3eef 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -159,6 +159,7 @@ REGEXP *mutt_compile_regexp (const char *, int);
 
 void mutt_account_hook (const char* url);
 void mutt_add_to_reference_headers (ENVELOPE *env, ENVELOPE *curenv, LIST ***pp, LIST ***qq);
+void mutt_buffer_adv_mktemp (BUFFER *);
 void mutt_adv_mktemp (char *, size_t);
 void mutt_alias_menu (char *, size_t, ALIAS *);
 void mutt_allow_interrupt (int);