Removed mts.conf; the maildelivery option went into slocal directly.
[mmh] / uip / spost.c
index 3692363..5b51ad4 100644 (file)
@@ -26,39 +26,35 @@ struct swit switches[] = {
        { "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
+#define BACKSW  6
        { "backup", 0 },
-#define NBACKSW  9
+#define NBACKSW  7
        { "nobackup", 0 },
-#define ALIASW  10
+#define ALIASW  8
        { "alias aliasfile", 0 },
-#define NALIASW  11
+#define NALIASW  9
        { "noalias", 0 },
-#define VERSIONSW  12
+#define VERSIONSW  10
        { "version", 0 },
-#define HELPSW  13
+#define HELPSW  11
        { "help", 0 },
-#define DEBUGSW  14
+#define DEBUGSW  12
        { "debug", -5 },
-#define DISTSW  15
+#define DISTSW  13
        { "dist", -4 },  /* interface from dist */
-#define PUSHSW  16  /* fork to sendmail then exit */
+#define PUSHSW  14  /* fork to sendmail then exit */
        { "push", -4 },
-#define NPUSHSW  17  /* exec sendmail */
+#define NPUSHSW  15  /* exec sendmail */
        { "nopush", -6 },
-#define LIBSW  19
+#define LIBSW  16
        { "library directory", -7 },
        { NULL, 0 }
 };
@@ -128,9 +124,8 @@ static struct headers RHeaders[] = {
 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 backflg = 0;  /* prepend backup prefix to input file when done */
 static int pushflg = 0;  /* if going to fork to sendmail */
 static int aliasflg = 0;  /* if going to process aliases */
 
@@ -142,8 +137,6 @@ static enum {
 
 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 */
@@ -160,13 +153,10 @@ extern char *sendmail;
 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 *);
@@ -196,7 +186,6 @@ main(int argc, char **argv)
        if (context_foil(NULL) == -1)
                done(1);
 
-       mts_init(invo_name);
        arguments = getarguments(invo_name, argc, argv, 0);
        argp = arguments;
 
@@ -236,13 +225,6 @@ main(int argc, char **argv)
                                filter = NULL;
                                continue;
 
-                       case REMVSW:
-                               rmflg++;
-                               continue;
-                       case NREMVSW:
-                               rmflg = 0;
-                               continue;
-
                        case BACKSW:
                                backflg++;
                                continue;
@@ -305,7 +287,6 @@ main(int argc, char **argv)
        if ((in = fopen(msg, "r")) == NULL)
                adios(msg, "unable to open");
 
-       start_headers();
        if (debug) {
                verbose++;
                out = stdout;
@@ -366,8 +347,8 @@ main(int argc, char **argv)
                }
                break;
        }
-
        fclose(in);
+
        if (backflg) {
                strncpy(buf, m_backup(msg), sizeof(buf));
                if (rename(msg, buf) == NOTOK)
@@ -375,11 +356,12 @@ main(int argc, char **argv)
        }
 
        if (debug) {
+               /* stop here */
                done(0);
-       } else {
-               fclose(out);
        }
 
+       fclose(out);
+
        /* process Fcc */
        for (i=0; i<fccind; i++) {
                fcc(tmpfil, fccfold[i]);
@@ -389,10 +371,10 @@ main(int argc, char **argv)
        ** 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";
@@ -537,12 +519,19 @@ putfmt(char *name, char *str, FILE *out)
 
 
 /*
-** 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) {
@@ -550,29 +539,10 @@ start_headers(void)
        } 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
@@ -735,13 +705,8 @@ make_bcc_file(void)
        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)