X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/8e0f9bd3daae9d05dec58026d5a5924367e4e874..c02f66668d32980a3770e450061c5b96b9f31690:/uip/send.c diff --git a/uip/send.c b/uip/send.c index a9d48420..2d162a7a 100644 --- a/uip/send.c +++ b/uip/send.c @@ -62,10 +62,9 @@ X("server host", 6, SERVSW) \ X("snoop", 5, SNOOPSW) \ X("sasl", SASLminc(4), SASLSW) \ - X("nosasl", SASLminc(-6), NOSASLSW) \ - X("saslmaxssf", SASLminc(-10), SASLMXSSFSW) \ - X("saslmech mechanism", SASLminc(-5), SASLMECHSW) \ - X("authservice", SASLminc(-11), AUTHSERVICESW) \ + X("nosasl", SASLminc(6), NOSASLSW) \ + X("saslmech mechanism", SASLminc(6), SASLMECHSW) \ + X("authservice", SASLminc(0), AUTHSERVICESW) \ X("user username", SASLminc(-4), USERSW) \ X("attach", -6, ATTACHSW) \ X("noattach", -8, NOATTACHSW) \ @@ -74,6 +73,8 @@ X("tls", TLSminc(-3), TLSSW) \ X("initialtls", TLSminc(-10), INITTLSSW) \ X("notls", TLSminc(-5), NTLSSW) \ + X("certverify", TLSminc(-10), CERTVERSW) \ + X("nocertverify", TLSminc(-12), NOCERTVERSW) \ X("sendmail program", 0, MTSSM) \ X("mts smtp|sendmail/smtp|sendmail/pipe", 2, MTSSW) \ X("messageid localname|random", 2, MESSAGEIDSW) \ @@ -257,6 +258,8 @@ main (int argc, char **argv) case TLSSW: case INITTLSSW: case NTLSSW: + case CERTVERSW: + case NOCERTVERSW: vec[vecp++] = --cp; continue; @@ -268,11 +271,6 @@ main (int argc, char **argv) user = cp; continue; - case SASLMECHSW: - if (!(saslmech = *argp++) || *saslmech == '-') - adios (NULL, "missing argument to %s", argp[-2]); - continue; - case AUTHSERVICESW: #ifdef OAUTH_SUPPORT if (!(auth_svc = *argp++) || *auth_svc == '-') @@ -282,12 +280,16 @@ main (int argc, char **argv) #endif continue; + case SASLMECHSW: + if (!(saslmech = *argp) || *saslmech == '-') + adios (NULL, "missing argument to %s", argp[-1]); + /* Fall through */ + case ALIASW: case FILTSW: case WIDTHSW: case CLIESW: case SERVSW: - case SASLMXSSFSW: case PORTSW: case MTSSM: case MTSSW: @@ -320,7 +322,7 @@ main (int argc, char **argv) if ((cp = context_find ("Aliasfile"))) { char *dp = NULL; - for (ap = brkstring(dp = getcpy(cp), " ", "\n"); ap && *ap; ap++) { + for (ap = brkstring(dp = mh_xstrdup(cp), " ", "\n"); ap && *ap; ap++) { vec[vecp++] = "-alias"; vec[vecp++] = *ap; } @@ -333,7 +335,7 @@ main (int argc, char **argv) adios (msgs[0], "unable to stat draft file"); cp = concat ("Use \"", msgs[0], "\"? ", NULL); for (status = LISTDSW; status != YESW;) { - if (!(argp = getans (cp, anyl))) + if (!(argp = read_switch_multiword (cp, anyl))) done (1); switch (status = smatch (*argp, anyl)) { case NOSW: @@ -379,7 +381,7 @@ main (int argc, char **argv) for (msgp = 0, msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) { if (is_selected (mp, msgnum)) { - msgs[msgp++] = getcpy (m_name (msgnum)); + msgs[msgp++] = mh_xstrdup(m_name (msgnum)); unset_exists (mp, msgnum); } } @@ -416,7 +418,7 @@ go_to_it: adios(NULL, "unable to create temporary file in %s", get_temp_dir()); } - distfile = getcpy (cp); + distfile = mh_xstrdup(cp); (void) m_unlink(distfile); if (link (altmsg, distfile) == NOTOK) { /* Cygwin with FAT32 filesystem produces EPERM. */ @@ -431,7 +433,7 @@ go_to_it: adios(NULL, "unable to create temporary file in %s", get_temp_dir()); } - distfile = getcpy (cp); + distfile = mh_xstrdup(cp); { int in, out; struct stat st; @@ -459,13 +461,6 @@ go_to_it: if (user == NULL) { adios (NULL, "must specify -user with -saslmech xoauth2"); } - - vec[vecp++] = "-authservice"; - if (saslmech && ! strcasecmp(saslmech, "xoauth2")) { - vec[vecp++] = mh_oauth_do_xoauth (user, auth_svc, snoop ? stderr : NULL); - } else { - vec[vecp++] = auth_svc; - } } #else NMH_UNUSED(auth_svc); @@ -485,7 +480,7 @@ go_to_it: closefds (3); for (msgnum = 0; msgnum < msgp; msgnum++) { - switch (sendsbr (vec, vecp, program, msgs[msgnum], &st, 1)) { + switch (sendsbr (vec, vecp, program, msgs[msgnum], &st, 1, auth_svc)) { case DONE: done (++status); case NOTOK: