next time zone package update

Arthur David Olson olsona at lecserver.nci.nih.gov
Tue Mar 14 15:49:13 UTC 2006


My plan is to wait for Sri Lanka changes (which affect present and future
rather than historical instants) then update the elsie ftp directory to contain
	old-tzcode-32-bit-binary-files.tar.gz	(tz32code2006b.tar.gz renamed)
and
	tzcode2006c.tar.gz			(not tz64code2006c.tar.gz)
and
	tzdata2006c.tar.gz			(not tz64data2006c.tar.gz)

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.

At least for now, the plan is to forego size_t tweaks,
changes in default zdump cutoff years,
and elimination of the P (paramater) macro.

				--ado

------- asctime.c -------
*** /tmp/geta17330	Tue Mar 14 10:20:10 2006
--- /tmp/getb17330	Tue Mar 14 10:20:10 2006
***************
*** 11,17 ****
  
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)asctime.c	8.1";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
--- 11,17 ----
  
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)asctime.c	8.2";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
***************
*** 23,29 ****
  /*
  ** Some systems only handle "%.2d"; others only handle "%02d";
  ** "%02.2d" makes (most) everybody happy.
! ** At least some versions of gcc warn about the %02.2d; ignore the warning.
  */
  /*
  ** All years associated with 32-bit time_t values are exactly four digits long;
--- 23,30 ----
  /*
  ** Some systems only handle "%.2d"; others only handle "%02d";
  ** "%02.2d" makes (most) everybody happy.
! ** At least some versions of gcc warn about the %02.2d;
! ** we conditionalize below to avoid the warning.
  */
  /*
  ** All years associated with 32-bit time_t values are exactly four digits long;
***************
*** 37,43 ****
--- 38,48 ----
  ** The ISO C 1999 and POSIX 1003.1-2004 standards prohibit padding the year,
  ** but many implementations pad anyway; most likely the standards are buggy.
  */
+ #ifdef __GNUC__
+ #define ASCTIME_FMT	"%.3s %.3s%3d %2.2d:%2.2d:%2.2d %-4s\n"
+ #else /* !defined __GNUC__ */
  #define ASCTIME_FMT	"%.3s %.3s%3d %02.2d:%02.2d:%02.2d %-4s\n"
+ #endif /* !defined __GNUC__ */
  /*
  ** For years that are more than four digits we put extra spaces before the year
  ** so that code trying to overwrite the newline won't end up overwriting
***************
*** 44,50 ****
--- 49,59 ----
  ** a digit within a year and truncating the year (operating on the assumption
  ** that no output is better than wrong output).
  */
+ #ifdef __GNUC__
+ #define ASCTIME_FMT_B	"%.3s %.3s%3d %2.2d:%2.2d:%2.2d     %s\n"
+ #else /* !defined __GNUC__ */
  #define ASCTIME_FMT_B	"%.3s %.3s%3d %02.2d:%02.2d:%02.2d     %s\n"
+ #endif /* !defined __GNUC__ */
  
  #define STD_ASCTIME_BUF_SIZE	26
  /*

------- date.c -------
*** /tmp/geta17349	Tue Mar 14 10:20:10 2006
--- /tmp/getb17349	Tue Mar 14 10:20:10 2006
***************
*** 1,6 ****
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)date.c	8.1";
  /*
  ** Modified from the UCB version with the SCCS ID appearing below.
  */
--- 1,6 ----
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)date.c	8.2";
  /*
  ** Modified from the UCB version with the SCCS ID appearing below.
  */
***************
*** 352,364 ****
  
  /*ARGSUSED*/
  static void
- #if __STDC__
  reset(const time_t newt, const int nflag)
- #else /* !__STDC__ */
- reset(newt, nflag)
- const time_t	newt;
- const int	nflag;
- #endif /* !__STDC__ */
  {
  	register int		fid;
  	time_t			oldt;
--- 352,358 ----
***************
*** 623,636 ****
  #define ATOI2(ar)	(ar[0] - '0') * 10 + (ar[1] - '0'); ar += 2;
  
  static time_t
- #if __STDC__
  convert(register const char * const value, const int dousg, const time_t t)
- #else /* !__STDC__ */
- convert(value, dousg, t)
- register const char * const	value;
- const int			dousg;
- const time_t			t;
- #endif /* !__STDC__ */
  {
  	register const char *	cp;
  	register const char *	dotp;
--- 617,623 ----
***************
*** 734,751 ****
  */
  
  static void
- #if __STDC__
  checkfinal(const char * const	value,
  	   const int		didusg,
  	   const time_t		t,
  	   const time_t		oldnow)
- #else /* !__STDC__ */
- checkfinal(value, didusg, t, oldnow)
- const char * const	value;
- const int		didusg;
- const time_t		t;
- const time_t		oldnow;
- #endif /* !__STDC__ */
  {
  	time_t		othert;
  	struct tm	tm;
--- 721,730 ----
***************
*** 804,819 ****
  }
  
  static void
- #if __STDC__
  iffy(const time_t thist, const time_t thatt,
  	const char * const value, const char * const reason)
- #else /* !__STDC__ */
- iffy(thist, thatt, value, reason)
- const time_t		thist;
- const time_t		thatt;
- const char * const	value;
- const char * const	reason;
- #endif /* !__STDC__ */
  {
  	struct tm	tm;
  
--- 783,790 ----

------- localtime.c -------
*** /tmp/geta17444	Tue Mar 14 10:20:12 2006
--- /tmp/getb17444	Tue Mar 14 10:20:12 2006
***************
*** 5,11 ****
  
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)localtime.c	8.1";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
--- 5,11 ----
  
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)localtime.c	8.3";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
***************
*** 602,614 ****
  */
  
  static const char *
- #if __STDC__
  getqzname(register const char *strp, const int delim)
- #else /* !__STDC__ */
- getqzname(strp, delim)
- register const char *	strp;
- const int		delim;
- #endif /* !__STDC__ */
  {
  	register int	c;
  
--- 602,608 ----
***************
*** 1263,1272 ****
  				break;
  			}
  	} else {
! 		for (i = 1; i < sp->timecnt; ++i)
! 			if (t < sp->ats[i])
! 				break;
! 		i = (int) sp->types[i - 1];
  	}
  	ttisp = &sp->ttis[i];
  	/*
--- 1257,1273 ----
  				break;
  			}
  	} else {
! 		register int	lo = 1;
! 		register int	hi = sp->timecnt;
! 
! 		while (lo < hi) {
! 			register int	mid = (lo + hi) >> 1;
! 
! 			if (t < sp->ats[mid])
! 				hi = mid;
! 			else	lo = mid + 1;
! 		}
! 		i = (int) sp->types[lo - 1];
  	}
  	ttisp = &sp->ttis[i];
  	/*

------- private.h -------
*** /tmp/geta17482	Tue Mar 14 10:20:12 2006
--- /tmp/getb17482	Tue Mar 14 10:20:12 2006
***************
*** 21,27 ****
  
  #ifndef lint
  #ifndef NOID
! static char	privatehid[] = "@(#)private.h	8.1";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
--- 21,27 ----
  
  #ifndef lint
  #ifndef NOID
! static char	privatehid[] = "@(#)private.h	8.2";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
***************
*** 152,166 ****
  */
  
  /*
! ** SunOS 4.1.1 cc lacks prototypes.
  */
  
  #ifndef P
- #if __STDC__
  #define P(x)	x
- #else /* !__STDC__ */
- #define P(x)	()
- #endif /* ! __STDC__ */
  #endif /* !defined P */
  
  /*
--- 152,162 ----
  */
  
  /*
! ** If your compiler lacks prototypes, "#define P(x) ()".
  */
  
  #ifndef P
  #define P(x)	x
  #endif /* !defined P */
  
  /*

------- zdump.c -------
*** /tmp/geta17586	Tue Mar 14 10:20:14 2006
--- /tmp/getb17586	Tue Mar 14 10:20:14 2006
***************
*** 1,4 ****
! static char	elsieid[] = "@(#)zdump.c	8.1";
  
  /*
  ** This code has been made independent of the rest of the time
--- 1,4 ----
! static char	elsieid[] = "@(#)zdump.c	8.2";
  
  /*
  ** This code has been made independent of the rest of the time
***************
*** 130,140 ****
  #endif /* !defined TZ_DOMAIN */
  
  #ifndef P
- #if __STDC__
  #define P(x)	x
- #else /* !__STDC__ */
- #define P(x)	()
- #endif /* !__STDC__ */
  #endif /* !defined P */
  
  extern char **	environ;
--- 130,136 ----
***************
*** 475,488 ****
  }
  
  static time_t
- #if __STDC__
  hunt(char *name, time_t lot, time_t hit)
- #else /* !__STDC__ */
- hunt(name, lot, hit)
- char *	name;
- time_t	lot;
- time_t	hit;
- #endif /* !__STDC__ */
  {
  	time_t			t;
  	long			diff;
--- 471,477 ----
***************
*** 552,565 ****
  }
  
  static void
- #if __STDC__
  show(char *zone, time_t t, int v)
- #else /* !__STDC__ */
- show(zone, t, v)
- char *	zone;
- time_t	t;
- int	v;
- #endif /* !__STDC__ */
  {
  	register struct tm *	tmp;
  
--- 541,547 ----



More information about the tz mailing list