Allow optional arguments.

pull/3160/head
nicm 2022-03-03 08:24:12 +00:00 committed by Nicholas Marriott
parent bc0bd8213d
commit 355ced93cc
1 changed files with 13 additions and 3 deletions

View File

@ -131,8 +131,9 @@ args_parse(const struct args_parse *parse, struct args_value *values,
u_int i;
enum args_parse_type type;
struct args_value *value, *new;
u_char flag, argument;
u_char flag;
const char *found, *string, *s;
int optional_argument;
if (count == 0)
return (args_create());
@ -169,18 +170,27 @@ args_parse(const struct args_parse *parse, struct args_value *values,
args_free(args);
return (NULL);
}
argument = *++found;
if (argument != ':') {
if (*++found != ':') {
log_debug("%s: -%c", __func__, flag);
args_set(args, flag, NULL);
continue;
}
if (*found == ':') {
optional_argument = 1;
found++;
}
new = xcalloc(1, sizeof *new);
if (*string != '\0') {
new->type = ARGS_STRING;
new->string = xstrdup(string);
} else {
if (i == count) {
if (optional_argument) {
log_debug("%s: -%c", __func__,
flag);
args_set(args, flag, NULL);
continue;
}
xasprintf(cause,
"-%c expects an argument",
flag);