From 9bd8cf4e763cfb579d77981174c3807d23da4949 Mon Sep 17 00:00:00 2001 From: kientzle Date: Sat, 6 Dec 2008 05:56:43 +0000 Subject: New internal archive_string_concat utility function. --- lib/libarchive/archive_string.c | 12 ++++++++++++ lib/libarchive/archive_string.h | 6 ++++++ 2 files changed, 18 insertions(+) (limited to 'lib') diff --git a/lib/libarchive/archive_string.c b/lib/libarchive/archive_string.c index d06b72a..fc6a344 100644 --- a/lib/libarchive/archive_string.c +++ b/lib/libarchive/archive_string.c @@ -70,6 +70,18 @@ __archive_string_copy(struct archive_string *dest, struct archive_string *src) } void +__archive_string_concat(struct archive_string *dest, struct archive_string *src) +{ + if (src->length > 0) { + if (__archive_string_ensure(dest, dest->length + src->length + 1) == NULL) + __archive_errx(1, "Out of memory"); + memcpy(dest->s + dest->length, src->s, src->length); + dest->length += src->length; + dest->s[dest->length] = 0; + } +} + +void __archive_string_free(struct archive_string *as) { as->length = 0; diff --git a/lib/libarchive/archive_string.h b/lib/libarchive/archive_string.h index 819be75..73e527d 100644 --- a/lib/libarchive/archive_string.h +++ b/lib/libarchive/archive_string.h @@ -92,6 +92,12 @@ __archive_string_copy(struct archive_string *dest, struct archive_string *src); #define archive_string_copy(dest, src) \ __archive_string_copy(dest, src) +/* Concatenate one archive_string to another */ +void +__archive_string_concat(struct archive_string *dest, struct archive_string *src); +#define archive_string_concat(dest, src) \ + __archive_string_concat(dest, src) + /* Ensure that the underlying buffer is at least as large as the request. */ struct archive_string * __archive_string_ensure(struct archive_string *, size_t); -- cgit v1.1