[4/4] parse-options: simplify parse_options_dup()
diff mbox series

Message ID 162fb36a-6dd1-c178-9032-d3f4213930a6@web.de
State New
Headers show
Series
  • parse-options: simplify parse_options_concat() and parse_options_dup()
Related show

Commit Message

René Scharfe Feb. 9, 2020, 3:58 p.m. UTC
Simplify parse_options_dup() by making it a trivial wrapper of
parse_options_concat() by making use of the facts that the latter
duplicates its input as well and that appending an empty set is a no-op.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 parse-options-cb.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

--
2.25.0

Comments

Junio C Hamano Feb. 10, 2020, 5:49 p.m. UTC | #1
René Scharfe <l.s.r@web.de> writes:

> Simplify parse_options_dup() by making it a trivial wrapper of
> parse_options_concat() by making use of the facts that the latter
> duplicates its input as well and that appending an empty set is a no-op.
> ...
> +	struct option no_options[] = { OPT_END() };
> +
> +	return parse_options_concat(o, no_options);

Can't say if this is tricky or cute, but I like it ;-)

Will queue all four.  Thanks.

Patch
diff mbox series

diff --git a/parse-options-cb.c b/parse-options-cb.c
index 7d56681130..a28b55be48 100644
--- a/parse-options-cb.c
+++ b/parse-options-cb.c
@@ -170,15 +170,9 @@  static size_t parse_options_count(const struct option *opt)

 struct option *parse_options_dup(const struct option *o)
 {
-	const struct option *orig = o;
-	struct option *opts;
-	size_t nr = parse_options_count(o);
-
-	ALLOC_ARRAY(opts, nr + 1);
-	COPY_ARRAY(opts, orig, nr);
-	memset(opts + nr, 0, sizeof(*opts));
-	opts[nr].type = OPTION_END;
-	return opts;
+	struct option no_options[] = { OPT_END() };
+
+	return parse_options_concat(o, no_options);
 }

 struct option *parse_options_concat(const struct option *a,