* 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.
*/
#include <h/mh.h>
#include <h/aliasbr.h>
#include <h/dropsbr.h>
#include <h/tws.h>
-#include <zotnet/mts/mts.h>
-
-#define uptolow(c) ((isalpha(c) && isupper (c)) ? tolower (c) : c)
+#include <h/mts.h>
+#include <h/utils.h>
#define MAX_SM_FIELD 1476 /* < largest hdr field sendmail will accept */
#define FCCS 10 /* max number of fccs allowed */
{ "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 }
};
#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 */
{ "Bcc", HADR|HTRY|HBCC|HNIL, MINV },
{ "Message-Id", HBAD, 0 },
{ "Fcc", HFCC, 0 },
+ { "Envelope-From",HIGN, 0 },
{ NULL, 0, 0 }
};
{ "Resent-Fcc", HFCC, 0 },
{ "Reply-To", HADR, 0 },
{ "Fcc", HIGN, 0 },
+ { "Envelope-From", HIGN, 0 },
{ NULL, 0, 0 }
};
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 *);
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;
case normal:
if (!(msgflags & MDAT))
fprintf (out, "Date: %s\n", dtimenow (0));
- if (msgflags & MFRM)
- fprintf (out, "Sender: %s\n", from);
- else
+
+ if (!(msgflags & MFRM))
fprintf (out, "From: %s\n", signature);
+
#ifdef notdef
if (!(msgflags & MVIS))
fprintf (out, "Bcc: Blind Distribution List: ;\n");
case resent:
if (!(msgflags & MRDT))
fprintf (out, "Resent-Date: %s\n", dtimenow(0));
- if (msgflags & MRFM)
- 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
if (!(msgflags & MVIS))
struct headers *h;
for (h = table; h->value; h++)
- if (!strcasecmp (header, h->value))
+ if (!mh_strcasecmp (header, h->value))
return (h - table);
return NOTOK;
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;
char *vec[6];
FILE * in, *out;
- mktemp (bccfil);
- if ((out = fopen (bccfil, "w")) == NULL)
+ fd = mkstemp(bccfil);
+ if (fd == -1 || (out = fdopen(fd, "w")) == NULL)
adios (bccfil, "unable to create");
chmod (bccfil, 0600);
fprintf (out, "Date: %s\n", dtimenow (0));
- fprintf (out, "From: %s\n", signature);
+ if (!(msgflags & MFRM))
+ /* Construct a From: header. */
+ fprintf (out, "From: %s\n", signature);
if (subject)
fprintf (out, "Subject: %s", subject);
fprintf (out, "BCC:\n\n------- Blind-Carbon-Copy\n\n");