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 */
* 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);
static void alert (char *, int);
static int tmp_fd (void);
static void anno (int, struct stat *);
}
}
- armed++;
+ done=armed_done;
switch (setjmp (env)) {
case OK:
/*
break;
}
- armed = 0;
+ done=exit;
if (distfile)
unlink (distfile);
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:
}
if (!(mp = folder_read (folder))) {
if (debugsw)
- admonish (NULL, "unable to read folder %s");
+ admonish (NULL, "unable to read folder %s", folder);
return;
}
}
-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 */
}