tool_paramhlp: Added URL index to password prompt for multiple operations
authorSteve Holme <steve_holme@hotmail.com>
Sun, 16 Feb 2014 11:10:09 +0000 (11:10 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 16 Feb 2014 11:13:16 +0000 (11:13 +0000)
src/tool_operate.c
src/tool_paramhlp.c
src/tool_paramhlp.h

index 6e07157..efe9bfc 100644 (file)
@@ -1838,11 +1838,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
     }
     /* Perform the main operations */
     else {
+      size_t count = 0;
       struct Configurable *operation = config;
 
       /* Get the required aguments for each operation */
       while(!result && operation) {
-        result = get_args(operation);
+        result = get_args(operation, count++);
 
         operation = operation->next;
       }
index 6dcee8d..d4f1368 100644 (file)
@@ -366,7 +366,9 @@ ParameterError str2offset(curl_off_t *val, const char *str)
   return PARAM_BAD_NUMERIC;
 }
 
-static CURLcode checkpasswd(const char *kind, /* for what purpose */
+static CURLcode checkpasswd(const char *kind,   /* for what purpose */
+                            const size_t index, /* operation index */
+                            const bool last,    /* TRUE if last operation */
                             char **userpwd)   /* pointer to allocated string */
 {
   char *psep;
@@ -393,9 +395,15 @@ static CURLcode checkpasswd(const char *kind, /* for what purpose */
       *osep = '\0';
 
     /* build a nice-looking prompt */
-    curlx_msnprintf(prompt, sizeof(prompt),
-                    "Enter %s password for user '%s':",
-                    kind, *userpwd);
+    if(!index && last)
+      curlx_msnprintf(prompt, sizeof(prompt),
+                      "Enter %s password for user '%s':",
+                      kind, *userpwd);
+    else
+      curlx_msnprintf(prompt, sizeof(prompt),
+                      "Enter %s password for user '%s' on URL #%"
+                      CURL_FORMAT_CURL_OFF_TU ":",
+                      kind, *userpwd, index + 1);
 
     /* get password */
     getpass_r(prompt, passwd, sizeof(passwd));
@@ -473,20 +481,21 @@ static char *my_useragent(void)
   return strdup(CURL_NAME "/" CURL_VERSION);
 }
 
-CURLcode get_args(struct Configurable *config)
+CURLcode get_args(struct Configurable *config, const size_t index)
 {
   CURLcode result = CURLE_OK;
+  bool last = (config->next ? FALSE : TRUE);
 
   /* Check we have a password for the given host user */
   if(config->userpwd && !config->xoauth2_bearer) {
-    result = checkpasswd("host", &config->userpwd);
+    result = checkpasswd("host", index, last, &config->userpwd);
     if(result)
       return result;
   }
 
   /* Check we have a password for the given proxy user */
   if(config->proxyuserpwd) {
-    result = checkpasswd("proxy", &config->proxyuserpwd);
+    result = checkpasswd("proxy", index, last, &config->proxyuserpwd);
     if(result)
       return result;
   }
index 8441374..e56d636 100644 (file)
@@ -40,7 +40,7 @@ long proto2num(struct Configurable *config, long *val, const char *str);
 
 ParameterError str2offset(curl_off_t *val, const char *str);
 
-CURLcode get_args(struct Configurable *config);
+CURLcode get_args(struct Configurable *config, const size_t index);
 
 ParameterError add2list(struct curl_slist **list, const char *ptr);