(svn r14154) -Fix (r14153): strndup is a GNU extension, so it doesn't exist on all platforms

This commit is contained in:
glx 2008-08-24 17:02:21 +00:00
parent ae32d158cb
commit 2ddb86eea5
3 changed files with 22 additions and 1 deletions

View File

@ -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

View File

@ -304,3 +304,14 @@ size_t Utf8TrimString(char *s, size_t maxlen)
*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 */

View File

@ -156,4 +156,9 @@ static inline bool IsWhitespace(WChar c)
;
}
#endif /* STRING_FUNC_H */
#ifndef _GNU_SOURCE
/* strndup is a GNU extension */
char *strndup(const char *s, size_t len);
#endif /* WIN32 || SUNOS */
#endif /* !_GNU_SOURCE */