changeset 15240:673afd3a2e81 draft

(svn r19874) -Fix [FS#3845]: NetBSD compilation was still broken in some cases (Krille)
author rubidium <rubidium@openttd.org>
date Fri, 21 May 2010 15:56:19 +0000
parents 7af339d59bab
children a78f9f09cee9
files src/string.cpp src/string_func.h
diffstat 2 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -398,7 +398,7 @@
 	return length;
 }
 
-#ifndef _GNU_SOURCE
+#ifdef DEFINE_STRNDUP
 #include "core/math_func.hpp"
 char *strndup(const char *s, size_t len)
 {
@@ -407,7 +407,7 @@
 	memcpy(tmp, s, len);
 	return tmp;
 }
-#endif /* !_GNU_SOURCE */
+#endif /* DEFINE_STRNDUP */
 
 #ifdef DEFINE_STRCASESTR
 char *strcasestr(const char *haystack, const char *needle)
--- a/src/string_func.h
+++ b/src/string_func.h
@@ -251,10 +251,13 @@
 #include <sys/param.h>
 #endif
 
-#if !defined(_GNU_SOURCE) && !(defined(__NetBSD_Version__) && 400000000 < __NetBSD_Version__ )
 /* strndup is a GNU extension */
+#if defined(_GNU_SOURCE) || (defined(__NetBSD_Version__) && 400000000 <= __NetBSD_Version__)
+#	undef DEFINE_STRNDUP
+#else
+#	define DEFINE_STRNDUP
 char *strndup(const char *s, size_t len);
-#endif /* !_GNU_SOURCE */
+#endif /* strndup is available */
 
 /* strcasestr is available for _GNU_SOURCE, BSD and some Apple */
 #if defined(_GNU_SOURCE) || (defined(__BSD_VISIBLE) && __BSD_VISIBLE) || (defined(__APPLE__) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))) || defined(_NETBSD_SOURCE)