X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fsendsbr.c;h=fd21acd37e4fbf41e889416e129a327ec6242a69;hp=8930857582d1962cd9c58a3c041c130113c58211;hb=d8916ff5d389de5ab225cd6f40aeda1b285d0f28;hpb=d2f12554a254e814dcdafb3828fc0d9936154eef diff --git a/uip/sendsbr.c b/uip/sendsbr.c index 8930857..fd21acd 100644 --- a/uip/sendsbr.c +++ b/uip/sendsbr.c @@ -41,7 +41,6 @@ char *altmsg = NULL; /* .. */ char *annotext = NULL; char *distfile = NULL; -static int armed = 0; static jmp_buf env; static char body_file_name[MAXPATHLEN + 1]; /* name of temporary file for body content */ @@ -56,12 +55,12 @@ static FILE *composition_file; /* composition file pointer */ * external prototypes */ int sendsbr (char **, int, char *, struct stat *, int, char *, int); -int done (int); char *getusername (void); /* * static prototypes */ +static void armed_done (int) NORETURN; static void alert (char *, int); static int tmp_fd (void); static void anno (int, struct stat *); @@ -118,7 +117,7 @@ sendsbr (char **vec, int vecp, char *drft, struct stat *st, int rename_drft, cha } } - armed++; + done=armed_done; switch (setjmp (env)) { case OK: /* @@ -154,7 +153,7 @@ sendsbr (char **vec, int vecp, char *drft, struct stat *st, int rename_drft, cha break; } - armed = 0; + done=exit; if (distfile) unlink (distfile); @@ -489,17 +488,37 @@ make_mime_composition_file_entry(char *file_name, int attachformat) break; case 1: - /* Suppress Content-Id, insert simple Content-Disposition. */ - (void) fprintf (composition_file, "#%s <>{attachment}", content_type); + if (stringdex (m_maildir(invo_name), file_name) == 0) { + /* Content had been placed by send into a temp file. + Don't generate Content-Disposition header, because + it confuses Microsoft Outlook, Build 10.0.6626, at + least. */ + (void) fprintf (composition_file, "#%s <>", content_type); + } else { + /* Suppress Content-Id, insert simple Content-Disposition. */ + (void) fprintf (composition_file, + "#%s; name=\"%s\" <>{attachment}", + content_type, + ((p = strrchr(file_name, '/')) == (char *)0) ? file_name : p + 1); + } break; case 2: - /* Suppress Content-Id, insert Content-Disposition with - modification date. */ - (void) fprintf (composition_file, - "#%s <>{attachment; modification-date=\"%s\"}", - content_type, - dtime (&st.st_mtime, 0)); + if (stringdex (m_maildir(invo_name), file_name) == 0) { + /* Content had been placed by send into a temp file. + Don't generate Content-Disposition header, because + it confuses Microsoft Outlook, Build 10.0.6626, at + least. */ + (void) fprintf (composition_file, "#%s <>", content_type); + } else { + /* Suppress Content-Id, insert Content-Disposition with + modification date. */ + (void) fprintf (composition_file, + "#%s; name=\"%s\" <>{attachment; modification-date=\"%s\"}", + content_type, + ((p = strrchr(file_name, '/')) == (char *)0) ? file_name : p + 1, + dtime (&st.st_mtime, 0)); + } break; default: @@ -990,7 +1009,7 @@ annoaux (int fd) } if (!(mp = folder_read (folder))) { if (debugsw) - admonish (NULL, "unable to read folder %s"); + admonish (NULL, "unable to read folder %s", folder); return; } @@ -1055,12 +1074,10 @@ oops: } -int -done (int status) +static void +armed_done (int status) { - if (armed) - longjmp (env, status ? status : NOTOK); + longjmp (env, status ? status : NOTOK); exit (status); - return 1; /* dead code to satisfy the compiler */ }