summaryrefslogtreecommitdiffstats
path: root/arguments.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2021-09-02 10:01:09 +0100
committerThomas Adam <thomas@xteddy.org>2021-09-02 10:01:09 +0100
commitd776c9acfca7b4b224f19c7a504fcf9980038319 (patch)
tree0044216395db289815c133164e5d6f1f2e0a2ee5 /arguments.c
parentd62aee506b9b9868b806319502f2b753cafe96ef (diff)
parent329c2c2a919d3c66b08672ff37af4e2393dc9a95 (diff)
Merge branch 'obsd-master' into master
Diffstat (limited to 'arguments.c')
-rw-r--r--arguments.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arguments.c b/arguments.c
index 5669df92..de3b14bf 100644
--- a/arguments.c
+++ b/arguments.c
@@ -302,10 +302,13 @@ args_copy(struct args *args, int argc, char **argv)
struct args_value *value, *new_value;
u_int i;
+ cmd_log_argv(argc, argv, "%s", __func__);
+
new_args = args_create();
RB_FOREACH(entry, args_tree, &args->tree) {
- if (entry->count == 1) {
- args_set(new_args, entry->flag, NULL);
+ if (TAILQ_EMPTY(&entry->values)) {
+ for (i = 0; i < entry->count; i++)
+ args_set(new_args, entry->flag, NULL);
continue;
}
TAILQ_FOREACH(value, &entry->values, entry) {
@@ -314,6 +317,8 @@ args_copy(struct args *args, int argc, char **argv)
args_set(new_args, entry->flag, new_value);
}
}
+ if (args->count == 0)
+ return (new_args);
new_args->count = args->count;
new_args->values = xcalloc(args->count, sizeof *new_args->values);
for (i = 0; i < args->count; i++) {