mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 16:18:48 -05:00
tool_getparam: Added support for parsing of specific URL options
This commit is contained in:
parent
2d8623e85d
commit
132f5edfbd
@ -153,6 +153,21 @@ static void free_config_fields(struct Configurable *config)
|
|||||||
|
|
||||||
void config_free(struct Configurable *config)
|
void config_free(struct Configurable *config)
|
||||||
{
|
{
|
||||||
free_config_fields(config);
|
struct Configurable *last = config;
|
||||||
free(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);
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,10 @@ struct Configurable {
|
|||||||
bool test_event_based;
|
bool test_event_based;
|
||||||
#endif
|
#endif
|
||||||
char *xoauth2_bearer; /* XOAUTH2 bearer token */
|
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_init(struct Configurable* config);
|
||||||
void config_free(struct Configurable* config);
|
void config_free(struct Configurable* config);
|
||||||
|
@ -1859,7 +1859,29 @@ ParameterError parse_args(struct Configurable *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(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;
|
char *nextarg;
|
||||||
bool passarg;
|
bool passarg;
|
||||||
char *flag = argv[i];
|
char *flag = argv[i];
|
||||||
@ -1886,7 +1908,11 @@ ParameterError parse_args(struct Configurable *config, int argc,
|
|||||||
|
|
||||||
if(result && result != PARAM_HELP_REQUESTED) {
|
if(result && result != PARAM_HELP_REQUESTED) {
|
||||||
const char *reason = param2text(result);
|
const char *reason = param2text(result);
|
||||||
|
|
||||||
|
if(!curlx_strequal(":", orig_opt))
|
||||||
helpf(config->errors, "option %s: %s\n", orig_opt, reason);
|
helpf(config->errors, "option %s: %s\n", orig_opt, reason);
|
||||||
|
else
|
||||||
|
helpf(config->errors, "%s\n", reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -196,7 +196,7 @@ int main(int argc, char *argv[])
|
|||||||
tool_pressanykey();
|
tool_pressanykey();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Free the config structure */
|
/* Free the config structures */
|
||||||
config_free(config);
|
config_free(config);
|
||||||
config = NULL;
|
config = NULL;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ imap
|
|||||||
IMAP delete message (CUSTOMREQUEST)
|
IMAP delete message (CUSTOMREQUEST)
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<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>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ imap
|
|||||||
IMAP delete message with confirmation (CUSTOMREQUEST)
|
IMAP delete message with confirmation (CUSTOMREQUEST)
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
imap://%HOSTIP:%IMAPPORT/816 -X 'STORE 123 +Flags \Deleted' -Q -EXPUNGE -u user:secret
|
imap://%HOSTIP:%IMAPPORT/816 -X 'STORE 123 +Flags \Deleted' -u user:secret : imap://%HOSTIP:%IMAPPORT/816 -X EXPUNGE
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user