Skip to content

Commit

Permalink
tool_paramhlp: Added URL index to password prompt for multiple operat…
Browse files Browse the repository at this point in the history
…ions
  • Loading branch information
captain-caveman2k committed Feb 16, 2014
1 parent 013e9a1 commit f3bae6e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
3 changes: 2 additions & 1 deletion src/tool_operate.c
Expand Up @@ -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;
}
Expand Down
23 changes: 16 additions & 7 deletions src/tool_paramhlp.c
Expand Up @@ -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;
Expand All @@ -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));
Expand Down Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/tool_paramhlp.h
Expand Up @@ -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);

Expand Down

0 comments on commit f3bae6e

Please sign in to comment.