diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-21 10:42:10 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-21 10:42:10 +0200 |
commit | 157cdabe941be14ca72022e7a7c8c55a582a7c1c (patch) | |
tree | ca09caaa0b4a8ec8ba7c6a109445be4339f08cb1 /src/crepe/util/fmt.cpp | |
parent | 58dfdba241b501d4b1b9688b44ee775507ec325b (diff) | |
parent | 0fdebc7d7a143ad2b9b5ed6a596bf4bb1f0f7d7f (diff) |
merge loek/scripts into loek/config
Diffstat (limited to 'src/crepe/util/fmt.cpp')
-rw-r--r-- | src/crepe/util/fmt.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/crepe/util/fmt.cpp b/src/crepe/util/fmt.cpp new file mode 100644 index 0000000..8ef1164 --- /dev/null +++ b/src/crepe/util/fmt.cpp @@ -0,0 +1,33 @@ +#include <cstdarg> +#include <cstdio> +#include <string> + +#include "fmt.h" + +using namespace std; + +string crepe::util::va_stringf(va_list args, const char * fmt) { + va_list args_copy; + va_copy(args_copy, args); + + size_t sz = vsnprintf(NULL, 0, fmt, args_copy) + 1; + char * msg = (char *) malloc(sz); + va_end(args_copy); + + vsnprintf(msg, sz, fmt, args); + + string out = msg; + free(msg); + + va_end(args); + + return out; +} + +string crepe::util::stringf(const char * fmt, ...) { + va_list args; + va_start(args, fmt); + string out = va_stringf(args, fmt); + va_end(args); + return out; +} |