diff --git a/src/version.c b/src/version.c index 8609df85..a22f7b8b 100644 --- a/src/version.c +++ b/src/version.c @@ -63,14 +63,24 @@ size_t taisei_version_write(SDL_RWops *rwops, TaiseiVersion *version) { return wrote_total; } -char* taisei_version_tostring(TaiseiVersion *version) { - if(!version->tweak) { - if(!version->patch) { - return strfmt("%u.%u", version->major, version->minor); - } +char *taisei_version_tostring(TaiseiVersion *version) { + StringBuffer sbuf = {}; + taisei_version_tostrbuf(&sbuf, version); + return sbuf.start; +} - return strfmt("%u.%u.%u", version->major, version->minor, version->patch); +void taisei_version_tostrbuf(StringBuffer *sbuf, TaiseiVersion *version) { + strbuf_printf(sbuf, "%u.%u", version->major, version->minor); + + if(!version->patch && !version->tweak) { + return; } - return strfmt("%u.%u.%u.%u", version->major, version->minor, version->patch, version->tweak); + strbuf_printf(sbuf, ".%u", version->patch); + + if(!version->tweak) { + return; + } + + strbuf_printf(sbuf, ".%u", version->tweak); } diff --git a/src/version.h b/src/version.h index a72726bb..2f0c52f0 100644 --- a/src/version.h +++ b/src/version.h @@ -10,6 +10,7 @@ #include "taisei.h" #include "util.h" +#include "util/strbuf.h" #ifdef TAISEI_BUILDCONF_DEBUG #define TAISEI_VERSION_BUILD_TYPE_0 "debug" @@ -78,6 +79,7 @@ typedef enum { #define TAISEI_VERSION_SIZE (sizeof(uint8_t) * 3 + sizeof(uint16_t)) int taisei_version_compare(TaiseiVersion *v1, TaiseiVersion *v2, TaiseiVersionCmpLevel level); -char* taisei_version_tostring(TaiseiVersion *version); +char *taisei_version_tostring(TaiseiVersion *version); +void taisei_version_tostrbuf(StringBuffer *sbuf, TaiseiVersion *version); size_t taisei_version_read(SDL_RWops *rwops, TaiseiVersion *version); size_t taisei_version_write(SDL_RWops *rwops, TaiseiVersion *version);