Mercurial > hg > openttd
changeset 9997:71ed8bf0a031 draft
(svn r14154) -Fix (r14153): strndup is a GNU extension, so it doesn't exist on all platforms
author | glx <glx@openttd.org> |
---|---|
date | Sun, 24 Aug 2008 17:02:21 +0000 |
parents | 091e875c5ade |
children | 5059d43e28d8 |
files | src/stdafx.h src/string.cpp src/string_func.h |
diffstat | 3 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/stdafx.h +++ b/src/stdafx.h @@ -145,6 +145,11 @@ #include <malloc.h> // alloca() #endif +#if defined(__MINGW32__) && defined(_GNU_SOURCE) + /* For some weird reasons, SDL defines _GNU_SOURCE */ + #undef _GNU_SOURCE +#endif + #if defined(WIN32) #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #endif
--- a/src/string.cpp +++ b/src/string.cpp @@ -304,3 +304,14 @@ *s = '\0'; return length; } + +#ifndef _GNU_SOURCE +#include "core/math_func.hpp" +char *strndup(const char *s, size_t len) +{ + len = min(strlen(s), len); + char *tmp = CallocT<char>(len + 1); + memcpy(tmp, s, len); + return tmp; +} +#endif /* !_GNU_SOURCE */