Updated #include's to point to new location of mts.h on mts/generic
[mmh] / uip / spost.c
index 58d4ae3..18d1152 100644 (file)
@@ -13,7 +13,8 @@
 #include <h/addrsbr.h>
 #include <h/aliasbr.h>
 #include <h/dropsbr.h>
-#include <zotnet/tws/tws.h>
+#include <h/tws.h>
+#include <mts/generic/mts.h>
 
 #define        uptolow(c)      ((isalpha(c) && isupper (c)) ? tolower (c) : c)
 
@@ -54,7 +55,7 @@ struct swit switches[] = {
 #define VERSIONSW           15
     { "version", 0 },
 #define        HELPSW              16
-    { "help", 4 },
+    { "help", 0 },
 #define        DEBUGSW             17
     { "debug", -5 },
 #define        DISTSW              18
@@ -346,10 +347,15 @@ 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;
@@ -450,6 +456,7 @@ main (int argc, char **argv)
     }
     execv ( sendmail, sargv);
     adios ( sendmail, "can't exec");
+    return 0;  /* dead code to satisfy the compiler */
 }
 
 /* DRAFT GENERATION */
@@ -485,7 +492,7 @@ putfmt (char *name, char *str, FILE *out)
     if (hdr->flags & HFCC) {
        if ((cp = strrchr(str, '\n')))
            *cp = 0;
-       for (cp = pp = str; cp = strchr(pp, ','); pp = cp) {
+       for (cp = pp = str; (cp = strchr(pp, ',')); pp = cp) {
            *cp++ = 0;
            insert_fcc (hdr, pp);
        }
@@ -500,7 +507,7 @@ putfmt (char *name, char *str, FILE *out)
     }
 #endif /* notdef */
 
-    if (*str != '\n' && *str != '\0')
+    if (*str != '\n' && *str != '\0') {
        if (aliasflg && hdr->flags & HTRY) {
            /* this header contains address(es) that we have to do
             * alias expansion on.  Because of the saved state in
@@ -525,8 +532,21 @@ putfmt (char *name, char *str, FILE *out)
            f = mp->m_next; mp->m_next = 0;
            putadr( name, f );
        } else {
+           /* The author(s) of spost decided that alias substitution wasn't
+              necessary for the non-HTRY headers.  Unfortunately, one of those
+              headers is "From:", and having alias substitution work on that is
+              extremely useful for someone with a lot of POP3 email accounts or
+              aliases.  post supports aliasing of "From:"...
+
+              Since "From:"-processing is incompletely implemented in this
+              unsupported and undocumented spost backend, I'm not going to take
+              the time to implement my new draft-From:-based email address
+              masquerading.  If I do ever implement it here, I'd almost
+              certainly want to implement "From:" line alias processing as
+              well.  -- Dan Harkless <dan-nmh@dilvish.speed.net> */
            fprintf (out, "%s: %s", name, str );
        }
+    }
 }
 
 
@@ -707,9 +727,15 @@ 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));