X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fsendsbr.c;h=cb6bb3f784b1b24512a89537f8daa43df060e909;hp=8930857582d1962cd9c58a3c041c130113c58211;hb=56a805299de35d8924969138aef4d0f1580daa6d;hpb=d2f12554a254e814dcdafb3828fc0d9936154eef diff --git a/uip/sendsbr.c b/uip/sendsbr.c index 8930857..cb6bb3f 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 int armed_done (int); 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=default_done; 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,11 +1074,10 @@ oops: } -int -done (int status) +static int +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 */