Commit 07d7603b authored by Steve Holme's avatar Steve Holme
Browse files

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

Follow up to commit 1a9b58fc to replace the : command line option
with --next and -:.
parent 1a9b58fc
Loading
Loading
Loading
Loading
+27 −27
Original line number Diff line number Diff line
@@ -1814,9 +1814,21 @@ 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)) {
    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, operation);
        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) {
@@ -1832,27 +1844,15 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
              /* 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])) {
      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 && passarg)
          /* Reset result to continue */
          result = PARAM_OK;
        }
        else if(!result && passarg)
          i++; /* we're supposed to skip this */
      }
    }
+1 −1
Original line number Diff line number Diff line
@@ -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>

+1 −1
Original line number Diff line number Diff line
@@ -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>