#include <h/dropsbr.h>
#include <h/mime.h>
#include <h/utils.h>
-
#include <h/tws.h>
#include <h/mts.h>
-#include <errno.h>
-#include <signal.h>
-
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
X("user", SASLminc(-4), USERSW) \
X("port server port name/number", 4, PORTSW) \
X("tls", TLSminc(-3), TLSSW) \
+ X("initialtls", TLSminc(-10), INITTLSSW) \
X("notls", TLSminc(-5), NTLSSW) \
X("fileproc", -4, FILEPROCSW) \
X("mhlproc", -3, MHLPROCSW) \
X("mts smtp|sendmail/smtp|sendmail/pipe", 2, MTSSW) \
+ X("credentials legacy|file:filename", 0, CREDENTIALSSW) \
X("messageid localname|random", 2, MESSAGEIDSW) \
#define X(sw, minchars, id) id,
continue;
case TLSSW:
- tls++;
+ tls = 1;
+ continue;
+
+ case INITTLSSW:
+ tls = 2;
continue;
case NTLSSW:
save_mts_method (cp);
continue;
+ case CREDENTIALSSW: {
+ if (!(cp = *argp++) || *cp == '-')
+ adios (NULL, "missing argument to %s", argp[-2]);
+ add_profile_entry ("credentials", cp);
+ continue;
+ }
+
case MESSAGEIDSW:
if (!(cp = *argp++) || *cp == '-')
adios (NULL, "missing argument to %s", argp[-2]);
struct headers *h;
for (h = table; h->value; h++)
- if (!mh_strcasecmp (header, h->value))
+ if (!strcasecmp (header ? header : "", h->value ? h->value : ""))
return (h - table);
return NOTOK;
: &netaddrs;
mp->m_next;
mp = mp->m_next)
- 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)
+ if (!strcasecmp (np->m_host ? np->m_host : "",
+ mp->m_next->m_host ? mp->m_next->m_host : "") &&
+ !strcasecmp (np->m_mbox ? np->m_mbox : "",
+ mp->m_next->m_mbox ? mp->m_next->m_mbox : "") &&
+ np->m_bcc == mp->m_next->m_bcc)
return 0;
mp->m_next = np;
sigon ();
if (sm_mts == MTS_SENDMAIL_PIPE) {
- char *sargv[16], **argp;
+ char **argp, *program;
+ int argc;
for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
sleep (5);
adios (file, "can't reopen for sendmail");
}
- argp = sargv;
- *argp++ = "sendmail";
- *argp++ = "-t"; /* read msg for recipients */
- *argp++ = "-i"; /* don't stop on "." */
+ argp = argsplit(sendmail, &program, &argc);
+ argp[argc++] = "-t"; /* read msg for recipients */
+ argp[argc++] = "-i"; /* don't stop on "." */
if (whomsw)
- *argp++ = "-bv";
+ argp[argc++] = "-bv";
if (snoop)
- *argp++ = "-v";
- *argp = NULL;
+ argp[argc++] = "-v";
+ argp[argc] = NULL;
- execv (sendmail, sargv);
+ execv (program, argp);
adios (sendmail, "can't exec");
default: