X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/2e768e3cc0ce768373d3320eca4cdd08b8cf646a..2d8a2d23b4c17ffb277d008f4e011fcc2bb2fa7e:/uip/post.c?ds=inline diff --git a/uip/post.c b/uip/post.c index 9b8bcbef..69f5b821 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,21 @@ main (int argc, char **argv) save_mts_method (cp); continue; + case CREDENTIALSSW: { + /* post doesn't read the profile, so insert credentials + entry the hard way. */ + struct node *np = (struct node *) mh_xmalloc (sizeof *np); + + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + np->n_name = "credentials"; + np->n_field = cp; + np->n_context = 0; + np->n_next = m_defs; + m_defs = np; + continue; + } + case MESSAGEIDSW: if (!(cp = *argp++) || *cp == '-') adios (NULL, "missing argument to %s", argp[-2]); @@ -1071,7 +1088,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 +1189,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;