From 45b3d8362d7f608ab3c4abe40f0644ffac8cd123 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Fri, 30 Oct 2015 16:08:49 +0100 Subject: [PATCH] Provide strndup implementation for platforms missing it --- src/platform/platform.h | 4 ++++ src/platform/windows.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/platform/platform.h b/src/platform/platform.h index 7c71c3ea64..75e568da43 100644 --- a/src/platform/platform.h +++ b/src/platform/platform.h @@ -181,4 +181,8 @@ bool platform_check_steam_overlay_attached(); #endif // __linux__ +#if !(POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700) + char *strndup(const char *src, size_t size); +#endif // !(POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700) + #endif diff --git a/src/platform/windows.c b/src/platform/windows.c index 1b76c7df70..c3c4434660 100644 --- a/src/platform/windows.c +++ b/src/platform/windows.c @@ -846,4 +846,19 @@ bool platform_check_steam_overlay_attached() { return GetModuleHandle("GameOverlayRenderer.dll") != NULL; } + +char *strndup(const char *src, size_t size) +{ + size_t len = strnlen(src, size); + char *dst = (char *)malloc(len + 1); + + if (dst == NULL) + { + return NULL; + } + + dst = memcpy(dst, src, len); + dst[len] = '\0'; + return (char *)dst; +} #endif