]> granicus.if.org Git - mutt/commitdiff
attach_format: add new %F placeholder
authorDamien Riegel <damien.riegel@gmail.com>
Tue, 8 Nov 2016 02:06:13 +0000 (18:06 -0800)
committerDamien Riegel <damien.riegel@gmail.com>
Tue, 8 Nov 2016 02:06:13 +0000 (18:06 -0800)
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 782cf8ea4fea9a9cb0884656de368306d156a115..48cf915aeaedc58378c84120a9f5829a672f621f 100644 (file)
--- a/init.h
+++ b/init.h
@@ -225,6 +225,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 9d2cc8b6cfcd3e70a51bae4919cfa8bc46eb3a00..9693827e0b4f4bbf44c778fb934da180416444eb 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' : ' ');