next time zone package update
Ken Pizzini
tz. at explicate.org
Tue Mar 14 16:58:16 UTC 2006
On Tue, Mar 14, 2006 at 10:49:13AM -0500, Arthur David Olson wrote:
> Proposed code changes are at the end of this message; the changes would:
> 1. eliminate conditionalization on __STDC__ by assuming a
> standard-conforming compiler is in use;
> 2. avoid gcc warnings about format strings in asctime;
> 3. introduce binary search logic in localtime.c.
Could you also please include the patch that Paul Eggert had
in message <87k6blg49q.fsf at penguin.cs.ucla.edu> (Thu, 23 Feb 2006
13:21:37 -0800) for automatically setting HAVE_STDINT_H on glibc
systems (like Linux)? (I've appended it below so you don't have
to hunt the archives.)
--Ken Pizzini
--- private.h 2006/02/23 06:18:32 2006.2.0.5
+++ private.h 2006/02/23 21:16:15 2006.2.0.7
@@ -48,10 +48,6 @@ static char privatehid[] = "@(#)private.
#define HAVE_SETTIMEOFDAY 3
#endif /* !defined HAVE_SETTIMEOFDAY */
-#ifndef HAVE_STDINT_H
-#define HAVE_STDINT_H (199901 <= __STDC_VERSION__)
-#endif /* !defined HAVE_STDINT_H */
-
#ifndef HAVE_STRERROR
#define HAVE_STRERROR 1
#endif /* !defined HAVE_STRERROR */
@@ -128,20 +124,30 @@ static char privatehid[] = "@(#)private.
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
+/* Define HAVE_STDINT_H's default value here, rather than at the
+ start, since __GLIBC__'s value depends on previously-included
+ files. (glibc 2.1 and later have stdint.h, even with pre-C99
+ compilers.) */
+#ifndef HAVE_STDINT_H
+#define HAVE_STDINT_H \
+ (199901 <= __STDC_VERSION__ || 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
+#endif /* !defined HAVE_STDINT_H */
+
#if HAVE_STDINT_H
#include <stdint.h>
#endif /* !HAVE_STDINT_H */
#ifndef INT_FAST64_MAX
-#ifdef LLONG_MAX
+/* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX. */
+#if defined LLONG_MAX || defined __LONG_LONG_MAX__
typedef long long int_fast64_t;
-#else /* !defined LLONG_MAX */
+#else /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */
#if (LONG_MAX >> 31) < 0xffffffff
Please use a compiler that supports a 64-bit integer type (or wider);
you may need to compile with "-DHAVE_STDINT_H".
#endif /* (LONG_MAX >> 31) < 0xffffffff */
typedef long int_fast64_t;
-#endif /* !defined LLONG_MAX */
+#endif /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */
#endif /* !defined INT_FAST64_MAX */
#ifndef INT32_MAX
More information about the tz
mailing list