From def161ad50fc08552136d3c93dd47b0ae3d67af4 Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Tue, 23 Dec 2025 13:30:34 -0800 Subject: [PATCH] libpkgconf: buffer: add pkgconf_buffer_append_vfmt Signed-off-by: Ariadne Conill --- libpkgconf/buffer.c | 16 +++++++++++++--- libpkgconf/libpkgconf.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libpkgconf/buffer.c b/libpkgconf/buffer.c index a9ea92b..36ae5da 100644 --- a/libpkgconf/buffer.c +++ b/libpkgconf/buffer.c @@ -66,19 +66,19 @@ pkgconf_buffer_append(pkgconf_buffer_t *buffer, const char *text) } void -pkgconf_buffer_append_fmt(pkgconf_buffer_t *buffer, const char *fmt, ...) +pkgconf_buffer_append_vfmt(pkgconf_buffer_t *buffer, const char *fmt, va_list src_va) { va_list va; char *buf; size_t needed; - va_start(va, fmt); + va_copy(va, src_va); needed = vsnprintf(NULL, 0, fmt, va) + 1; va_end(va); buf = malloc(needed); - va_start(va, fmt); + va_copy(va, src_va); vsnprintf(buf, needed, fmt, va); va_end(va); @@ -87,6 +87,16 @@ pkgconf_buffer_append_fmt(pkgconf_buffer_t *buffer, const char *fmt, ...) free(buf); } +void +pkgconf_buffer_append_fmt(pkgconf_buffer_t *buffer, const char *fmt, ...) +{ + va_list va; + + va_start(va, fmt); + pkgconf_buffer_append_vfmt(buffer, fmt, va); + va_end(va); +} + void pkgconf_buffer_push_byte(pkgconf_buffer_t *buffer, char byte) { diff --git a/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf.h index 1d66899..de5fcbe 100644 --- a/libpkgconf/libpkgconf.h +++ b/libpkgconf/libpkgconf.h @@ -441,6 +441,7 @@ PKGCONF_API void pkgconf_path_prepend_list(pkgconf_list_t *dst, const pkgconf_li /* buffer.c */ PKGCONF_API void pkgconf_buffer_append(pkgconf_buffer_t *buffer, const char *text); PKGCONF_API void pkgconf_buffer_append_fmt(pkgconf_buffer_t *buffer, const char *fmt, ...) PRINTFLIKE(2, 3); +PKGCONF_API void pkgconf_buffer_append_vfmt(pkgconf_buffer_t *buffer, const char *fmt, va_list va); PKGCONF_API void pkgconf_buffer_push_byte(pkgconf_buffer_t *buffer, char byte); PKGCONF_API void pkgconf_buffer_trim_byte(pkgconf_buffer_t *buffer); PKGCONF_API void pkgconf_buffer_finalize(pkgconf_buffer_t *buffer);