Commit f3bae6ed authored by Steve Holme's avatar Steve Holme
Browse files

tool_paramhlp: Added URL index to password prompt for multiple operations

parent 013e9a11
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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;
      }
+16 −7
Original line number Diff line number Diff line
@@ -367,6 +367,8 @@ ParameterError str2offset(curl_off_t *val, const char *str)
}

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 */
    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;
  }
+1 −1
Original line number Diff line number Diff line
@@ -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);