{ "filter filterfile", 0 },
#define NFILTSW 1
{ "nofilter", 0 },
-#define REMVSW 2
- { "remove", 0 },
-#define NREMVSW 3
- { "noremove", 0 },
-#define VERBSW 4
+#define VERBSW 2
{ "verbose", 0 },
-#define NVERBSW 5
+#define NVERBSW 3
{ "noverbose", 0 },
-#define WATCSW 6
+#define WATCSW 4
{ "watch", 0 },
-#define NWATCSW 7
+#define NWATCSW 5
{ "nowatch", 0 },
-#define BACKSW 8
- { "backup", 0 },
-#define NBACKSW 9
- { "nobackup", 0 },
-#define ALIASW 10
+#define ALIASW 6
{ "alias aliasfile", 0 },
-#define NALIASW 11
+#define NALIASW 7
{ "noalias", 0 },
-#define VERSIONSW 12
+#define VERSIONSW 8
{ "version", 0 },
-#define HELPSW 13
+#define HELPSW 9
{ "help", 0 },
-#define DEBUGSW 14
+#define DEBUGSW 10
{ "debug", -5 },
-#define DISTSW 15
+#define DISTSW 11
{ "dist", -4 }, /* interface from dist */
-#define PUSHSW 16 /* fork to sendmail then exit */
+#define PUSHSW 12 /* fork to sendmail then exit */
{ "push", -4 },
-#define NPUSHSW 17 /* exec sendmail */
+#define NPUSHSW 13 /* exec sendmail */
{ "nopush", -6 },
-#define LIBSW 19
+#define LIBSW 14
{ "library directory", -7 },
{ NULL, 0 }
};
static int badmsg = 0; /* message has bad semantics */
static int verbose = 0; /* spell it out */
static int debug = 0; /* debugging post */
-static int rmflg = 1; /* remove temporary file when done */
static int watch = 0; /* watch the delivery process */
-static int backflg = 0; /* rename input file as *.bak when done */
static int pushflg = 0; /* if going to fork to sendmail */
static int aliasflg = 0; /* if going to process aliases */
static char tmpfil[] = "/tmp/pstXXXXXX";
-static char from[BUFSIZ]; /* my network address */
-static char signature[BUFSIZ]; /* my signature */
static char *filter = NULL; /* the filter for BCC'ing */
static char *subject = NULL; /* the subject field for BCC'ing */
static char *fccfold[FCCS]; /* foldernames for FCC'ing */
extern char *getfullname(void);
extern char *getusername(void);
-extern boolean draft_from_masquerading; /* defined in mts.c */
-
/*
** static prototypes
*/
static void putfmt(char *, char *, FILE *);
-static void start_headers(void);
static void finish_headers(FILE *);
static int get_header(char *, struct headers *);
static void putadr(char *, struct mailname *);
if (context_foil(NULL) == -1)
done(1);
- mts_init(invo_name);
arguments = getarguments(invo_name, argc, argv, 0);
argp = arguments;
filter = NULL;
continue;
- case REMVSW:
- rmflg++;
- continue;
- case NREMVSW:
- rmflg = 0;
- continue;
-
- case BACKSW:
- backflg++;
- continue;
- case NBACKSW:
- backflg = 0;
- continue;
-
case VERBSW:
verbose++;
continue;
if ((in = fopen(msg, "r")) == NULL)
adios(msg, "unable to open");
- start_headers();
if (debug) {
verbose++;
out = stdout;
}
break;
}
-
fclose(in);
- if (backflg) {
- strncpy(buf, m_backup(msg), sizeof(buf));
- if (rename(msg, buf) == NOTOK)
- advise(buf, "unable to rename %s to", msg);
- }
if (debug) {
+ /* stop here */
done(0);
- } else {
- fclose(out);
}
+ fclose(out);
+
/* process Fcc */
for (i=0; i<fccind; i++) {
fcc(tmpfil, fccfold[i]);
** re-open the temp file, unlink it and exec sendmail, giving it
** the msg temp file as std in.
*/
- if (freopen(tmpfil, "r", stdin) == NULL)
+ if (!freopen(tmpfil, "r", stdin)) {
adios(tmpfil, "can't reopen for sendmail");
- if (rmflg)
- unlink(tmpfil);
+ }
+ unlink(tmpfil);
argp = sargv;
*argp++ = "send-mail";
/*
-** Construct signature name
+** Add yet missing headers.
*/
static void
-start_headers(void)
+finish_headers(FILE *out)
{
char *cp;
+ char from[BUFSIZ]; /* my network address */
+ char signature[BUFSIZ]; /* my signature */
+ char *resentstr = (msgstate == resent) ? "Resent-" : "";
+
+ if (!(msgflags & MDAT)) {
+ fprintf(out, "%sDate: %s\n", resentstr, dtimenow(0));
+ }
strncpy(from, getusername(), sizeof(from));
if ((cp = getfullname()) && *cp) {
} else {
snprintf(signature, sizeof(signature), "%s", from);
}
-}
-
-
-/*
-** Add yet missing headers.
-*/
-static void
-finish_headers(FILE *out)
-{
- char *resentstr = (msgstate == resent) ? "Resent-" : "";
-
- if (!(msgflags & MDAT)) {
- fprintf(out, "%sDate: %s\n", resentstr, dtimenow(0));
- }
if (!(msgflags & MFRM)) {
fprintf(out, "%sFrom: %s\n", resentstr, signature);
- } else if (!draft_from_masquerading) {
- /*
- ** mts.conf didn't contain "masquerade:[...]draft_from[...]"
- ** so we'll reveal the user's actual account@thismachine
- ** address in a Sender: header (and use it as the envelope
- ** From: later).
- */
+ } else {
+ /* In case the From: header contains multiple addresses. */
fprintf(out, "%sSender: %s\n", resentstr, from);
}
#ifdef notdef
if (!(msgflags & MFRM)) {
/* Construct a From: header. */
fprintf(out, "From: %s\n", signature);
- } else if (!draft_from_masquerading) {
- /*
- ** mts.conf didn't contain "masquerade:[...]draft_from[...]"
- ** so we'll reveal the user's actual account@thismachine
- ** address in a Sender: header (and use it as the envelope
- ** From: later).
- */
+ } else {
+ /* Add a Sender: header in case the From: header is fake. */
fprintf(out, "Sender: %s\n", from);
}
if (subject)