From 3f96be28ed5ded159d3b265b6e058d68bbf31d91 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 28 Jul 2025 22:14:34 +0100 Subject: [PATCH] core: add format with va_list function to stringstream --- core/include/blue/core/stringstream.h | 2 ++ core/stringstream.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/include/blue/core/stringstream.h b/core/include/blue/core/stringstream.h index 7d46590..86ef69a 100644 --- a/core/include/blue/core/stringstream.h +++ b/core/include/blue/core/stringstream.h @@ -28,6 +28,8 @@ BLUE_API void b_stringstream_pop_indent(b_stringstream *strv); BLUE_API b_status b_stringstream_add(b_stringstream *strv, const char *str); BLUE_API b_status b_stringstream_addf(b_stringstream *strv, const char *format, ...); BLUE_API b_status b_stringstream_addv(b_stringstream *strv, const char **strs); +BLUE_API b_status b_stringstream_addvf( + b_stringstream *strv, const char *format, va_list arg); BLUE_API b_status b_stringstream_addvl( b_stringstream *strv, const char **strs, size_t count); BLUE_API b_status b_stringstream_add_many(b_stringstream *strv, ...); diff --git a/core/stringstream.c b/core/stringstream.c index 83c9660..5542921 100644 --- a/core/stringstream.c +++ b/core/stringstream.c @@ -150,9 +150,18 @@ b_status b_stringstream_addf(struct b_stringstream *ss, const char *format, ...) char str[1024]; va_list arg; va_start(arg, format); - size_t len = vsnprintf(str, sizeof str, format, arg); + enum b_status status = b_stringstream_addvf(ss, format, arg); va_end(arg); + return status; +} + +b_status b_stringstream_addvf( + struct b_stringstream *ss, const char *format, va_list arg) +{ + char str[1024]; + size_t len = vsnprintf(str, sizeof str, format, arg); + return ss_builder_push_string(ss, str, len); }