summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2008-12-06 05:56:43 +0000
committerkientzle <kientzle@FreeBSD.org>2008-12-06 05:56:43 +0000
commit9bd8cf4e763cfb579d77981174c3807d23da4949 (patch)
treeb6fff11ba29c6315c8d2134e75272455cf71b80b /lib
parentfa92961e897ddf24189345a47b7f38d457ea7197 (diff)
downloadFreeBSD-src-9bd8cf4e763cfb579d77981174c3807d23da4949.zip
FreeBSD-src-9bd8cf4e763cfb579d77981174c3807d23da4949.tar.gz
New internal archive_string_concat utility function.
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_string.c12
-rw-r--r--lib/libarchive/archive_string.h6
2 files changed, 18 insertions, 0 deletions
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);
OpenPOWER on IntegriCloud