version 1.52, 2021/11/02 10:57:04 |
version 1.53, 2022/03/03 08:24:12 |
|
|
u_int i; |
u_int i; |
enum args_parse_type type; |
enum args_parse_type type; |
struct args_value *value, *new; |
struct args_value *value, *new; |
u_char flag, argument; |
u_char flag; |
const char *found, *string, *s; |
const char *found, *string, *s; |
|
int optional_argument; |
|
|
if (count == 0) |
if (count == 0) |
return (args_create()); |
return (args_create()); |
|
|
args_free(args); |
args_free(args); |
return (NULL); |
return (NULL); |
} |
} |
argument = *++found; |
if (*++found != ':') { |
if (argument != ':') { |
|
log_debug("%s: -%c", __func__, flag); |
log_debug("%s: -%c", __func__, flag); |
args_set(args, flag, NULL); |
args_set(args, flag, NULL); |
continue; |
continue; |
} |
} |
|
if (*found == ':') { |
|
optional_argument = 1; |
|
found++; |
|
} |
new = xcalloc(1, sizeof *new); |
new = xcalloc(1, sizeof *new); |
if (*string != '\0') { |
if (*string != '\0') { |
new->type = ARGS_STRING; |
new->type = ARGS_STRING; |
new->string = xstrdup(string); |
new->string = xstrdup(string); |
} else { |
} else { |
if (i == count) { |
if (i == count) { |
|
if (optional_argument) { |
|
log_debug("%s: -%c", __func__, |
|
flag); |
|
args_set(args, flag, NULL); |
|
continue; |
|
} |
xasprintf(cause, |
xasprintf(cause, |
"-%c expects an argument", |
"-%c expects an argument", |
flag); |
flag); |