From 8ef1c6e1c3e0f22d8af072fbae912dd244157a72 Mon Sep 17 00:00:00 2001 From: Evan Miller Date: Wed, 5 Aug 2020 08:26:40 -0400 Subject: [PATCH] Provide vasprintf on Windows --- include/mdbfakeglib.h | 1 + src/libmdb/fakeglib.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/mdbfakeglib.h b/include/mdbfakeglib.h index 751ae0c..663a76b 100644 --- a/include/mdbfakeglib.h +++ b/include/mdbfakeglib.h @@ -5,6 +5,7 @@ #include #include #include +#include // for ntohl #ifdef _WIN32 diff --git a/src/libmdb/fakeglib.c b/src/libmdb/fakeglib.c index 525ddfc..ebe61dc 100644 --- a/src/libmdb/fakeglib.c +++ b/src/libmdb/fakeglib.c @@ -83,6 +83,24 @@ char *g_strconcat(const char *first, ...) { return ret; } +#ifdef _MSC_VER +int vasprintf(char **ret, const char *format, va_list ap) { + int len; + int retval; + char *result; + if ((len = _vscprintf(format, ap)) < 0) + return -1; + if ((result = malloc(len+1)) == NULL) + return -1; + if ((retval = _vsprintf_s(result, len+1, format, ap)) == -1) { + free(result); + return -1; + } + *ret = result; + return retval; +} +#endif + char *g_strdup_printf(const char *format, ...) { char *ret = NULL; va_list argp;