diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-07-09 17:02:26 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-07-09 17:02:26 +0100 |
commit | 98ef369b27b631b7893446fbdf7c9d6ce9c1b43a (patch) | |
tree | 279d31f5e5c58725740969330041d5294a8828c4 /arguments.c | |
parent | 177599efb7d6477db8ce2bc6da82b16cb0327954 (diff) | |
parent | fc2016dbb665f01e795a89632a1bb74294bfc4e1 (diff) | |
download | rtmux-98ef369b27b631b7893446fbdf7c9d6ce9c1b43a.tar.gz rtmux-98ef369b27b631b7893446fbdf7c9d6ce9c1b43a.tar.bz2 rtmux-98ef369b27b631b7893446fbdf7c9d6ce9c1b43a.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'arguments.c')
-rw-r--r-- | arguments.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/arguments.c b/arguments.c index f7b6cbe1..026272af 100644 --- a/arguments.c +++ b/arguments.c @@ -37,6 +37,7 @@ TAILQ_HEAD(args_values, args_value); struct args_entry { u_char flag; struct args_values values; + u_int count; RB_ENTRY(args_entry) entry; }; @@ -173,6 +174,7 @@ args_print(struct args *args) size_t len; char *buf; int i; + u_int j; struct args_entry *entry; struct args_value *value; @@ -186,7 +188,8 @@ args_print(struct args *args) if (*buf == '\0') args_print_add(&buf, &len, "-"); - args_print_add(&buf, &len, "%c", entry->flag); + for (j = 0; j < entry->count; j++) + args_print_add(&buf, &len, "%c", entry->flag); } /* Then the flags with arguments. */ @@ -243,7 +246,12 @@ args_escape(const char *s) int args_has(struct args *args, u_char ch) { - return (args_find(args, ch) != NULL); + struct args_entry *entry; + + entry = args_find(args, ch); + if (entry == NULL) + return (0); + return (entry->count); } /* Set argument value in the arguments tree. */ @@ -257,9 +265,11 @@ args_set(struct args *args, u_char ch, const char *s) if (entry == NULL) { entry = xcalloc(1, sizeof *entry); entry->flag = ch; + entry->count = 1; TAILQ_INIT(&entry->values); RB_INSERT(args_tree, &args->tree, entry); - } + } else + entry->count++; if (s != NULL) { value = xcalloc(1, sizeof *value); |