]> granicus.if.org Git - neomutt/commitdiff
attach_format: add new %F placeholder
authorDamien Riegel <damien.riegel@gmail.com>
Tue, 8 Nov 2016 02:06:13 +0000 (18:06 -0800)
committerRichard Russon <rich@flatcap.org>
Fri, 18 Nov 2016 14:00:25 +0000 (14:00 +0000)
This new placeholder allows to print the attachment name as it will be
seen on the recipient side.

init.h
recvattach.c

diff --git a/init.h b/init.h
index 6756004e68f23d61db8ac55d37e0423f1860ad0d..3a9b0785746ce61b94a9dad494d9386714c0b013 100644 (file)
--- a/init.h
+++ b/init.h
@@ -253,6 +253,7 @@ struct option_t MuttVars[] = {
   ** .dt %D  .dd deleted flag
   ** .dt %d  .dd description
   ** .dt %e  .dd MIME content-transfer-encoding
+  ** .dt %F  .dd filename for content-disposition header
   ** .dt %f  .dd filename
   ** .dt %I  .dd disposition (``I'' for inline, ``A'' for attachment)
   ** .dt %m  .dd major MIME type
index 86ecdffca45d73200ee005585abb87ded8e10f45..0dd3baa1b1c659f7d1f16ae3f2885beb70e48479 100644 (file)
@@ -160,6 +160,7 @@ ATTACHPTR **mutt_gen_attach_list (BODY *m,
  * %D = deleted flag
  * %d = description
  * %e = MIME content-transfer-encoding
+ * %F = filename for content-disposition header
  * %f = filename
  * %I = content-disposition, either I (inline) or A (attachment)
  * %t = tagged flag
@@ -263,6 +264,25 @@ const char *mutt_attach_fmt (char *dest,
       else if(!aptr->content->filename)
         optional = 0;
       break;
+    case 'F':
+      if (!optional)
+      {
+        char fname[_POSIX_PATH_MAX];
+        char *src = NULL;
+
+        if (aptr->content->d_filename)
+          src = aptr->content->d_filename;
+        else if (aptr->content->filename)
+          src = aptr->content->filename;
+        else
+          break;
+
+        strfcpy (fname, mutt_basename (NONULL (src)), sizeof (fname));
+        mutt_format_s (dest, destlen, prefix, fname);
+      }
+      else if (!aptr->content->d_filename && !aptr->content->filename)
+        optional = 0;
+      break;
     case 'D':
       if(!optional)
        snprintf (dest, destlen, "%c", aptr->content->deleted ? 'D' : ' ');