Previously the tz code used "#ifdef __STDC__" to check whether the C compiler is compatible with C89 or later, but tz64code2006b changes this to "#if __STDC__". This change has an undesirable affect on Solaris, where Sun's C compiler by default defines __STDC__ to 0; you must give it an option before it defines __STDC__ to 1. (This is because Sun enables certain traditional but incompatible extensions like stdio.h's fileno by default, and __STDC__==0 signals this.) As a result, Sun's C compiler now compiles in K&R mode, and this doesn't check the types as well. Here is a proposed patch to revert to the previous way of doing things. If you like, I can propose a further patch to remove support for K&R C. This will simplify the code and ease our maintenance burden, as nobody uses K&R C compilers any more except for computer museums (which shouldn't count). =================================================================== RCS file: RCS/date.c,v retrieving revision 2006.2 retrieving revision 2006.2.0.1 diff -pu -r2006.2 -r2006.2.0.1 --- date.c 2006/02/20 15:08:17 2006.2 +++ date.c 2006/02/21 21:07:30 2006.2.0.1 @@ -352,7 +352,7 @@ dogmt() /*ARGSUSED*/ static void -#if __STDC__ +#ifdef __STDC__ reset(const time_t newt, const int nflag) #else /* !__STDC__ */ reset(newt, nflag) @@ -623,7 +623,7 @@ register const struct tm * const btmp; #define ATOI2(ar) (ar[0] - '0') * 10 + (ar[1] - '0'); ar += 2; static time_t -#if __STDC__ +#ifdef __STDC__ convert(register const char * const value, const int dousg, const time_t t) #else /* !__STDC__ */ convert(value, dousg, t) @@ -734,7 +734,7 @@ const time_t t; */ static void -#if __STDC__ +#ifdef __STDC__ checkfinal(const char * const value, const int didusg, const time_t t, @@ -804,7 +804,7 @@ const time_t oldnow; } static void -#if __STDC__ +#ifdef __STDC__ iffy(const time_t thist, const time_t thatt, const char * const value, const char * const reason) #else /* !__STDC__ */ =================================================================== RCS file: RCS/localtime.c,v retrieving revision 2006.2 retrieving revision 2006.2.0.1 diff -pu -r2006.2 -r2006.2.0.1 --- localtime.c 2006/02/20 15:08:17 2006.2 +++ localtime.c 2006/02/21 21:07:30 2006.2.0.1 @@ -602,7 +602,7 @@ register const char * strp; */ static const char * -#if __STDC__ +#ifdef __STDC__ getqzname(register const char *strp, const int delim) #else /* !__STDC__ */ getqzname(strp, delim) =================================================================== RCS file: RCS/zdump.c,v retrieving revision 2006.2 retrieving revision 2006.2.0.1 diff -pu -r2006.2 -r2006.2.0.1 --- zdump.c 2006/02/20 15:08:17 2006.2 +++ zdump.c 2006/02/21 21:07:30 2006.2.0.1 @@ -130,7 +130,7 @@ static char elsieid[] = "@(#)zdump.c 8.1 #endif /* !defined TZ_DOMAIN */ #ifndef P -#if __STDC__ +#ifdef __STDC__ #define P(x) x #else /* !__STDC__ */ #define P(x) () @@ -475,7 +475,7 @@ const long y; } static time_t -#if __STDC__ +#ifdef __STDC__ hunt(char *name, time_t lot, time_t hit) #else /* !__STDC__ */ hunt(name, lot, hit) @@ -552,7 +552,7 @@ struct tm * oldp; } static void -#if __STDC__ +#ifdef __STDC__ show(char *zone, time_t t, int v) #else /* !__STDC__ */ show(zone, t, v) =================================================================== RCS file: RCS/private.h,v retrieving revision 2006.2 retrieving revision 2006.2.0.1 diff -pu -r2006.2 -r2006.2.0.1 --- private.h 2006/02/20 15:08:17 2006.2 +++ private.h 2006/02/21 21:07:30 2006.2.0.1 @@ -156,7 +156,7 @@ typedef long int_fast64_t; */ #ifndef P -#if __STDC__ +#ifdef __STDC__ #define P(x) x #else /* !__STDC__ */ #define P(x) ()