aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tool_getparam.c44
-rw-r--r--src/tool_getparam.h5
-rw-r--r--src/tool_operate.c47
3 files changed, 56 insertions, 40 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index dcb358411..2938f88b2 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -1847,3 +1847,47 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
return PARAM_OK;
}
+
+ParameterError parse_args(struct Configurable *config, int argc,
+ argv_item_t argv[])
+{
+ int i;
+ bool stillflags;
+ char *orig_opt;
+ ParameterError result = PARAM_OK;
+
+ for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
+ orig_opt = argv[i];
+
+ if(stillflags && ('-' == argv[i][0])) {
+ char *nextarg;
+ bool passarg;
+ char *flag = argv[i];
+
+ if(curlx_strequal("--", argv[i]))
+ /* This indicates the end of the flags and thus enables the
+ following (URL) argument to start with -. */
+ stillflags = FALSE;
+ else {
+ nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL;
+
+ result = getparameter(flag, nextarg, &passarg, config);
+ if(!result && passarg)
+ i++; /* we're supposed to skip this */
+ }
+ }
+ else {
+ bool used;
+
+ /* Just add the URL please */
+ result = getparameter((char *)"--url", argv[i], &used, config);
+ }
+ }
+
+ if(result && result != PARAM_HELP_REQUESTED) {
+ const char *reason = param2text(result);
+ helpf(config->errors, "option %s: %s\n", orig_opt, reason);
+ }
+
+ return result;
+}
diff --git a/src/tool_getparam.h b/src/tool_getparam.h
index a86bfcec6..cf1496c50 100644
--- a/src/tool_getparam.h
+++ b/src/tool_getparam.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, 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
@@ -51,5 +51,8 @@ void parse_cert_parameter(const char *cert_parameter,
char **passphrase);
#endif
+ParameterError parse_args(struct Configurable *config, int argc,
+ argv_item_t argv[]);
+
#endif /* HEADER_CURL_TOOL_GETPARAM_H */
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 76ffcd0da..af9e1de02 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -199,9 +199,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
CURL *curl = NULL;
char *httpgetfields = NULL;
- bool stillflags;
int res = 0;
- int i;
unsigned long li;
bool orig_noprogress;
@@ -251,44 +249,15 @@ 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 *flag = argv[i];
-
- if(curlx_strequal("--", argv[i]))
- /* this indicates the end of the flags and thus enables the
- following (URL) argument to start with -. */
- stillflags = FALSE;
- else {
- 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);
- }
+ /* Parse the command line arguments */
+ res = parse_args(config, argc, argv);
+ if(res) {
+ if(res != PARAM_HELP_REQUESTED)
+ res = CURLE_FAILED_INIT;
+ else
+ res = CURLE_OK;
- if(res) {
- int retval = CURLE_OK;
- if(res != PARAM_HELP_REQUESTED) {
- const char *reason = param2text(res);
- helpf(config->errors, "option %s: %s\n", orig_opt, reason);
- retval = CURLE_FAILED_INIT;
- }
- res = retval;
- goto quit_curl;
- }
+ goto quit_curl;
}
if(config->userpwd && !config->xoauth2_bearer) {