New internal archive_string_concat utility function.

This commit is contained in:
Tim Kientzle 2008-12-06 05:56:43 +00:00
parent fe7350cb22
commit 0a68927a88
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=185667
2 changed files with 18 additions and 0 deletions

View file

@ -69,6 +69,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)
{

View file

@ -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);