mirror of
https://github.com/tmux/tmux.git
synced 2025-01-05 23:38:48 +00:00
Allow optional arguments.
This commit is contained in:
parent
bc0bd8213d
commit
355ced93cc
16
arguments.c
16
arguments.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user