tool: Reworked argument parsing to use --next/-:

Follow up to commit 1a9b58fcb2 to replace the : command line option
with --next and -:.
This commit is contained in:
Steve Holme
2014-02-23 17:32:19 +00:00
parent 1a9b58fcb2
commit 07d7603b45
3 changed files with 29 additions and 29 deletions

View File

@@ -1814,9 +1814,21 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
for(i = 1, stillflags = TRUE; i < argc && !result; i++) { for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
orig_opt = argv[i]; orig_opt = argv[i];
if(curlx_strequal(":", argv[i]) && if(stillflags && ('-' == argv[i][0])) {
(operation->url_list && operation->url_list->url)) { 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, operation);
if(result == PARAM_NEXT_OPERATION) {
if(operation->url_list && operation->url_list->url) {
/* Allocate the next config */ /* Allocate the next config */
operation->next = malloc(sizeof(struct OperationConfig)); operation->next = malloc(sizeof(struct OperationConfig));
if(operation->next) { if(operation->next) {
@@ -1832,27 +1844,15 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
/* Move onto the new config */ /* Move onto the new config */
operation->next->prev = operation; operation->next->prev = operation;
operation = operation->next; operation = operation->next;
/* Reset the flag indicator */
stillflags = TRUE;
} }
else else
result = PARAM_NO_MEM; result = PARAM_NO_MEM;
} }
else if(stillflags && ('-' == argv[i][0])) {
char *nextarg;
bool passarg;
char *flag = argv[i];
if(curlx_strequal("--", argv[i])) /* Reset result to continue */
/* This indicates the end of the flags and thus enables the result = PARAM_OK;
following (URL) argument to start with -. */ }
stillflags = FALSE; else if(!result && passarg)
else {
nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL;
result = getparameter(flag, nextarg, &passarg, config, operation);
if(!result && passarg)
i++; /* we're supposed to skip this */ i++; /* we're supposed to skip this */
} }
} }

View File

@@ -26,7 +26,7 @@ imap
IMAP STORE - delete message (CUSTOMREQUEST) IMAP STORE - delete message (CUSTOMREQUEST)
</name> </name>
<command> <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> </command>
</client> </client>

View File

@@ -29,7 +29,7 @@ imap
IMAP STORE - delete message with confirmation (CUSTOMREQUEST) IMAP STORE - delete message with confirmation (CUSTOMREQUEST)
</name> </name>
<command> <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> </command>
</client> </client>