This new placeholder allows to print the attachment name as it will be
seen on the recipient side.
---
 init.h       |  1 +
 recvattach.c | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/init.h b/init.h
index 782cf8e..48cf915 100644
--- 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
diff --git a/recvattach.c b/recvattach.c
index 9d2cc8b..9693827 100644
--- a/recvattach.c
+++ b/recvattach.c
@@ -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' : ' ');
-- 
2.10.0

Reply via email to