[PATCH 3/4] argv_array: add argv_array_copy
- From
Stefan Beller <sbeller@google.com>
- Date
- Aug 6, 2015, 17:35 UTC
- Message-ID
- <1438882524-21215-4-git-send-email-sbeller@google.com>
- In-Reply-To
- <1438882524-21215-1-git-send-email-sbeller@google.com>
The copied argv array shall be an identical deep copy except for the internal allocation value.
CC: Jeff King <peff@peff.net> Signed-off-by: Stefan Beller <sbeller@google.com> --- argv-array.c | 13 +++++++++++++ argv-array.h | 1 + 2 files changed, 14 insertions(+)
diff --git a/argv-array.c b/argv-array.c index 256741d..6d9c1dd 100644 --- a/argv-array.c +++ b/argv-array.c @@ -68,3 +68,16 @@ void argv_array_clear(struct argv_array *array) } argv_array_init(array); } + +void argv_array_copy(struct argv_array *src, struct argv_array *dst) +{ + int i; + + dst->argv = xmalloc((src->argc + 1) * sizeof(*dst->argv)); + dst->argc = src->argc; + dst->alloc = src->argc; + for (i = 0; i < dst->argc ; i++) + dst->argv[i] = xstrdup(src->argv[i]); + dst->argv[dst->argc] = NULL; +} + diff --git a/argv-array.h b/argv-array.h index c65e6e8..247627da 100644 --- a/argv-array.h +++ b/argv-array.h @@ -19,5 +19,6 @@ LAST_ARG_MUST_BE_NULL void argv_array_pushl(struct argv_array *, ...); void argv_array_pop(struct argv_array *); void argv_array_clear(struct argv_array *); +void argv_array_copy(struct argv_array *src, struct argv_array *dst); #endif /* ARGV_ARRAY_H */
-- 2.5.0.239.g9728e1d.dirty