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