tool: Fixed incorrect return code if command line parser runs out of memory

In the rare instance where getparameter() may return PARAM_NO_MEM whilst
parsing a URL, cURL would return this error code, which is equivalent to
CURLE_FTP_ACCEPT_FAILED in cURL error codes terms.

Instead, return CURLE_FAILED_INIT and output the failure reason as per
the other usage of getparameter().
This commit is contained in:
Steve Holme 2014-01-19 12:20:01 +00:00
parent db1beab1d7
commit aba98991a5
1 changed files with 15 additions and 17 deletions

View File

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@ -286,12 +286,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
/* Parse options */
for(i = 1, stillflags = TRUE; i < argc; i++) {
char *orig_opt = argv[i];
if(stillflags &&
('-' == argv[i][0])) {
char *nextarg;
bool passarg;
char *orig_opt = argv[i];
char *flag = argv[i];
if(curlx_strequal("--", argv[i]))
@ -302,6 +302,16 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
nextarg = (i < (argc-1)) ? argv[i+1] : NULL;
res = getparameter(flag, nextarg, &passarg, config);
if(!res && passarg) /* we're supposed to skip this */
i++;
}
}
else {
bool used;
/* just add the URL please */
res = getparameter((char *)"--url", argv[i], &used, config);
}
if(res) {
int retval = CURLE_OK;
if(res != PARAM_HELP_REQUESTED) {
@ -312,18 +322,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
res = retval;
goto quit_curl;
}
if(passarg) /* we're supposed to skip this */
i++;
}
}
else {
bool used;
/* just add the URL please */
res = getparameter((char *)"--url", argv[i], &used, config);
if(res)
goto quit_curl;
}
}
if(config->userpwd && !config->xoauth2_bearer) {