From 6771014c490aa4931f2591ed548a332c0ecc0433 Mon Sep 17 00:00:00 2001 From: Evan Miller Date: Wed, 5 Aug 2020 00:20:59 -0400 Subject: [PATCH] Windows portability fixes --- include/mdbfakeglib.h | 7 +++++++ src/libmdb/fakeglib.c | 12 +++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/mdbfakeglib.h b/include/mdbfakeglib.h index 9bfd942..614dc68 100644 --- a/include/mdbfakeglib.h +++ b/include/mdbfakeglib.h @@ -5,6 +5,13 @@ #include #include +// for ntohl +#ifdef _WIN32 +#include +#else +#include +#endif + typedef uint16_t guint16; typedef uint32_t guint32; typedef uint64_t guint64; diff --git a/src/libmdb/fakeglib.c b/src/libmdb/fakeglib.c index eed36a0..5e56bd8 100644 --- a/src/libmdb/fakeglib.c +++ b/src/libmdb/fakeglib.c @@ -34,7 +34,13 @@ char **g_strsplit(const char *haystack, const char *needle, int something) { int i = 0; while ((found = strstr(haystack, needle))) { - ret[i++] = strndup(haystack, found - haystack); + // Windows lacks strndup + size_t chunk_len = found - haystack; + char *chunk = malloc(chunk_len + 1); + memcpy(chunk, haystack, chunk_len); + chunk[chunk_len] = 0; + + ret[i++] = chunk; haystack = found + strlen(needle); } ret[i] = strdup(haystack); @@ -65,11 +71,11 @@ char *g_strconcat(const char *first, ...) { ret = malloc(len+1); - char *pos = stpcpy(ret, first); + char *pos = strcpy(ret, first) + strlen(first); va_start(argp, first); while ((arg = va_arg(argp, char *))) { - pos = stpcpy(pos, arg); + pos = strcpy(pos, arg) + strlen(arg); } va_end(argp);