#define FCCS 10 /* max number of fccs allowed */
+#define uptolow(c) ((isalpha(c) && isupper (c)) ? tolower (c) : c)
+
/* In the following array of structures, the numeric second field of the
structures (minchars) is apparently used like this:
static void pl (void);
static void anno (void);
static int annoaux (struct mailname *);
-static void insert_fcc (struct headers *, char *);
+static void insert_fcc (struct headers *, unsigned char *);
static void make_bcc_file (int);
static void verify_all_addresses (int);
static void chkadr (void);
if (verbose)
printf (partno ? "Partial Message #%s Processed\n" : "Message Processed\n",
partno);
- return done (0);
+ done (0);
+ return 1;
}
static void
start_headers (void)
{
- char *cp;
+ unsigned char *cp;
char myhost[BUFSIZ], sigbuf[BUFSIZ];
struct mailname *mp;
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;
: &netaddrs;
mp->m_next;
mp = mp->m_next)
- if (!strcasecmp (np->m_host, mp->m_next->m_host)
- && !strcasecmp (np->m_mbox, mp->m_next->m_mbox)
+ if (!mh_strcasecmp (np->m_host, mp->m_next->m_host)
+ && !mh_strcasecmp (np->m_mbox, mp->m_next->m_mbox)
&& np->m_bcc == mp->m_next->m_bcc)
return 0;
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;
if (msgid)
fprintf (out, "Message-ID: <%d.%ld@%s>\n",
(int) getpid (), (long) tclock, LocalName ());
- fprintf (out, "From: %s\n", signature);
+ 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
+ /* Construct a From: header. */
+ fprintf (out, "From: %s\n", signature);
if (subject)
fprintf (out, "Subject: %s", subject);
fprintf (out, "BCC:\n");
find_prefix (void)
{
int len, result;
- char buffer[BUFSIZ];
+ unsigned char buffer[BUFSIZ];
FILE *in;
if ((in = fopen (tmpfil, "r")) == NULL)
result = OK;
while (fgets (buffer, sizeof(buffer) - 1, in))
if (buffer[0] == '-' && buffer[1] == '-') {
- char *cp;
+ unsigned char *cp;
for (cp = buffer + strlen (buffer) - 1; cp >= buffer; cp--)
if (!isspace (*cp))