]> diplodocus.org Git - nmh/blobdiff - uip/whatnowsbr.c
Alright, things compile now, but don't link yet; need to write the
[nmh] / uip / whatnowsbr.c
index 223d3f0f9971c46de8392cad519d3e0541aef9e7..03c0bbba62002c53b5203a7f8ac213ba3ad0793f 100644 (file)
@@ -237,9 +237,9 @@ WhatNow (int argc, char **argv)
     snprintf (prompt, sizeof(prompt), myprompt, invo_name);
     for (;;) {
 #ifdef READLINE_SUPPORT
-       if (!(argp = getans_via_readline (prompt, aleqs))) {
+       if (!(argp = read_switch_multiword_via_readline (prompt, aleqs))) {
 #else /* ! READLINE_SUPPORT */
-       if (!(argp = getans (prompt, aleqs))) {
+       if (!(argp = read_switch_multiword (prompt, aleqs))) {
 #endif /* READLINE_SUPPORT */
            (void) m_unlink (LINK);
            done (1);
@@ -945,12 +945,12 @@ buildfile (char **argp, char *file)
     X("draftfolder +folder", -6, SDRFSW) \
     X("draftmessage msg", -6, SDRMSW) \
     X("nodraftfolder", -3, SNDRFSW) \
-    X("sasl", SASLminc(-4), SASLSW) \
-    X("nosasl", SASLminc(-6), NOSASLSW) \
-    X("saslmaxssf", SASLminc(-10), SASLMXSSFSW) \
-    X("saslmech", SASLminc(-5), SASLMECHSW) \
-    X("oauth service", 5, OAUTHSW) \
-    X("user username", SASLminc(-4), USERSW) \
+    X("sasl", SASLminc(4), SASLSW) \
+    X("nosasl", SASLminc(6), NOSASLSW) \
+    X("saslmaxssf", SASLminc(10), SASLMXSSFSW) \
+    X("saslmech", SASLminc(5), SASLMECHSW) \
+    X("authservice", SASLminc(0), AUTHSERVICESW) \
+    X("user username", SASLminc(4), USERSW) \
     X("attach fieldname", 6, SNDATTACHSW) \
     X("noattach", 0, SNDNOATTACHSW) \
     X("attachformat", 7, SNDATTACHFORMAT) \
@@ -990,7 +990,8 @@ sendit (char *sp, char **arg, char *file, int pushed)
     int        vecp, n = 1;
     char *cp, buf[BUFSIZ], **argp, *program;
     char **arguments, *savearg[MAXARGS], **vec;
-    const char *user = NULL, *oauth_svc = NULL;
+    const char *user = NULL, *saslmech = NULL;
+    char *auth_svc = NULL;
     int snoop = 0;
     struct stat st;
 
@@ -1145,13 +1146,26 @@ sendit (char *sp, char **arg, char *file, int pushed)
                    vec[vecp++] = --cp;
                    continue;
 
+               case AUTHSERVICESW:
+#ifdef OAUTH_SUPPORT
+                   if (!(auth_svc = *argp++) || *auth_svc == '-')
+                       adios (NULL, "missing argument to %s", argp[-2]);
+#else
+                    NMH_UNUSED (user);
+                    NMH_UNUSED (auth_svc);
+                   adios (NULL, "not built with OAuth support");
+#endif
+                   continue;
+
+               case SASLMECHSW:
+                    saslmech = *argp;
+                   /* fall thru */
                case ALIASW:
                case FILTSW:
                case WIDTHSW:
                case CLIESW:
                case SERVSW:
                case SASLMXSSFSW:
-               case SASLMECHSW:
                case USERSW:
                case PORTSW:
                case MTSSM:
@@ -1166,18 +1180,6 @@ sendit (char *sp, char **arg, char *file, int pushed)
                     user = cp;
                    continue;
 
-                case OAUTHSW:
-#ifdef OAUTH_SUPPORT
-                   if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
-                    oauth_svc = cp;
-#else
-                    NMH_UNUSED (user);
-                    NMH_UNUSED (oauth_svc);
-                    adios (NULL, "not built with OAuth support");
-#endif
-                   continue;
-
                case SDRFSW:
                case SDRMSW:
                    if (!(cp = *argp++) || *cp == '-') {
@@ -1245,15 +1247,17 @@ sendit (char *sp, char **arg, char *file, int pushed)
     }
 
 #ifdef OAUTH_SUPPORT
-    if (oauth_svc != NULL) {
+    if (auth_svc == NULL) {
+        if (saslmech  &&  ! strcasecmp(saslmech, "xoauth2")) {
+            adios (NULL, "must specify -authservice with -saslmech xoauth2");
+        }
+    } else {
         if (user == NULL) {
-            adios (NULL, "must specify -user with -oauth");
+            adios (NULL, "must specify -user with -saslmech xoauth2");
         }
-
-        vec[vecp++] = "-oauth";
-        vec[vecp++] = mh_oauth_do_xoauth (user, oauth_svc,
-                                         snoop ? stderr : NULL);
     }
+#else
+    NMH_UNUSED(saslmech);
 #endif /* OAUTH_SUPPORT */
 
     if (altmsg == NULL || stat (altmsg, &st) == NOTOK) {
@@ -1266,7 +1270,7 @@ sendit (char *sp, char **arg, char *file, int pushed)
 
     closefds (3);
 
-    if (sendsbr (vec, vecp, program, file, &st, 1) == OK)
+    if (sendsbr (vec, vecp, program, file, &st, 1, auth_svc) == OK)
        done (0);
 }
 
@@ -1323,7 +1327,7 @@ removefile (char *drft)
 
 
 /*
- * Return 1 if we already have a MIME-Verson header, 0 otherwise.
+ * Return 1 if we already have a MIME-Version header, 0 otherwise.
  */
 
 static int