#include <float.h>
#include <limits.h>
+#ifdef HAVE_TIMEZONE_T
+# include <sys/param.h>
+# if defined __NetBSD_Version__ && __NetBSD_Version__ < 700000000
+# define HAVE_TZALLOC_BUG true
+# endif
+#endif
+#ifndef HAVE_TZALLOC_BUG
+# define HAVE_TZALLOC_BUG false
+#endif
+
#include <c-ctype.h>
#include <intprops.h>
#include <stdlib.h>
new_tz = tzalloc (zone_string);
-#if defined __NetBSD_Version__ && __NetBSD_Version__ < 700000000
- /* NetBSD 6 tzalloc mishandles POSIX TZ strings (Bug#30738).
- If possible, fall back on tzdb. */
- if (!new_tz && errno != ENOMEM && plain_integer
+ if (HAVE_TZALLOC_BUG && !new_tz && errno != ENOMEM && plain_integer
&& XINT (zone) % (60 * 60) == 0)
{
+ /* tzalloc mishandles POSIX strings; fall back on tzdb if
+ possible (Bug#30738). */
sprintf (tzbuf, "Etc/GMT%+"pI"d", - (XINT (zone) / (60 * 60)));
new_tz = tzalloc (zone_string);
}
-#endif
if (!new_tz)
{