From 360c948953ee0b7313592371f537ec4bf1f1a127 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 10 Nov 2020 09:09:45 +0100 Subject: Refactored cstr_fmt(). --- stc/cstr.h | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/stc/cstr.h b/stc/cstr.h index 0b1e9cbe..94b902a1 100644 --- a/stc/cstr.h +++ b/stc/cstr.h @@ -257,42 +257,38 @@ cstr_from_n(const char* str, size_t len) { # pragma warning(push) # pragma warning(disable: 4996) #endif - -STC_DEF cstr_t -cstr_from_fmt(const char* fmt, ...) { - cstr_t ret = cstr_init(); - va_list args, args2; - va_start(args, fmt); +STC_DEF void +cstr_vfmt(cstr_t* self, const char* fmt, va_list args) { + va_list args2; va_copy(args2, args); int len = vsnprintf(NULL, (size_t)0, fmt, args); - va_end(args); - cstr_reserve(&ret, len); - vsprintf(ret.str, fmt, args2); + cstr_reserve(self, len); + vsprintf(self->str, fmt, args2); + _cstr_size(*self) = len; va_end(args2); - _cstr_size(ret) = len; - return ret; } STC_DEF void cstr_fmt(cstr_t* self, const char* fmt, ...) { - va_list args, args2; - va_start(args, fmt); - va_copy(args2, args); - int len = vsnprintf(NULL, (size_t)0, fmt, args); + va_list args; va_start(args, fmt); + cstr_vfmt(self, fmt, args); va_end(args); - cstr_reserve(self, len); - vsprintf(self->str, fmt, args2); - va_end(args2); - _cstr_size(*self) = len; } +STC_DEF cstr_t +cstr_from_fmt(const char* fmt, ...) { + cstr_t ret = cstr_init(); + va_list args; va_start(args, fmt); + cstr_vfmt(&ret, fmt, args); + va_end(args); + return ret; +} #if defined(__clang__) # pragma clang diagnostic pop #elif defined(_MSC_VER) # pragma warning(pop) #endif - STC_DEF cstr_t* cstr_assign_n(cstr_t* self, const char* str, size_t len) { if (len || cstr_capacity(*self)) { -- cgit v1.2.3