Commit 132f5edf authored by Steve Holme's avatar Steve Holme
Browse files

tool_getparam: Added support for parsing of specific URL options

parent 2d8623e8
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -153,6 +153,21 @@ static void free_config_fields(struct Configurable *config)

void config_free(struct Configurable *config)
{
  free_config_fields(config);
  free(config);
  struct Configurable *last = config;

  /* Find the last config structure */
  while(last->next)
    last = last->next;

  /* Free each of the structures in reverse order */
  do {
    struct Configurable *prev = last->prev;
    if(prev)
      last->easy = NULL;

    free_config_fields(last);
    free(last);

    last = prev;
  } while(last);
}
+5 −2
Original line number Diff line number Diff line
@@ -214,7 +214,10 @@ struct Configurable {
  bool test_event_based;
#endif
  char *xoauth2_bearer;       /* XOAUTH2 bearer token */
}; /* struct Configurable */

  struct Configurable* prev;
  struct Configurable* next;  /* Always last in the struct */
};

void config_init(struct Configurable* config);
void config_free(struct Configurable* config);
+28 −2
Original line number Diff line number Diff line
@@ -1859,7 +1859,29 @@ ParameterError parse_args(struct Configurable *config, int argc,
  for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
    orig_opt = argv[i];

    if(stillflags && ('-' == argv[i][0])) {
    if(curlx_strequal(":", argv[i]) &&
       ((config->url_list && config->url_list->url) || config->list_engines)) {

      /* Allocate the next config */
      config->next = malloc(sizeof(struct Configurable));
      if(config->next) {
        /* Initialise the newly created config */
        config_init(config->next);

        /* Copy the easy handle */
        config->next->easy = config->easy;

        /* Move onto the new config */
        config->next->prev = config;
        config = config->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];
@@ -1886,7 +1908,11 @@ ParameterError parse_args(struct Configurable *config, int argc,

  if(result && result != PARAM_HELP_REQUESTED) {
    const char *reason = param2text(result);

    if(!curlx_strequal(":", orig_opt))
      helpf(config->errors, "option %s: %s\n", orig_opt, reason);
    else
      helpf(config->errors, "%s\n", reason);
  }

  return result;
+1 −1
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ int main(int argc, char *argv[])
      tool_pressanykey();
#endif

    /* Free the config structure */
    /* Free the config structures */
    config_free(config);
    config = NULL;
  }
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ imap
IMAP delete message (CUSTOMREQUEST)
 </name>
 <command>
imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -Q -CLOSE -u user:secret
imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret : imap://%HOSTIP:%IMAPPORT/815 -X CLOSE
</command>
</client>

Loading