]> diplodocus.org Git - nmh/blobdiff - uip/mhlogin.c
Hacked m_Eom() to fix test-eom-align.
[nmh] / uip / mhlogin.c
index 88912b5ccea5166ae405923b478781acc5798ad9..1cc1c23ca7d581623dca9d4a958e2c24da04c1f9 100644 (file)
@@ -1,5 +1,4 @@
-/*
- * mhlogin.c -- login to external (OAuth) services
+/* mhlogin.c -- login to external (OAuth) services
  *
  * This code is Copyright (c) 2014, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -11,7 +10,9 @@
 #include <string.h>
 
 #include <h/mh.h>
+#include <h/utils.h>
 #include <h/oauth.h>
+#include "../sbr/lock_file.h"
 
 #define MHLOGIN_SWITCHES \
     X("user username", 0, USERSW) \
@@ -35,13 +36,12 @@ DEFINE_SWITCH_ARRAY(MHLOGIN, switches);
 static char *
 geta (void)
 {
-    char *cp;
     static char line[BUFSIZ];
 
     if (fgets(line, sizeof(line), stdin) == NULL)
        done (1);
-    if ((cp = strchr(line, '\n')))
-       *cp = 0;
+    trim_suffix_c(line, '\n');
+
     return line;
 }
 
@@ -71,7 +71,7 @@ do_login(const char *svc, const char *user, const char *browser, int snoop)
         mh_oauth_log_to(stderr, ctx);
     }
 
-    fn = getcpy(mh_oauth_cred_fn(ctx));
+    fn = mh_xstrdup(mh_oauth_cred_fn(svc));
 
     if ((url = mh_oauth_get_authorize_url(ctx)) == NULL) {
       adios(NULL, mh_oauth_get_err_string(ctx));
@@ -101,14 +101,15 @@ do_login(const char *svc, const char *user, const char *browser, int snoop)
     fflush(stdout);
     code = geta();
 
-    while ((cred = mh_oauth_authorize(code, ctx)) == NULL
-           && mh_oauth_get_err_code(ctx) == MH_OAUTH_BAD_GRANT) {
-      printf("Code rejected; try again? ");
+    while (!*code ||
+           ((cred = mh_oauth_authorize(code, ctx)) == NULL
+            && mh_oauth_get_err_code(ctx) == MH_OAUTH_BAD_GRANT)) {
+      printf(!*code  ?  "Empty code; try again? "  :  "Code rejected; try again? ");
       fflush(stdout);
       code = geta();
     }
     if (cred == NULL) {
-      advise(NULL, "error exchanging code for OAuth2 token");
+      inform("error exchanging code for OAuth2 token");
       adios(NULL, mh_oauth_get_err_string(ctx));
     }