Added default_content_type argument to
[mmh] / uip / spost.c
index bef70be..fef583e 100644 (file)
@@ -5,8 +5,6 @@
  * This is a simpler, faster, replacement for "post" for use
  * when "sendmail" is the transport system.
  *
- * $Id$
- *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
@@ -29,53 +27,45 @@ struct swit switches[] = {
     { "filter filterfile", 0 },
 #define        NFILTSW              1
     { "nofilter", 0 },
-#define        FRMTSW               2
-    { "format", 0 },
-#define        NFRMTSW              3
-    { "noformat", 0 },
-#define        REMVSW               4
+#define        REMVSW               2
     { "remove", 0 },
-#define        NREMVSW              5
+#define        NREMVSW              3
     { "noremove", 0 },
-#define        VERBSW               6
+#define        VERBSW               4
     { "verbose", 0 },
-#define        NVERBSW              7
+#define        NVERBSW              5
     { "noverbose", 0 },
-#define        WATCSW               8
+#define        WATCSW               6
     { "watch", 0 },
-#define        NWATCSW              9
+#define        NWATCSW              7
     { "nowatch", 0 },
-#define BACKSW              10
+#define BACKSW               8
     { "backup", 0 },
-#define NBACKSW             11
+#define NBACKSW              9
     { "nobackup", 0 },
-#define ALIASW              12
+#define ALIASW              10
     { "alias aliasfile", 0 },
-#define NALIASW             13
+#define NALIASW             11
     { "noalias", 0 },
-#define WIDTHSW             14
+#define WIDTHSW             12
     { "width columns", 0 },
-#define VERSIONSW           15
+#define VERSIONSW           13
     { "version", 0 },
-#define        HELPSW              16
+#define        HELPSW              14
     { "help", 0 },
-#define        DEBUGSW             17
+#define        DEBUGSW             15
     { "debug", -5 },
-#define        DISTSW              18
+#define        DISTSW              16
     { "dist", -4 },            /* interface from dist */
-#define CHKSW               19
-    { "check", -5 },           /* interface from whom */
-#define NCHKSW              20
-    { "nocheck", -7 },         /* interface from whom */
-#define WHOMSW              21
+#define WHOMSW              17
     { "whom", -4 },            /* interface from whom */
-#define PUSHSW              22 /* fork to sendmail then exit */
+#define PUSHSW              18 /* fork to sendmail then exit */
     { "push", -4 },
-#define NPUSHSW             23 /* exec sendmail */
+#define NPUSHSW             19 /* exec sendmail */
     { "nopush", -6 },
-#define LIBSW               24
+#define LIBSW               20
     { "library directory", -7 },
-#define        ANNOSW              25
+#define        ANNOSW              21
     { "idanno number", -6 },
     { NULL, 0 }
 };
@@ -88,7 +78,7 @@ struct swit switches[] = {
 #define        HSUB    0x0004          /* Subject: header */
 #define        HTRY    0x0008          /* try to send to addrs on header */
 #define        HBCC    0x0010          /* don't output this header */
-#define        HMNG    0x0020          /* mung this header */
+/* #define     HMNG    0x0020  */      /* munge this header */
 #define        HNGR    0x0040          /* no groups allowed in this header */
 #define        HFCC    0x0080          /* FCC: type header */
 #define        HNIL    0x0100          /* okay for this header not to have addrs */
@@ -122,6 +112,7 @@ static struct headers NHeaders[] = {
     { "Bcc",         HADR|HTRY|HBCC|HNIL, MINV },
     { "Message-Id",  HBAD,                0 },
     { "Fcc",         HFCC,                0 },
+    { "Envelope-From",HIGN,               0 },
     { NULL,          0,                   0 }
 };
 
@@ -138,6 +129,7 @@ static struct headers RHeaders[] = {
     { "Resent-Fcc",        HFCC,           0 },
     { "Reply-To",          HADR,           0 },
     { "Fcc",               HIGN,           0 },
+    { "Envelope-From",     HIGN,           0 },
     { NULL,                0,              0 }
 };
 
@@ -180,8 +172,6 @@ extern char *sendmail;
 extern char *getfullname (void);
 extern char *getusername (void);
 
-extern boolean  draft_from_masquerading;  /* defined in mts.c */
-
 /*
  * static prototypes
  */
@@ -191,7 +181,7 @@ static void finish_headers (FILE *);
 static int get_header (char *, struct headers *);
 static void putadr (char *, struct mailname *);
 static int putone (char *, int, int);
-static void insert_fcc (struct headers *, char *);
+static void insert_fcc (struct headers *, unsigned char *);
 static void file (char *);
 static void fcc (char *, char *);
 
@@ -234,10 +224,10 @@ main (int argc, char **argv)
                case HELPSW: 
                    snprintf (buf, sizeof(buf), "%s [switches] file", invo_name);
                    print_help (buf, switches, 1);
-                   done (1);
+                   done (0);
                case VERSIONSW:
                    print_version(invo_name);
-                   done (1);
+                   done (0);
 
                case DEBUGSW: 
                    debug++;
@@ -352,15 +342,8 @@ main (int argc, char **argv)
        out = stdout;
     }
     else {
-#ifdef HAVE_MKSTEMP
            if ((out = fdopen( mkstemp (tmpfil), "w" )) == NULL )
                adios (tmpfil, "unable to create");
-#else
-           mktemp (tmpfil);
-           if ((out = fopen (tmpfil, "w")) == NULL)
-               adios (tmpfil, "unable to create");
-           chmod (tmpfil, 0600);
-#endif
        }
 
     hdrtab = (msgstate == normal) ? NHeaders : RHeaders;
@@ -580,16 +563,7 @@ finish_headers (FILE *out)
            if (!(msgflags & MDAT))
                fprintf (out, "Date: %s\n", dtimenow (0));
            
-           if (msgflags & MFRM) {
-               /* There was already a From: in the draft.  Don't add one. */
-               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). */
-                   fprintf (out, "Sender: %s\n", from);
-           }
-           else
+           if (!(msgflags & MFRM))
                fprintf (out, "From: %s\n", signature);
           
 #ifdef notdef
@@ -601,16 +575,7 @@ finish_headers (FILE *out)
        case resent: 
            if (!(msgflags & MRDT))
                fprintf (out, "Resent-Date: %s\n", dtimenow(0));
-           if (msgflags & MRFM) {
-               /* There was already a Resent-From: in draft.  Don't add one. */
-               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). */
-                   fprintf (out, "Resent-Sender: %s\n", from);
-           }
-           else
+           if (!(msgflags & MRFM))
                /* Construct a Resent-From: header. */
                fprintf (out, "Resent-From: %s\n", signature);
 #ifdef notdef
@@ -720,9 +685,9 @@ putone (char *adr, int pos, int indent)
 
 
 static void
-insert_fcc (struct headers *hdr, char *pp)
+insert_fcc (struct headers *hdr, unsigned char *pp)
 {
-    char   *cp;
+    unsigned char   *cp;
 
     for (cp = pp; isspace (*cp); cp++)
        continue;
@@ -749,28 +714,13 @@ make_bcc_file (void)
     char *vec[6];
     FILE * in, *out;
 
-#ifdef HAVE_MKSTEMP
     fd = mkstemp(bccfil);
     if (fd == -1 || (out = fdopen(fd, "w")) == NULL)
        adios (bccfil, "unable to create");
-#else
-    mktemp (bccfil);
-    if ((out = fopen (bccfil, "w")) == NULL)
-       adios (bccfil, "unable to create");
-#endif
     chmod (bccfil, 0600);
 
     fprintf (out, "Date: %s\n", dtimenow (0));
-    if (msgflags & MFRM) {
-      /* There was already a From: in the draft.  Don't add one. */
-      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). */
-        fprintf (out, "Sender: %s\n", from);
-    }
-    else
+    if (!(msgflags & MFRM))
       /* Construct a From: header. */
       fprintf (out, "From: %s\n", signature);
     if (subject)