From 3c60388591303c2e13867044696fed455fc6718b Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 24 Jul 2017 18:54:15 +0200 Subject: [PATCH] util: buffer: Add virBufferStrcatVArgs Split out the worker loop into a separate function and export it. Reviewed-by: Eric Blake --- src/libvirt_private.syms | 1 + src/util/virbuffer.c | 27 +++++++++++++++++++++------ src/util/virbuffer.h | 2 ++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0dca0a8da3..37b815c06b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1345,6 +1345,7 @@ virBufferFreeAndReset; virBufferGetIndent; virBufferSetIndent; virBufferStrcat; +virBufferStrcatVArgs; virBufferTrim; virBufferURIEncodeString; virBufferUse; diff --git a/src/util/virbuffer.c b/src/util/virbuffer.c index f07b119c0f..28a291bb0f 100644 --- a/src/util/virbuffer.c +++ b/src/util/virbuffer.c @@ -830,6 +830,26 @@ virBufferEscapeShell(virBufferPtr buf, const char *str) VIR_FREE(escaped); } +/** + * virBufferStrcatVArgs: + * @buf: the buffer to append to + * @ap: variable argument structure + * + * See virBufferStrcat. + */ +void +virBufferStrcatVArgs(virBufferPtr buf, + va_list ap) +{ + char *str; + + if (buf->error) + return; + + while ((str = va_arg(ap, char *)) != NULL) + virBufferAdd(buf, str, -1); +} + /** * virBufferStrcat: * @buf: the buffer to append to @@ -842,14 +862,9 @@ void virBufferStrcat(virBufferPtr buf, ...) { va_list ap; - char *str; - - if (buf->error) - return; va_start(ap, buf); - while ((str = va_arg(ap, char *)) != NULL) - virBufferAdd(buf, str, -1); + virBufferStrcatVArgs(buf, ap); va_end(ap); } diff --git a/src/util/virbuffer.h b/src/util/virbuffer.h index 7a7014aa70..f34217968b 100644 --- a/src/util/virbuffer.h +++ b/src/util/virbuffer.h @@ -80,6 +80,8 @@ void virBufferVasprintf(virBufferPtr buf, const char *format, va_list ap) ATTRIBUTE_FMT_PRINTF(2, 0); void virBufferStrcat(virBufferPtr buf, ...) ATTRIBUTE_SENTINEL; +void virBufferStrcatVArgs(virBufferPtr buf, va_list ap); + void virBufferEscape(virBufferPtr buf, char escape, const char *toescape, const char *format, const char *str); void virBufferEscapeN(virBufferPtr buf, const char *format,