diff options
| author | Tyge Løvset <[email protected]> | 2020-11-10 09:09:45 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2020-11-10 09:09:45 +0100 |
| commit | 360c948953ee0b7313592371f537ec4bf1f1a127 (patch) | |
| tree | ceec69b171d40d53afc329b9d9c22e45ff4ccfda | |
| parent | a10f4ca24c32df3db7dfbebf51fc64f097ba985a (diff) | |
| download | STC-modified-360c948953ee0b7313592371f537ec4bf1f1a127.tar.gz STC-modified-360c948953ee0b7313592371f537ec4bf1f1a127.zip | |
Refactored cstr_fmt().
| -rw-r--r-- | stc/cstr.h | 36 |
1 files changed, 16 insertions, 20 deletions
@@ -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)) {
|
