X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/61e09274bb3338efbd9c50f797751853c99dba3b..fc69a9cd8f854da20fc2f4cf99fcf726958485f5:/uip/post.c diff --git a/uip/post.c b/uip/post.c index 716f70e3..aadc6271 100644 --- a/uip/post.c +++ b/uip/post.c @@ -15,13 +15,9 @@ #include #include #include - #include #include -#include -#include - #ifdef HAVE_SYS_TIME_H # include #endif @@ -88,10 +84,12 @@ 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, @@ -468,7 +466,11 @@ main (int argc, char **argv) continue; case TLSSW: - tls++; + tls = 1; + continue; + + case INITTLSSW: + tls = 2; continue; case NTLSSW: @@ -493,6 +495,13 @@ main (int argc, char **argv) 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]); @@ -1071,7 +1080,7 @@ get_header (char *header, struct headers *table) 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; @@ -1172,9 +1181,11 @@ insert (struct mailname *np) : &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; @@ -1506,7 +1517,8 @@ post (char *file, int bccque, int talk, char *envelope) 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); @@ -1519,17 +1531,16 @@ post (char *file, int bccque, int talk, char *envelope) 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: