aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tool_getparam.c54
-rw-r--r--tests/data/test8152
-rw-r--r--tests/data/test8162
3 files changed, 29 insertions, 29 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index a1033e8b3..e4cc69dd1 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -1814,32 +1814,7 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
orig_opt = argv[i];
- if(curlx_strequal(":", argv[i]) &&
- (operation->url_list && operation->url_list->url)) {
-
- /* Allocate the next config */
- operation->next = malloc(sizeof(struct OperationConfig));
- if(operation->next) {
- /* Initialise the newly created config */
- config_init(operation->next);
-
- /* Copy the easy handle */
- operation->next->easy = config->easy;
-
- /* Update the last operation pointer */
- config->last = operation->next;
-
- /* Move onto the new config */
- operation->next->prev = operation;
- operation = operation->next;
-
- /* Reset the flag indicator */
- stillflags = TRUE;
- }
- else
- result = PARAM_NO_MEM;
- }
- else if(stillflags && ('-' == argv[i][0])) {
+ if(stillflags && ('-' == argv[i][0])) {
char *nextarg;
bool passarg;
char *flag = argv[i];
@@ -1852,7 +1827,32 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL;
result = getparameter(flag, nextarg, &passarg, config, operation);
- if(!result && passarg)
+ if(result == PARAM_NEXT_OPERATION) {
+ if(operation->url_list && operation->url_list->url) {
+ /* Allocate the next config */
+ operation->next = malloc(sizeof(struct OperationConfig));
+ if(operation->next) {
+ /* Initialise the newly created config */
+ config_init(operation->next);
+
+ /* Copy the easy handle */
+ operation->next->easy = config->easy;
+
+ /* Update the last operation pointer */
+ config->last = operation->next;
+
+ /* Move onto the new config */
+ operation->next->prev = operation;
+ operation = operation->next;
+ }
+ else
+ result = PARAM_NO_MEM;
+ }
+
+ /* Reset result to continue */
+ result = PARAM_OK;
+ }
+ else if(!result && passarg)
i++; /* we're supposed to skip this */
}
}
diff --git a/tests/data/test815 b/tests/data/test815
index aa9a883d1..c006c6dd6 100644
--- a/tests/data/test815
+++ b/tests/data/test815
@@ -26,7 +26,7 @@ imap
IMAP STORE - delete message (CUSTOMREQUEST)
</name>
<command>
-imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret : imap://%HOSTIP:%IMAPPORT/815 -X CLOSE
+imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/815 -X CLOSE
</command>
</client>
diff --git a/tests/data/test816 b/tests/data/test816
index d44c5e168..386f87746 100644
--- a/tests/data/test816
+++ b/tests/data/test816
@@ -29,7 +29,7 @@ imap
IMAP STORE - delete message with confirmation (CUSTOMREQUEST)
</name>
<command>
-imap://%HOSTIP:%IMAPPORT/816 -X 'STORE 123 +Flags \Deleted' -u user:secret : imap://%HOSTIP:%IMAPPORT/816 -X EXPUNGE
+imap://%HOSTIP:%IMAPPORT/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/816 -X EXPUNGE
</command>
</client>