tool: Reworked argument parsing to use --next/-:
authorSteve Holme <steve_holme@hotmail.com>
Sun, 23 Feb 2014 17:32:19 +0000 (17:32 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Wed, 26 Feb 2014 20:53:23 +0000 (20:53 +0000)
Follow up to commit 1a9b58fcb2 to replace the : command line option
with --next and -:.

src/tool_getparam.c
tests/data/test815
tests/data/test816

index a1033e8..e4cc69d 100644 (file)
@@ -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 */
       }
     }
index aa9a883..c006c6d 100644 (file)
@@ -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>
 
index d44c5e1..386f877 100644 (file)
@@ -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>