tz
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1999 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1998 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1997 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1996 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1995 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1994 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1993 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1992 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1991 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1990 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1989 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1988 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1987 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1986 -----
- December
- November
- 9 participants
- 7523 discussions
Feb. 10, 2005
The files...
ftp://elsie.nci.nih.gov/pub/tzcode2005e.tar.gz
...and...
ftp://elsie.nci.nih.gov/pub/tzdata2005e.tar.gz
...are now available; these incorporate the changes circulated last week on
the time zone mailing list.
My fond hope is the above code is stable for now; it's time for a design
phase to figure out what else (if anything) to do to cope with 64-bit time_t
values. Details to follow.
--ado
1
0
Ephraim Silverberg <ephraim(a)cse.huji.ac.il> writes:
> emacs -batch -l dst-israel.el
>
> ... If the law passes, I'll put the script in the Israel TZ ftp depository.
Thanks for doing that! A couple of minor comments. First, the
existing database uses "Apr<tab>25" and "Apr<tab><space>9" rather than
"Apr<space>25" and "Apr<space><space>9". Also, it'd be a bit handier
to input a range of dates rather than a single date.
I used your program to write the following draft patch. I don't think
this should go into the tz database just yet (Israeli politics being
what they are) but I thought you might like to see the draft.
Thanks again.
--- asia 2004/10/11 18:44:51 2004.5
+++ asia 2004/12/22 23:00:21
@@ -639,7 +639,7 @@ Rule Zion 1988 only - Apr 9 0:00 1:00 D
Rule Zion 1988 only - Sep 3 0:00 0 S
# From Ephraim Silverberg <ephraim(a)cs.huji.ac.il>
-# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17 and 2000-07-25):
+# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, and 2004-12-22):
# According to the Office of the Secretary General of the Ministry of
# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
@@ -690,13 +690,13 @@ Rule Zion 1995 only - Sep 3 0:00 0 S
# time, Haim Ramon. The official announcement regarding 1996-1998
# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
#
-# ftp://ftp.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
#
# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
#
# The official announcements for the years 1997-1999 can be viewed at:
#
-# ftp://ftp.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
#
# where YYYY is the relevant year.
@@ -716,12 +716,12 @@ Rule Zion 1999 only - Sep 3 2:00 0 S
#
# The official announcement for the start date of 2000 can be viewed at:
#
-# ftp://ftp.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
#
# The official announcement for the end date of 2000 and the dates
# for the years 2001-2004 can be viewed at:
#
-# ftp://ftp.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Zion 2000 only - Apr 14 2:00 1:00 D
@@ -735,52 +735,97 @@ Rule Zion 2003 only - Oct 3 1:00 0 S
Rule Zion 2004 only - Apr 7 1:00 1:00 D
Rule Zion 2004 only - Sep 22 1:00 0 S
-# From Paul Eggert (2000-07-25):
-# Here are guesses for rules after 2004.
-# They are probably wrong, but they are more likely than no DST at all.
+# Yesterday, the Knesset Interior Committee passed a proposed (originally
+# in March 2004) change to the Time Setting Law that would make the dates
+# for DST from 2005 and beyond so that DST starts on the night _after_ the
+# first night of the Passover holiday at midnight until midnight of the
+# Saturday night _before_ the fast of Yom Kippur.
+#
+# Those who can read Hebrew can view the proposal at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+.ps
+#
+# The proposal still has to be passed by the Knesset (three readings) for
+# it to become law....
+
+# From Paul Eggert (2004-12-22):
+# For now, guess that the rules proposed on 2004-12-20 will be adopted.
+# This is quite possibly wrong, but it is more likely than no DST at all.
+# I used Ed Reingold's cal-hebrew in GNU Emacs 21.3, along with code
+# written by Ephraim Silverberg, to generate this list.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Zion 2005 max - Apr 1 1:00 1:00 D
-Rule Zion 2005 max - Oct 1 1:00 0 S
+Rule Zion 2005 only - Apr 25 0:00 1:00 D
+Rule Zion 2005 only - Oct 9 0:00 0 S
+Rule Zion 2006 only - Apr 14 0:00 1:00 D
+Rule Zion 2006 only - Oct 1 0:00 0 S
+Rule Zion 2007 only - Apr 4 0:00 1:00 D
+Rule Zion 2007 only - Sep 16 0:00 0 S
+Rule Zion 2008 only - Apr 21 0:00 1:00 D
+Rule Zion 2008 only - Oct 5 0:00 0 S
+Rule Zion 2009 only - Apr 10 0:00 1:00 D
+Rule Zion 2009 only - Sep 27 0:00 0 S
+Rule Zion 2010 only - Mar 31 0:00 1:00 D
+Rule Zion 2010 only - Sep 12 0:00 0 S
+Rule Zion 2011 only - Apr 20 0:00 1:00 D
+Rule Zion 2011 only - Oct 2 0:00 0 S
+Rule Zion 2012 only - Apr 8 0:00 1:00 D
+Rule Zion 2012 only - Sep 23 0:00 0 S
+Rule Zion 2013 only - Mar 27 0:00 1:00 D
+Rule Zion 2013 only - Sep 8 0:00 0 S
+Rule Zion 2014 only - Apr 16 0:00 1:00 D
+Rule Zion 2014 only - Sep 28 0:00 0 S
+Rule Zion 2015 only - Apr 5 0:00 1:00 D
+Rule Zion 2015 only - Sep 20 0:00 0 S
+Rule Zion 2016 only - Apr 24 0:00 1:00 D
+Rule Zion 2016 only - Oct 9 0:00 0 S
+Rule Zion 2017 only - Apr 12 0:00 1:00 D
+Rule Zion 2017 only - Sep 24 0:00 0 S
+Rule Zion 2018 only - Apr 1 0:00 1:00 D
+Rule Zion 2018 only - Sep 16 0:00 0 S
+Rule Zion 2019 only - Apr 21 0:00 1:00 D
+Rule Zion 2019 only - Oct 6 0:00 0 S
+Rule Zion 2020 only - Apr 10 0:00 1:00 D
+Rule Zion 2020 only - Sep 27 0:00 0 S
+Rule Zion 2021 only - Mar 29 0:00 1:00 D
+Rule Zion 2021 only - Sep 12 0:00 0 S
+Rule Zion 2022 only - Apr 17 0:00 1:00 D
+Rule Zion 2022 only - Oct 2 0:00 0 S
+Rule Zion 2023 only - Apr 7 0:00 1:00 D
+Rule Zion 2023 only - Sep 24 0:00 0 S
+Rule Zion 2024 only - Apr 24 0:00 1:00 D
+Rule Zion 2024 only - Oct 6 0:00 0 S
+Rule Zion 2025 only - Apr 14 0:00 1:00 D
+Rule Zion 2025 only - Sep 28 0:00 0 S
+Rule Zion 2026 only - Apr 3 0:00 1:00 D
+Rule Zion 2026 only - Sep 20 0:00 0 S
+Rule Zion 2027 only - Apr 23 0:00 1:00 D
+Rule Zion 2027 only - Oct 10 0:00 0 S
+Rule Zion 2028 only - Apr 12 0:00 1:00 D
+Rule Zion 2028 only - Sep 24 0:00 0 S
+Rule Zion 2029 only - Apr 1 0:00 1:00 D
+Rule Zion 2029 only - Sep 16 0:00 0 S
+Rule Zion 2030 only - Apr 19 0:00 1:00 D
+Rule Zion 2030 only - Oct 6 0:00 0 S
+Rule Zion 2031 only - Apr 9 0:00 1:00 D
+Rule Zion 2031 only - Sep 21 0:00 0 S
+Rule Zion 2032 only - Mar 28 0:00 1:00 D
+Rule Zion 2032 only - Sep 12 0:00 0 S
+Rule Zion 2033 only - Apr 15 0:00 1:00 D
+Rule Zion 2033 only - Oct 2 0:00 0 S
+Rule Zion 2034 only - Apr 5 0:00 1:00 D
+Rule Zion 2034 only - Sep 17 0:00 0 S
+Rule Zion 2035 only - Apr 25 0:00 1:00 D
+Rule Zion 2035 only - Oct 7 0:00 0 S
+Rule Zion 2036 only - Apr 13 0:00 1:00 D
+Rule Zion 2036 only - Sep 28 0:00 0 S
+Rule Zion 2037 only - Apr 1 0:00 1:00 D
+Rule Zion 2037 only - Sep 13 0:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Jerusalem 2:20:56 - LMT 1880
2:20:40 - JMT 1918 # Jerusalem Mean Time?
2:00 Zion I%sT
-# From Ephraim Silverberg (2003-03-23):
-#
-# Minister of Interior Poraz has announced that he will respect the law
-# passed in July 2000 (proposed at the time jointly by himself and
-# then-MK David Azulai [Shas]) fixing the dates for 2000-2004. Hence,
-# the dates for 2003 and 2004 remain unchanged....
-#
-# As far as 2005 and beyond, no dates have been set. However, the
-# minister has mentioned that he wishes to propose to move Israel's
-# timezone in 2005 from GMT+2 to GMT+3 and upon that have DST during
-# the summer months (i.e. GMT+4). However, no legislation in this
-# direction is expected until the latter part of 2004 which is a long
-# time off in terms of Israeli politics.
-
-# (2004-09-20):
-# The latest rumour, however, is that in 2005, when the clock changes to
-# Daylight Saving Time (date as yet unknown), the move will be a two-hour leap
-# forward (from UTC+0200 to UTC+0400) and then, in the fall, the clock will
-# move back only an hour to UTC+0300 thus effectively moving Israel's timezone
-# from UTC+0200 to UTC+0300. However, no actual draft has been put before the
-# Knesset (Israel's Parliament) though the intention is to do so this
-# month [2004-09].
-
-# (2004-09-26):
-# Even though the draft law for the above did pass the Ministerial Committee
-# for Legislative Matters three months ago, it was voted down in today's
-# Cabinet meeting. The current suggestion is to keep the current timezone at
-# UTC+0200 but have an extended period of Daylight Saving Time (UTC+0300) from
-# the beginning of Passover holiday in the spring to after the Tabernacle
-# holiday in the fall (i.e. the dates of which are governed by the Hebrew
-# calendar but this means at least 184 days of DST). However, this is only a
-# suggestion that was raised in today's cabinet meeting and has not yet been
-# drafted.
-
###############################################################################
2
2
Feb. 7, 2005
Doug Royer is not on the time zone mailing list; direct replies
appropriately.
--ado
-----Original Message-----
From: Doug Royer [mailto:Doug@Royer.com]
Sent: Monday, January 17, 2005 2:12 PM
To: tz(a)lecserver.nci.nih.gov
Subject: IANA time zone registration - proposal
[This was sent to some IETF mailing lists by me and someone suggested I send
it to this list also]
This is REV -00 of the proposal - comments welcome. Data in in it can easily
updated. (Like the TZ names updated to latest copy of data)
----------------------------------------------------
A couple of years ago there was talk on the CALSCH mailing list to have an
IANA time zone registration process. I have submitted a proposal for that
registry to the IETF.
A copy can be found at:
http://inet-consulting.com/draft-royer-timezone-registry-00.txt
And an HTML version:
http://inet-consulting.com/draft-royer-timezone-registry-00.html
I am adding the POLYGON property targeted for the -01 version that has an
ADD/DELETE parameter to allow for the optional inclusion of
latitude/longitude geographic areas to be included that include (add) and
exclude (delete) areas from the time zone geographic region (again from the
CALSCH mailing list discussions).
--
Doug Royer | http://INET-Consulting.com
-------------------------------|-----------------------------
Doug(a)Royer.com | Office: (208)612-4638
http://Royer.com | Fax: (866)594-8574
| Cell: (208)520-4044
We Do Standards - You Need Standards
7
10
Ken Pizzini reviewed the proposed changes sent out last week and pointed out
a change I failed to note in the summary: the setlocale calls in zic.c and
zdump.c have been changed to use the LC_ALL parameter rather than the
LC_MESSAGES parameter. (This based on earlier electronic mail claiming that
setting only LC_MESSAGES rather than LC_ALL can lead to problems.)
As suggested by Paul Eggert, the "diff -b" output appears below.
--ado
diff -b -c old/date.c new/date.c
*** old/date.c Mon Jan 31 09:20:47 2005
--- new/date.c Mon Jan 31 14:06:49 2005
***************
*** 1,6 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)date.c 7.40";
/*
** Modified from the UCB version with the SCCS ID appearing below.
*/
--- 1,6 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)date.c 7.41";
/*
** Modified from the UCB version with the SCCS ID appearing below.
*/
***************
*** 664,670 ****
cp = value;
switch (dotp - cp) {
default:
! wildinput(_("time"), value, _("main part is wrong
length"));
case 12:
if (!dousg) {
cent = ATOI2(cp);
--- 664,671 ----
cp = value;
switch (dotp - cp) {
default:
! wildinput(_("time"), value,
! _("main part is wrong length"));
case 12:
if (!dousg) {
cent = ATOI2(cp);
diff -b -c old/private.h new/private.h
*** old/private.h Mon Jan 31 09:19:08 2005
--- new/private.h Mon Jan 31 14:06:49 2005
***************
*** 91,103 ****
#include "time.h"
#include "stdlib.h"
! #if HAVE_GETTEXT - 0
#include "libintl.h"
! #endif /* HAVE_GETTEXT - 0 */
! #if HAVE_SYS_WAIT_H - 0
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */
! #endif /* HAVE_SYS_WAIT_H - 0 */
#ifndef WIFEXITED
#define WIFEXITED(status) (((status) & 0xff) == 0)
--- 91,103 ----
#include "time.h"
#include "stdlib.h"
! #if HAVE_GETTEXT
#include "libintl.h"
! #endif /* HAVE_GETTEXT */
! #if HAVE_SYS_WAIT_H
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */
! #endif /* HAVE_SYS_WAIT_H */
#ifndef WIFEXITED
#define WIFEXITED(status) (((status) & 0xff) == 0)
***************
*** 106,116 ****
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
#endif /* !defined WEXITSTATUS */
! #if HAVE_UNISTD_H - 0
#include "unistd.h" /* for F_OK and R_OK */
! #endif /* HAVE_UNISTD_H - 0 */
! #if !(HAVE_UNISTD_H - 0)
#ifndef F_OK
#define F_OK 0
#endif /* !defined F_OK */
--- 106,116 ----
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
#endif /* !defined WEXITSTATUS */
! #if HAVE_UNISTD_H
#include "unistd.h" /* for F_OK and R_OK */
! #endif /* HAVE_UNISTD_H */
! #if !HAVE_UNISTD_H
#ifndef F_OK
#define F_OK 0
#endif /* !defined F_OK */
***************
*** 117,123 ****
#ifndef R_OK
#define R_OK 4
#endif /* !defined R_OK */
! #endif /* !(HAVE_UNISTD_H - 0) */
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX.
*/
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
--- 117,123 ----
#ifndef R_OK
#define R_OK 4
#endif /* !defined R_OK */
! #endif /* !HAVE_UNISTD_H */
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX.
*/
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
***************
*** 216,222 ****
void * irealloc P((void * pointer, int size));
void icfree P((char * pointer));
void ifree P((char * pointer));
! char * scheck P((const char *string, const char *format));
/*
** Finally, some convenience items.
--- 216,222 ----
void * irealloc P((void * pointer, int size));
void icfree P((char * pointer));
void ifree P((char * pointer));
! char * scheck P((const char *string, char *format));
/*
** Finally, some convenience items.
***************
*** 255,261 ****
** add one more for a minus sign if the type is signed.
*/
#define INT_STRLEN_MAXIMUM(type) \
! ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 +
TYPE_SIGNED(type))
#endif /* !defined INT_STRLEN_MAXIMUM */
/*
--- 255,262 ----
** add one more for a minus sign if the type is signed.
*/
#define INT_STRLEN_MAXIMUM(type) \
! ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
! 1 + TYPE_SIGNED(type))
#endif /* !defined INT_STRLEN_MAXIMUM */
/*
***************
*** 289,299 ****
*/
#ifndef _
! #if HAVE_GETTEXT - 0
#define _(msgid) gettext(msgid)
! #else /* !(HAVE_GETTEXT - 0) */
#define _(msgid) msgid
! #endif /* !(HAVE_GETTEXT - 0) */
#endif /* !defined _ */
#ifndef TZ_DOMAIN
--- 290,300 ----
*/
#ifndef _
! #if HAVE_GETTEXT
#define _(msgid) gettext(msgid)
! #else /* !HAVE_GETTEXT */
#define _(msgid) msgid
! #endif /* !HAVE_GETTEXT */
#endif /* !defined _ */
#ifndef TZ_DOMAIN
diff -b -c old/scheck.c new/scheck.c
*** old/scheck.c Mon Jan 31 09:20:47 2005
--- new/scheck.c Mon Jan 31 14:06:49 2005
***************
*** 1,6 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)scheck.c 8.15";
#endif /* !defined lint */
#endif /* !defined NOID */
--- 1,6 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)scheck.c 8.16";
#endif /* !defined lint */
#endif /* !defined NOID */
***************
*** 11,17 ****
char *
scheck(string, format)
const char * const string;
! const char * const format;
{
register char * fbuf;
register const char * fp;
--- 11,17 ----
char *
scheck(string, format)
const char * const string;
! char * const format;
{
register char * fbuf;
register const char * fp;
diff -b -c old/strftime.c new/strftime.c
*** old/strftime.c Mon Jan 31 09:20:47 2005
--- new/strftime.c Mon Jan 31 14:06:50 2005
***************
*** 1,6 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)strftime.c 7.74";
/*
** Based on the UCB version with the ID appearing below.
** This is ANSIish only when "multibyte character == plain character".
--- 1,6 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)strftime.c 7.75";
/*
** Based on the UCB version with the ID appearing below.
** This is ANSIish only when "multibyte character == plain character".
***************
*** 108,114 ****
static char * _add P((const char *, char *, const char *));
static char * _conv P((int, const char *, char *, const char *));
! static char * _fmt P((const char *, const struct tm *, char *, const char
*, int *));
static char * _yconv P((int, int, int, int, char *, const char *));
extern char * tzname[];
--- 108,115 ----
static char * _add P((const char *, char *, const char *));
static char * _conv P((int, const char *, char *, const char *));
! static char * _fmt P((const char *, const struct tm *, char *, const char
*,
! int *));
static char * _yconv P((int, int, int, int, char *, const char *));
extern char * tzname[];
diff -b -c old/tzfile.h new/tzfile.h
*** old/tzfile.h Mon Jan 31 09:19:08 2005
--- new/tzfile.h Mon Jan 31 14:06:49 2005
***************
*** 21,27 ****
#ifndef lint
#ifndef NOID
! static char tzfilehid[] = "@(#)tzfile.h 7.16";
#endif /* !defined NOID */
#endif /* !defined lint */
--- 21,27 ----
#ifndef lint
#ifndef NOID
! static char tzfilehid[] = "@(#)tzfile.h 7.17";
#endif /* !defined NOID */
#endif /* !defined lint */
***************
*** 172,197 ****
#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
- #ifndef USG
-
- /*
- ** Use of the underscored variants may cause problems if you move your
code to
- ** certain System-V-based systems; for maximum portability, use the
- ** underscore-free variants. The underscored variants are provided for
- ** backward compatibility only; they may disappear from future versions of
- ** this file.
- */
-
- #define SECS_PER_MIN SECSPERMIN
- #define MINS_PER_HOUR MINSPERHOUR
- #define HOURS_PER_DAY HOURSPERDAY
- #define DAYS_PER_WEEK DAYSPERWEEK
- #define DAYS_PER_NYEAR DAYSPERNYEAR
- #define DAYS_PER_LYEAR DAYSPERLYEAR
- #define SECS_PER_HOUR SECSPERHOUR
- #define SECS_PER_DAY SECSPERDAY
- #define MONS_PER_YEAR MONSPERYEAR
-
- #endif /* !defined USG */
-
#endif /* !defined TZFILE_H */
--- 172,175 ----
diff -b -c old/zdump.c new/zdump.c
*** old/zdump.c Mon Jan 31 09:20:47 2005
--- new/zdump.c Mon Jan 31 14:20:42 2005
***************
*** 1,4 ****
! static char elsieid[] = "@(#)zdump.c 7.61";
/*
** This code has been made independent of the rest of the time
--- 1,4 ----
! static char elsieid[] = "@(#)zdump.c 7.63";
/*
** This code has been made independent of the rest of the time
***************
*** 215,221 ****
INITIALIZE(cutlotime);
INITIALIZE(cuthitime);
#if HAVE_GETTEXT
! (void) setlocale(LC_MESSAGES, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
--- 215,221 ----
INITIALIZE(cutlotime);
INITIALIZE(cuthitime);
#if HAVE_GETTEXT
! (void) setlocale(LC_ALL, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
diff -b -c old/zic.c new/zic.c
*** old/zic.c Mon Jan 31 09:20:47 2005
--- new/zic.c Mon Jan 31 14:20:42 2005
***************
*** 1,4 ****
! static char elsieid[] = "@(#)zic.c 7.120";
/*
** Regardless of the type of time_t, we do our work using this type.
--- 1,4 ----
! static char elsieid[] = "@(#)zic.c 7.122";
/*
** Regardless of the type of time_t, we do our work using this type.
***************
*** 138,146 ****
static void writezone P((const char * name));
static int yearistype P((int year, const char * type));
! #if !(HAVE_STRERROR - 0)
static char * strerror P((int));
! #endif /* !(HAVE_STRERROR - 0) */
static int charcnt;
static int errors;
--- 138,146 ----
static void writezone P((const char * name));
static int yearistype P((int year, const char * type));
! #if !HAVE_STRERROR
static char * strerror P((int));
! #endif /* !HAVE_STRERROR */
static int charcnt;
static int errors;
***************
*** 380,386 ****
** Error handling.
*/
! #if !(HAVE_STRERROR - 0)
static char *
strerror(errnum)
int errnum;
--- 380,386 ----
** Error handling.
*/
! #if !HAVE_STRERROR
static char *
strerror(errnum)
int errnum;
***************
*** 391,397 ****
return (errnum > 0 && errnum <= sys_nerr) ?
sys_errlist[errnum] : _("Unknown system error");
}
! #endif /* !(HAVE_STRERROR - 0) */
static void
eats(name, num, rname, rnum)
--- 391,397 ----
return (errnum > 0 && errnum <= sys_nerr) ?
sys_errlist[errnum] : _("Unknown system error");
}
! #endif /* !HAVE_STRERROR */
static void
eats(name, num, rname, rnum)
***************
*** 448,454 ****
static void
usage P((void))
{
! (void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v
] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds
] [ -y yearistype ] [ filename ... ]\n"),
progname, progname);
(void) exit(EXIT_FAILURE);
}
--- 448,456 ----
static void
usage P((void))
{
! (void) fprintf(stderr, _("%s: usage is %s \
! [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
! \t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ...
]\n"),
progname, progname);
(void) exit(EXIT_FAILURE);
}
***************
*** 472,484 ****
#ifdef unix
(void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
#endif /* defined unix */
! #if HAVE_GETTEXT - 0
! (void) setlocale(LC_MESSAGES, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
(void) textdomain(TZ_DOMAIN);
! #endif /* HAVE_GETTEXT - 0 */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
--- 474,486 ----
#ifdef unix
(void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
#endif /* defined unix */
! #if HAVE_GETTEXT
! (void) setlocale(LC_ALL, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
(void) textdomain(TZ_DOMAIN);
! #endif /* HAVE_GETTEXT */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
***************
*** 631,652 ****
(void) exit(EXIT_FAILURE);
result = link(fromname, toname);
! #if (HAVE_SYMLINK - 0)
if (result != 0 &&
access(fromname, F_OK) == 0 &&
!itsdir(fromname)) {
const char *s = tofile;
register char * symlinkcontents = NULL;
- while ((s = strchr(s+1, '/')) != NULL)
- symlinkcontents = ecatalloc(symlinkcontents,
"../");
- symlinkcontents = ecatalloc(symlinkcontents,
fromfile);
! result = symlink(symlinkcontents, toname);
if (result == 0)
warning(_("hard link failed, symbolic link used"));
ifree(symlinkcontents);
}
! #endif
if (result != 0) {
const char *e = strerror(errno);
--- 633,659 ----
(void) exit(EXIT_FAILURE);
result = link(fromname, toname);
! #if HAVE_SYMLINK
if (result != 0 &&
access(fromname, F_OK) == 0 &&
!itsdir(fromname)) {
const char *s = tofile;
register char * symlinkcontents = NULL;
! while ((s = strchr(s+1, '/')) != NULL)
! symlinkcontents =
! ecatalloc(symlinkcontents,
! "../");
! symlinkcontents =
! ecatalloc(symlinkcontents,
! fromfile);
! result = symlink(symlinkcontents,
! toname);
if (result == 0)
warning(_("hard link failed, symbolic link used"));
ifree(symlinkcontents);
}
! #endif /* HAVE_SYMLINK */
if (result != 0) {
const char *e = strerror(errno);
***************
*** 1107,1113 ****
zones[nzones - 1].z_untiltime > min_time &&
zones[nzones - 1].z_untiltime < max_time &&
zones[nzones - 1].z_untiltime >= z.z_untiltime) {
! error(_("Zone continuation line end time is
not after end time of previous line"));
return FALSE;
}
}
--- 1114,1122 ----
zones[nzones - 1].z_untiltime > min_time &&
zones[nzones - 1].z_untiltime < max_time &&
zones[nzones - 1].z_untiltime >= z.z_untiltime) {
! error(_(
! "Zone continuation line end time is not after end time of previous line"
! ));
return FALSE;
}
}
***************
*** 1141,1147 ****
cp = fields[LP_YEAR];
if (sscanf(cp, scheck(cp, "%d"), &year) != 1) {
/*
! * Leapin' Lizards!
*/
error(_("invalid leaping year"));
return;
--- 1150,1156 ----
cp = fields[LP_YEAR];
if (sscanf(cp, scheck(cp, "%d"), &year) != 1) {
/*
! ** Leapin' Lizards!
*/
error(_("invalid leaping year"));
return;
***************
*** 1211,1217 ****
return;
}
if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
! error(_("illegal Rolling/Stationary field on Leap
line"));
return;
}
leapadd(tadd(t, tod), positive, lp->l_value, count);
--- 1220,1228 ----
return;
}
if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
! error(_(
! "illegal Rolling/Stationary field on Leap
line"
! ));
return;
}
leapadd(tadd(t, tod), positive, lp->l_value, count);
***************
*** 1473,1485 ****
while (fromi < timecnt && attypes[fromi].type == 0)
++fromi; /* handled by default rule
*/
for ( ; fromi < timecnt; ++fromi) {
! if (toi != 0
! && ((attypes[fromi].at
! + gmtoffs[attypes[toi - 1].type])
! <= (attypes[toi - 1].at
! + gmtoffs[toi == 1 ? 0
: attypes[toi - 2].type]))) {
! attypes[toi - 1].type = attypes[fromi].type;
continue;
}
if (toi == 0 ||
--- 1484,1495 ----
while (fromi < timecnt && attypes[fromi].type == 0)
++fromi; /* handled by default rule
*/
for ( ; fromi < timecnt; ++fromi) {
! if (toi != 0 && ((attypes[fromi].at +
! gmtoffs[attypes[toi - 1].type]) <=
! (attypes[toi - 1].at + gmtoffs[toi == 1 ? 0
: attypes[toi - 2].type]))) {
! attypes[toi - 1].type =
! attypes[fromi].type;
continue;
}
if (toi == 0 ||
***************
*** 1526,1532 ****
convert(eitol(typecnt), tzh.tzh_typecnt);
convert(eitol(charcnt), tzh.tzh_charcnt);
(void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
! #define DO(field) (void) fwrite((void *) tzh.field, (size_t) sizeof
tzh.field, (size_t) 1, fp)
DO(tzh_magic);
DO(tzh_reserved);
DO(tzh_ttisgmtcnt);
--- 1536,1543 ----
convert(eitol(typecnt), tzh.tzh_typecnt);
convert(eitol(charcnt), tzh.tzh_charcnt);
(void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
! #define DO(field) (void) fwrite((void *) tzh.field, \
! (size_t) sizeof tzh.field, (size_t) 1, fp)
DO(tzh_magic);
DO(tzh_reserved);
DO(tzh_ttisgmtcnt);
***************
*** 1746,1757 ****
}
if (*startbuf == '\0' &&
startoff == oadd(zp->z_gmtoff,
! stdoff)) {
! doabbr(startbuf,
zp->z_format,
rp->r_abbrvar,
! rp->r_stdoff != 0);
}
- }
eats(zp->z_filename, zp->z_linenum,
rp->r_filename, rp->r_linenum);
doabbr(buf, zp->z_format, rp->r_abbrvar,
--- 1757,1769 ----
}
if (*startbuf == '\0' &&
startoff ==
oadd(zp->z_gmtoff,
! stdoff))
! doabbr(startbuf,
!
zp->z_format,
rp->r_abbrvar,
! rp->r_stdoff
!=
! 0);
}
eats(zp->z_filename, zp->z_linenum,
rp->r_filename, rp->r_linenum);
doabbr(buf, zp->z_format, rp->r_abbrvar,
***************
*** 2041,2047 ****
else while ((*dp = *cp++) != '"')
if (*dp != '\0')
++dp;
! else error(_("Odd number of quotation
marks"));
} while (*cp != '\0' && *cp != '#' &&
(!isascii(*cp) || !isspace((unsigned char) *cp)));
if (isascii(*cp) && isspace((unsigned char) *cp))
--- 2053,2061 ----
else while ((*dp = *cp++) != '"')
if (*dp != '\0')
++dp;
! else error(_(
! "Odd number of quotation
marks"
! ));
} while (*cp != '\0' && *cp != '#' &&
(!isascii(*cp) || !isspace((unsigned char) *cp)));
if (isascii(*cp) && isspace((unsigned char) *cp))
***************
*** 2162,2168 ****
}
if (i < 0 || i >= len_months[isleap(y)][m]) {
if (noise)
! warning(_("rule goes past start/end of
month--will not work with pre-2004 versions of zic"));
}
}
if (dayoff < 0 && !TYPE_SIGNED(zic_t))
--- 2176,2183 ----
}
if (i < 0 || i >= len_months[isleap(y)][m]) {
if (noise)
! warning(_("rule goes past start/end of
month--\
! will not work with pre-2004 versions of zic"));
}
}
if (dayoff < 0 && !TYPE_SIGNED(zic_t))
1
0
> But I insist that there should be an entry "Asia/Beijing" first.
> "Beijing Time" is represented by Shanghai, which is a unacceptable
> situation.
As far as we are concerned, the tzid is simply an internal tag, marking a
region of the Earth that has the same timezone behavior, all the way back to
the point in time where timezones started to be used instead of solar time.
The name for that tzid may vary by language, and it should be the most
customary form for that language (or even country).
It is a bit like arguing that CN should not be the official ISO 3166 country
code for China, because it is not an acronym for the Chinese name for the
country. The common name is divorced from the particular combination of
letters used for the code. The code is an internal tag, which should be
represented with an appropriate string for whatever the user's language is.
The main purpose of the code is that it be well-defined and unique.
If Shanghai and Beijing ever had different timezone behavior, that would
warrant having a different tzid; otherwise it doesn't.
‎Mark
----- Original Message -----
From: "Funda Wang" <fundawang(a)gmail.com>
To: "Mark Davis" <mark.davis(a)jtcsv.com>
Cc: "Paul Eggert" <eggert(a)CS.UCLA.EDU>; "Tz (tz(a)elsie.nci.nih.gov)"
<tz(a)lecserver.nci.nih.gov>
Sent: Friday, February 04, 2005 14:20
Subject: Re[2]: Corrections to timezone database
> Mark> I do want to call people's attention to the CLDR project work on
timezone
> Mark> identifiers (http://unicode.org/cldr/)
> Sounds interesting. But should I join this project as an individual?
>
> Mark> (All of this can be overridden by specific localizations for
generic,
> Mark> standard, or daylight names. So if the equivalent of "Beijing Time"
is what
> Mark> is customary in Chinese, we could use that.)
> I probably don't understand what you say. Do you mean that you would do
> following modification?:
> Asia/Shanghai => 北京时间
>
> If all other countries will be using the country name, it would be fine
> that we use China(ä¸å›½).
>
> But I insist that there should be an entry "Asia/Beijing" first.
> "Beijing Time" is represented by Shanghai, which is a unacceptable
> situation.
>
2
3
> But why there are Harbin and other cities? Those cities are using the
> same timezone UTC+8, isn't it?
The others are distinguished because at some time in the past, there was
some point at which they differed in time. So in this case, Asia/Shanghai
differed from Asia/Harbin on 1980‑04‑30 15:29Z (8.5 vs. 8).
See
http://oss.software.ibm.com/cvs/icu/~checkout~/locale/docs/design/formattin…
(now slightly out of date).
‎Mark
----- Original Message -----
From: "Funda Wang" <fundawang(a)gmail.com>
To: "Mark Davis" <mark.davis(a)jtcsv.com>
Cc: "Paul Eggert" <eggert(a)CS.UCLA.EDU>; "Tz (tz(a)elsie.nci.nih.gov)"
<tz(a)lecserver.nci.nih.gov>
Sent: Saturday, February 05, 2005 15:09
Subject: Re[4]: Corrections to timezone database
> Mark> The name for that tzid may vary by language, and it should be the
most
> Mark> customary form for that language (or even country).
> Sure. Then, "Beijing Time" is the most commonly used in China, no matter
> how crowded Shanghai is.
>
> Mark> It is a bit like arguing that CN should not be the official ISO 3166
country
> Mark> code for China, because it is not an acronym for the Chinese name
for the
> Mark> country.
> But we have zh_CN as an acceptable choices.
>
> Mark> If Shanghai and Beijing ever had different timezone behavior, that
would
> Mark> warrant having a different tzid; otherwise it doesn't.
> But why there are Harbin and other cities? Those cities are using the
> same timezone UTC+8, isn't it? AFAIK, Beijing is more crowded than
> Harbin or Chongqing. And, although Urmuqi is located in UTC+7 timezone,
> the official timezone of Xinjiang is UTC+8 - Beijing Time.
>
>
>
1
0
I'll post this to the list, in case others are curious.
>From http://unicode.org/cldr/ you can find out about the membership and
participation. Anyone can file a bug against the database. See Filing Bug
Reports on that page.
‎Mark
----- Original Message -----
From: "walter harms" <wharms(a)bfs.de>
To: "Mark Davis" <mark.davis(a)jtcsv.com>
Sent: Friday, February 04, 2005 09:07
Subject: Re: Corrections to timezone database
> I mark,
> who collects remarks about the translation ?
>
> I have some Problems since the 'official Name' and the common name differ:
> e.g.:
> belarus/weisrussland (even the pages:
>
http://www.auswaertiges-amt.de/www/de/laenderinfos/laender/laender_ausgabe_…
> mix these)
>
>
> Côte d’Ivoire: Elfenbeinküste
> Suriname: -> sometimes: Surinam
>
> re,
> walter
>
>
>
> Mark Davis wrote:
> > I do want to call people's attention to the CLDR project work on
timezone
> > identifiers (http://unicode.org/cldr/)
> >
> > We are in the process of gathering localization data for this coming
> > release. We have gathered some data for the locales {locale identifiers:
ar
> > cs da de en es fi fr hu it ja nb nl pl pt pt_PT ru sv tr zh zh_Hant},
and
> > are working on fleshing those out and adding more (we're not done yet!).
See
> > http://unicode.org/cldr/data/dropbox/timezones/.
> >
> > For example, the following shows the current translations using the data
we
> > have (for German):
> >
> > http://unicode.org/cldr/data/dropbox/timezones/de_current.html
> >
> > And the following shows a checklist for translators (note: in many cases
> > those don't *need* translation, since they are the same as the default
> > names.)
> >
> > http://unicode.org/cldr/data/dropbox/timezones/de_to_localize.xml
> >
> > =====
> >
> > The mechanism we use for the generic (wall time) tzid is:
> >
> > If a country has a single zone, we use the country name. Example (from
> > Chinese simplified):
> >
> > Europe/Brussels => 比利时
> >
> > Otherwise we use the last field of the TZID, followed by the country
name in
> > parens. Example:
> >
> > Australia/Melbourne => 墨尔本 (澳大利亚)
> >
> > We are going to be adding additional information where one zones in
> > *certain* multi-zone countries will just use the country name. Example,
we
> > have currently:
> >
> > Asia/Shanghai => 上海 (ä¸å›½)
> > Asia/Kashgar => 喀什葛尔 (ä¸å›½)
> >
> > Once we have that data, we'll generate:
> >
> > Asia/Shanghai => ä¸å›½
> > Asia/Kashgar => 喀什葛尔 (ä¸å›½)
> >
> > (All of this can be overridden by specific localizations for generic,
> > standard, or daylight names. So if the equivalent of "Beijing Time" is
what
> > is customary in Chinese, we could use that.)
> >
> > ‎Mark
> >
> > ----- Original Message -----
> > From: "Paul Eggert" <eggert(a)CS.UCLA.EDU>
> > To: "Funda Wang" <fundawang(a)gmail.com>
> > Cc: "Tz (tz(a)elsie.nci.nih.gov)" <tz(a)lecserver.nci.nih.gov>
> > Sent: Friday, February 04, 2005 00:08
> > Subject: Re: Corrections to timezone database
> >
> >
> >
> >>Funda Wang <fundawang(a)gmail.com> writes:
> >>
> >>
> >>>In fact, we do not have an official abbreviation for "The Time of
> >>>Beijing", as we do not use English :)
> >>
> >>OK, in that case we should probably stick with "CST", as it
> >>abbreviates the most commonly used English phrase for the time in
> >>China.
> >>
> >>The tz database is an English database, by and large. For example, it
> >>uses the abbreviation "CET" for Central European Time even though most
> >>residents of Central Europe use other abbrevations like "MEZ". We
> >>don't currently have the resources to localize all the abbreviations,
> >>so we stick with English ones. If and when the database is localized,
> >>we will transliterate "CST" in China to the appropriate Chinese
> >>characters (e.g., the characters for "The Time of Beijing").
> >>
> >>
> >>>the main reason that there should be a "Beijing" is that we call
> >>>UTC+8 as "The Time of Beijing".
> >>
> >>There is longstanding precedent in the tz database for decoupling tz
> >>zone labels from informal time zone names. For example, the tz label
> >>"Europe/London" denotes local time in England, even though the people
> >>in England call their local time "Greenwich Mean Time". The case of
> >>Beijing is somewhat similar.
> >>
> >>
> >
> >
> >
>
1
0
Funda Wang <fundawang(a)gmail.com> writes:
> In fact, we do not have an official abbreviation for "The Time of
> Beijing", as we do not use English :)
OK, in that case we should probably stick with "CST", as it
abbreviates the most commonly used English phrase for the time in
China.
The tz database is an English database, by and large. For example, it
uses the abbreviation "CET" for Central European Time even though most
residents of Central Europe use other abbrevations like "MEZ". We
don't currently have the resources to localize all the abbreviations,
so we stick with English ones. If and when the database is localized,
we will transliterate "CST" in China to the appropriate Chinese
characters (e.g., the characters for "The Time of Beijing").
> the main reason that there should be a "Beijing" is that we call
> UTC+8 as "The Time of Beijing".
There is longstanding precedent in the tz database for decoupling tz
zone labels from informal time zone names. For example, the tz label
"Europe/London" denotes local time in England, even though the people
in England call their local time "Greenwich Mean Time". The case of
Beijing is somewhat similar.
2
1
Feb. 4, 2005
Funda Wang is not on the time zone mailing list; direct replies
appropriately.
--ado
-----Original Message-----
From: Funda Wang [mailto:fundawang@gmail.com]
Sent: Thursday, February 03, 2005 1:14 PM
To: Olson, Arthur David (NIH/NCI)
Subject: Re[2]: Corrections to timezone database
Olson,> The normal procedure is to use the most populous city in the time
zone; thus
Olson,> Shanghai rather than Beijing (and New York rather than Washington).
Thanks for your clear explanation. The reason why Shanghai is the most
populouse city in China is that there is no surburb around Shanghai. For
other municipalities such as Beijing, Tianjin and Chongqing, there are a
large area of surburb around them, while the population density of these
surbub areas is far more lower than downtown.
Anyway, I do think there should be a "Beijing" in timezone list. The
timezone we Chinese are using is UTC+8, which is called "The Time of
Beijing(TTB)" in China, rather "China Standard Time(CST)", no matter what
number of population density do beijing have. Even in the western part of
China, say Urumqi, they are using TTB while the actual geographic timezone
it locates is UTC+7. And, you may know, someone may take it as political
issue the lack of Beijing.
2
1
Below are proposed minor cleanups for the time zone code.
1. There's a change to the declarations of the "scheck" function to avoid a
lint gripe.
2. Preprocessor directives of the form
#if WHATEVER - 0
have been changed to the form
#if WHATEVER
under the assumption that we're working with ANSI standard compilers.
3. The underscored variants of definitions of constants such as
SECSPERDAY
have been eliminated, in line with a long-standing comment in the code.
4. And the bulk of the changes are cleanups to white space and line lengths.
--ado
diff -r -c old/Makefile new/Makefile
*** old/Makefile Mon Jan 31 09:21:22 2005
--- new/Makefile Mon Jan 31 14:06:12 2005
***************
*** 1,4 ****
! # @(#)Makefile 7.106
# Change the line below for your time zone (after finding the zone you
want in
# the time zone files, or adding it to a time zone file).
--- 1,4 ----
! # @(#)Makefile 7.107
# Change the line below for your time zone (after finding the zone you
want in
# the time zone files, or adding it to a time zone file).
***************
*** 398,404 ****
tar cf - $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | gzip -9 >
tzcode.tar.gz
tar cf - $(DATA) | gzip -9 > tzdata.tar.gz
! typecheck:
make clean
for i in "long long" unsigned double; \
do \
--- 398,404 ----
tar cf - $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | gzip -9 >
tzcode.tar.gz
tar cf - $(DATA) | gzip -9 > tzdata.tar.gz
! typecheck:
make clean
for i in "long long" unsigned double; \
do \
diff -r -c old/asctime.c new/asctime.c
*** old/asctime.c Mon Jan 31 09:20:46 2005
--- new/asctime.c Mon Jan 31 14:06:49 2005
***************
*** 11,17 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)asctime.c 7.30";
#endif /* !defined NOID */
#endif /* !defined lint */
--- 11,17 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)asctime.c 7.31";
#endif /* !defined NOID */
#endif /* !defined lint */
***************
*** 98,104 ****
/*
** We avoid using snprintf since it's not available on all systems.
*/
! (void) sprintf(result,
((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B),
wn, mn,
timeptr->tm_mday, timeptr->tm_hour,
--- 98,104 ----
/*
** We avoid using snprintf since it's not available on all systems.
*/
! (void) sprintf(result,
((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B),
wn, mn,
timeptr->tm_mday, timeptr->tm_hour,
diff -r -c old/asia new/asia
*** old/asia Mon Jan 17 18:36:16 2005
--- new/asia Mon Jan 31 14:06:50 2005
***************
*** 1,4 ****
! # @(#)asia 7.78
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
--- 1,4 ----
! # @(#)asia 7.79
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
***************
*** 337,343 ****
# President Eduard Shevardnadze decreed Wednesday.
#
# From the BBC via Joseph S. Myers (2004-06-27):
! #
# Georgia moved closer to Western Europe on Sunday... The former Soviet
# republic has changed its time zone back to that of Moscow. As a result
it
# is now just four hours ahead of Greenwich Mean Time, rather than five
hours
--- 337,343 ----
# President Eduard Shevardnadze decreed Wednesday.
#
# From the BBC via Joseph S. Myers (2004-06-27):
! #
# Georgia moved closer to Western Europe on Sunday... The former Soviet
# republic has changed its time zone back to that of Moscow. As a result
it
# is now just four hours ahead of Greenwich Mean Time, rather than five
hours
diff -r -c old/date.c new/date.c
*** old/date.c Mon Jan 31 09:20:47 2005
--- new/date.c Mon Jan 31 14:06:49 2005
***************
*** 1,6 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)date.c 7.40";
/*
** Modified from the UCB version with the SCCS ID appearing below.
*/
--- 1,6 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)date.c 7.41";
/*
** Modified from the UCB version with the SCCS ID appearing below.
*/
***************
*** 664,670 ****
cp = value;
switch (dotp - cp) {
default:
! wildinput(_("time"), value, _("main part is wrong
length"));
case 12:
if (!dousg) {
cent = ATOI2(cp);
--- 664,671 ----
cp = value;
switch (dotp - cp) {
default:
! wildinput(_("time"), value,
! _("main part is wrong length"));
case 12:
if (!dousg) {
cent = ATOI2(cp);
diff -r -c old/difftime.c new/difftime.c
*** old/difftime.c Mon Jan 31 09:20:47 2005
--- new/difftime.c Mon Jan 31 14:06:49 2005
***************
*** 5,11 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)difftime.c 7.17";
#endif /* !defined NOID */
#endif /* !defined lint */
--- 5,11 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)difftime.c 7.18";
#endif /* !defined NOID */
#endif /* !defined lint */
***************
*** 57,63 ****
/*
** Stay calm...decent optimizers will eliminate the complexity
below.
*/
! if (time1 >= 0 /* && time0 < 0 */)
return (unsigned long) time1 +
(unsigned long) (-(time0 + 1)) + 1;
return -(double) ((unsigned long) time0 +
--- 57,63 ----
/*
** Stay calm...decent optimizers will eliminate the complexity
below.
*/
! if (time1 >= 0 /* && time0 < 0 */)
return (unsigned long) time1 +
(unsigned long) (-(time0 + 1)) + 1;
return -(double) ((unsigned long) time0 +
diff -r -c old/leapseconds new/leapseconds
*** old/leapseconds Mon Jan 17 18:36:18 2005
--- new/leapseconds Mon Jan 31 14:06:50 2005
***************
*** 1,4 ****
! # @(#)leapseconds 7.18
# Allowance for leapseconds added to each timezone file.
--- 1,4 ----
! # @(#)leapseconds 7.19
# Allowance for leapseconds added to each timezone file.
***************
*** 44,52 ****
Leap 1997 Jun 30 23:59:60 + S
Leap 1998 Dec 31 23:59:60 + S
! # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE
REFERENCE
! #
# SERVICE DE LA ROTATION TERRESTRE
# OBSERVATOIRE DE PARIS
# 61, Av. de l'Observatoire 75014 PARIS (France)
--- 44,52 ----
Leap 1997 Jun 30 23:59:60 + S
Leap 1998 Dec 31 23:59:60 + S
! # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE
REFERENCE
! #
# SERVICE DE LA ROTATION TERRESTRE
# OBSERVATOIRE DE PARIS
# 61, Av. de l'Observatoire 75014 PARIS (France)
***************
*** 53,80 ****
# Tel. : 33 (0) 1 40 51 22 26
# FAX : 33 (0) 1 40 51 22 91
# Internet : services.iers(a)obspm.fr
! #
! # Paris, 21 July 2004
! #
! #
! # Bulletin C 28
! #
! # To authorities responsible
! # for the measurement and
! # distribution of time
! #
! # INFORMATION ON UTC - TAI
! #
# NO positive leap second will be introduced at the end of December 2004.
# The difference between UTC and the International Atomic Time TAI is:
! #
! # from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s
! #
# Leap seconds can be introduced in UTC at the end of the months of
December
# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed
every
# six months, either to announce a time step in UTC, or to confirm that
there
# will be no time step at the next possible date.
! #
! # Daniel GAMBIS
! # Director
! # Earth Orientation Center of IERS
--- 53,80 ----
# Tel. : 33 (0) 1 40 51 22 26
# FAX : 33 (0) 1 40 51 22 91
# Internet : services.iers(a)obspm.fr
! #
! # Paris, 21 July 2004
! #
! #
! # Bulletin C 28
! #
! # To authorities responsible
! # for the measurement and
! # distribution of time
! #
! # INFORMATION ON UTC - TAI
! #
# NO positive leap second will be introduced at the end of December 2004.
# The difference between UTC and the International Atomic Time TAI is:
! #
! # from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s
! #
# Leap seconds can be introduced in UTC at the end of the months of
December
# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed
every
# six months, either to announce a time step in UTC, or to confirm that
there
# will be no time step at the next possible date.
! #
! # Daniel GAMBIS
! # Director
! # Earth Orientation Center of IERS
diff -r -c old/localtime.c new/localtime.c
*** old/localtime.c Mon Jan 31 09:20:46 2005
--- new/localtime.c Mon Jan 31 14:09:31 2005
***************
*** 5,11 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)localtime.c 7.90";
#endif /* !defined NOID */
#endif /* !defined lint */
--- 5,11 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)localtime.c 7.91";
#endif /* !defined NOID */
#endif /* !defined lint */
***************
*** 47,55 ****
** 5. They might reference tm.TM_ZONE after calling offtime.
** What's best to do in the above cases is open to debate;
** for now, we just set things up so that in any of the five cases
! ** WILDABBR is used. Another possibility: initialize tzname[0] to the
** string "tzname[0] used before set", and similarly for the other cases.
! ** And another: initialize tzname[0] to "ERA", with an explanation in the
** manual page of what this "time zone abbreviation" means (doing this so
** that tzname[0] has the "normal" length of three characters).
*/
--- 47,55 ----
** 5. They might reference tm.TM_ZONE after calling offtime.
** What's best to do in the above cases is open to debate;
** for now, we just set things up so that in any of the five cases
! ** WILDABBR is used. Another possibility: initialize tzname[0] to the
** string "tzname[0] used before set", and similarly for the other cases.
! ** And another: initialize tzname[0] to "ERA", with an explanation in the
** manual page of what this "time zone abbreviation" means (doing this so
** that tzname[0] has the "normal" length of three characters).
*/
***************
*** 453,459 ****
/*
** Given a pointer into a time zone string, scan until a character that is
not
! ** a valid character in a zone name is found. Return a pointer to that
** character.
*/
--- 453,459 ----
/*
** Given a pointer into a time zone string, scan until a character that is
not
! ** a valid character in a zone name is found. Return a pointer to that
** character.
*/
***************
*** 534,540 ****
*secsp += num * SECSPERMIN;
if (*strp == ':') {
++strp;
! /* `SECSPERMIN' allows for leap seconds. */
strp = getnum(strp, &num, 0, SECSPERMIN);
if (strp == NULL)
return NULL;
--- 534,540 ----
*secsp += num * SECSPERMIN;
if (*strp == ':') {
++strp;
! /* `SECSPERMIN' allows for leap seconds. */
strp = getnum(strp, &num, 0, SECSPERMIN);
if (strp == NULL)
return NULL;
***************
*** 573,579 ****
/*
** Given a pointer into a time zone string, extract a rule in the form
! ** date[/time]. See POSIX section 8 for the format of "date" and "time".
** If a valid rule is not found, return NULL.
** Otherwise, return a pointer to the first character not part of the
rule.
*/
--- 573,579 ----
/*
** Given a pointer into a time zone string, extract a rule in the form
! ** date[/time]. See POSIX section 8 for the format of "date" and "time".
** If a valid rule is not found, return NULL.
** Otherwise, return a pointer to the first character not part of the
rule.
*/
***************
*** 692,698 ****
dow += DAYSPERWEEK;
/*
! ** "dow" is the day-of-week of the first day of the month.
Get
** the day-of-month (zero-origin) of the first "dow" day of
the
** month.
*/
--- 692,698 ----
dow += DAYSPERWEEK;
/*
! ** "dow" is the day-of-week of the first day of the month.
Get
** the day-of-month (zero-origin) of the first "dow" day of
the
** month.
*/
***************
*** 715,721 ****
/*
** "value" is the Epoch-relative time of 00:00:00 UTC on the day in
! ** question. To get the Epoch-relative time of the specified local
** time on that day, add the transition time and the current offset
** from UTC.
*/
--- 715,721 ----
/*
** "value" is the Epoch-relative time of 00:00:00 UTC on the day in
! ** question. To get the Epoch-relative time of the specified local
** time on that day, add the transition time and the current offset
** from UTC.
*/
***************
*** 1022,1028 ****
/*
** The easy way to behave "as if no library function calls" localtime
** is to not call it--so we drop its guts into "localsub", which can be
! ** freely called. (And no, the PANS doesn't require the above behavior--
** but it *is* desirable.)
**
** The unused offset argument is for the benefit of mktime variants.
--- 1022,1028 ----
/*
** The easy way to behave "as if no library function calls" localtime
** is to not call it--so we drop its guts into "localsub", which can be
! ** freely called. (And no, the PANS doesn't require the above behavior--
** but it *is* desirable.)
**
** The unused offset argument is for the benefit of mktime variants.
***************
*** 1178,1184 ****
leaps_thru_end_of(y)
register const int y;
{
! return (y >= 0) ? (y / 4 - y / 100 + y / 400) :
-(leaps_thru_end_of(-(y + 1)) + 1);
}
--- 1178,1184 ----
leaps_thru_end_of(y)
register const int y;
{
! return (y >= 0) ? (y / 4 - y / 100 + y / 400) :
-(leaps_thru_end_of(-(y + 1)) + 1);
}
***************
*** 1302,1308 ****
tmp->tm_min = (int) (rem / SECSPERMIN);
/*
** A positive leap second requires a special
! ** representation. This uses "... ??:59:60" et seq.
*/
tmp->tm_sec = (int) (rem % SECSPERMIN) + hit;
ip = mon_lengths[isleap(y)];
--- 1302,1308 ----
tmp->tm_min = (int) (rem / SECSPERMIN);
/*
** A positive leap second requires a special
! ** representation. This uses "... ??:59:60" et seq.
*/
tmp->tm_sec = (int) (rem % SECSPERMIN) + hit;
ip = mon_lengths[isleap(y)];
***************
*** 1323,1329 ****
/*
** Section 4.12.3.2 of X3.159-1989 requires that
** The ctime function converts the calendar time pointed to by timer
! ** to local time in the form of a string. It is equivalent to
** asctime(localtime(timer))
*/
return asctime(localtime(timep));
--- 1323,1329 ----
/*
** Section 4.12.3.2 of X3.159-1989 requires that
** The ctime function converts the calendar time pointed to by timer
! ** to local time in the form of a string. It is equivalent to
** asctime(localtime(timer))
*/
return asctime(localtime(timep));
***************
*** 1344,1350 ****
** The "best" way to do mktime I think is based on an idea of Bob
** Kridle's (so its said...) from a long time ago.
** [kridle(a)xinet.com as of 1996-01-16.]
! ** It does a binary search of the time_t space. Since time_t's are
** just 32 bits, its a max of 32 iterations (even at 64 bits it
** would still be very reasonable).
*/
--- 1344,1350 ----
** The "best" way to do mktime I think is based on an idea of Bob
** Kridle's (so its said...) from a long time ago.
** [kridle(a)xinet.com as of 1996-01-16.]
! ** It does a binary search of the time_t space. Since time_t's are
** just 32 bits, its a max of 32 iterations (even at 64 bits it
** would still be very reasonable).
*/
***************
*** 1494,1500 ****
return WRONG;
yourtm.tm_year = y;
if (yourtm.tm_year != y)
! return WRONG;
if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN)
saved_seconds = 0;
else if (y + TM_YEAR_BASE < EPOCH_YEAR) {
--- 1494,1500 ----
return WRONG;
yourtm.tm_year = y;
if (yourtm.tm_year != y)
! return WRONG;
if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN)
saved_seconds = 0;
else if (y + TM_YEAR_BASE < EPOCH_YEAR) {
***************
*** 1813,1819 ****
tzset();
/*
** For a positive leap second hit, the result
! ** is not unique. For a negative leap second
** hit, the corresponding time doesn't exist,
** so we return an adjacent second.
*/
--- 1813,1819 ----
tzset();
/*
** For a positive leap second hit, the result
! ** is not unique. For a negative leap second
** hit, the corresponding time doesn't exist,
** so we return an adjacent second.
*/
diff -r -c old/newstrftime.3 new/newstrftime.3
*** old/newstrftime.3 Mon Jan 31 09:20:46 2005
--- new/newstrftime.3 Mon Jan 31 14:06:49 2005
***************
*** 151,163 ****
is replaced by a newline.
.TP
%p
! is replaced by the locale's equivalent of either AM or PM.
.TP
%R
is replaced by the time in the format %H:%M.
.TP
%r
! is replaced by the locale's representation of 12-hour clock time
using AM/PM notation.
.TP
%S
--- 151,163 ----
is replaced by a newline.
.TP
%p
! is replaced by the locale's equivalent of either AM or PM.
.TP
%R
is replaced by the time in the format %H:%M.
.TP
%r
! is replaced by the locale's representation of 12-hour clock time
using AM/PM notation.
.TP
%S
***************
*** 227,230 ****
newtzset(3),
time(2),
tzfile(5)
! .\" @(#)newstrftime.3 7.14
--- 227,230 ----
newtzset(3),
time(2),
tzfile(5)
! .\" @(#)newstrftime.3 7.15
diff -r -c old/northamerica new/northamerica
*** old/northamerica Mon Jan 17 18:36:17 2005
--- new/northamerica Mon Jan 31 14:06:50 2005
***************
*** 1,4 ****
! # @(#)northamerica 7.71
# also includes Central America and the Caribbean
# This data is by no means authoritative; if you think you know better,
--- 1,4 ----
! # @(#)northamerica 7.72
# also includes Central America and the Caribbean
# This data is by no means authoritative; if you think you know better,
***************
*** 445,451 ****
# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
# Teton, Twin Falls, Valley, Washington counties) and eastern Oregon
# switched four weeks late in 1974.
! #
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:00
-8:00 US P%sT 1923 May 13 2:00
--- 445,451 ----
# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
# Teton, Twin Falls, Valley, Washington counties) and eastern Oregon
# switched four weeks late in 1974.
! #
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:00
-8:00 US P%sT 1923 May 13 2:00
diff -r -c old/private.h new/private.h
*** old/private.h Mon Jan 31 09:19:08 2005
--- new/private.h Mon Jan 31 14:06:49 2005
***************
*** 91,103 ****
#include "time.h"
#include "stdlib.h"
! #if HAVE_GETTEXT - 0
#include "libintl.h"
! #endif /* HAVE_GETTEXT - 0 */
! #if HAVE_SYS_WAIT_H - 0
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */
! #endif /* HAVE_SYS_WAIT_H - 0 */
#ifndef WIFEXITED
#define WIFEXITED(status) (((status) & 0xff) == 0)
--- 91,103 ----
#include "time.h"
#include "stdlib.h"
! #if HAVE_GETTEXT
#include "libintl.h"
! #endif /* HAVE_GETTEXT */
! #if HAVE_SYS_WAIT_H
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */
! #endif /* HAVE_SYS_WAIT_H */
#ifndef WIFEXITED
#define WIFEXITED(status) (((status) & 0xff) == 0)
***************
*** 106,116 ****
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
#endif /* !defined WEXITSTATUS */
! #if HAVE_UNISTD_H - 0
#include "unistd.h" /* for F_OK and R_OK */
! #endif /* HAVE_UNISTD_H - 0 */
! #if !(HAVE_UNISTD_H - 0)
#ifndef F_OK
#define F_OK 0
#endif /* !defined F_OK */
--- 106,116 ----
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
#endif /* !defined WEXITSTATUS */
! #if HAVE_UNISTD_H
#include "unistd.h" /* for F_OK and R_OK */
! #endif /* HAVE_UNISTD_H */
! #if !HAVE_UNISTD_H
#ifndef F_OK
#define F_OK 0
#endif /* !defined F_OK */
***************
*** 117,125 ****
#ifndef R_OK
#define R_OK 4
#endif /* !defined R_OK */
! #endif /* !(HAVE_UNISTD_H - 0) */
! /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX.
*/
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
/*
--- 117,125 ----
#ifndef R_OK
#define R_OK 4
#endif /* !defined R_OK */
! #endif /* !HAVE_UNISTD_H */
! /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX.
*/
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
/*
***************
*** 216,222 ****
void * irealloc P((void * pointer, int size));
void icfree P((char * pointer));
void ifree P((char * pointer));
! char * scheck P((const char *string, const char *format));
/*
** Finally, some convenience items.
--- 216,222 ----
void * irealloc P((void * pointer, int size));
void icfree P((char * pointer));
void ifree P((char * pointer));
! char * scheck P((const char *string, char *format));
/*
** Finally, some convenience items.
***************
*** 255,261 ****
** add one more for a minus sign if the type is signed.
*/
#define INT_STRLEN_MAXIMUM(type) \
! ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 +
TYPE_SIGNED(type))
#endif /* !defined INT_STRLEN_MAXIMUM */
/*
--- 255,262 ----
** add one more for a minus sign if the type is signed.
*/
#define INT_STRLEN_MAXIMUM(type) \
! ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
! 1 + TYPE_SIGNED(type))
#endif /* !defined INT_STRLEN_MAXIMUM */
/*
***************
*** 289,299 ****
*/
#ifndef _
! #if HAVE_GETTEXT - 0
#define _(msgid) gettext(msgid)
! #else /* !(HAVE_GETTEXT - 0) */
#define _(msgid) msgid
! #endif /* !(HAVE_GETTEXT - 0) */
#endif /* !defined _ */
#ifndef TZ_DOMAIN
--- 290,300 ----
*/
#ifndef _
! #if HAVE_GETTEXT
#define _(msgid) gettext(msgid)
! #else /* !HAVE_GETTEXT */
#define _(msgid) msgid
! #endif /* !HAVE_GETTEXT */
#endif /* !defined _ */
#ifndef TZ_DOMAIN
diff -r -c old/scheck.c new/scheck.c
*** old/scheck.c Mon Jan 31 09:20:47 2005
--- new/scheck.c Mon Jan 31 14:06:49 2005
***************
*** 1,6 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)scheck.c 8.15";
#endif /* !defined lint */
#endif /* !defined NOID */
--- 1,6 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)scheck.c 8.16";
#endif /* !defined lint */
#endif /* !defined NOID */
***************
*** 11,17 ****
char *
scheck(string, format)
const char * const string;
! const char * const format;
{
register char * fbuf;
register const char * fp;
--- 11,17 ----
char *
scheck(string, format)
const char * const string;
! char * const format;
{
register char * fbuf;
register const char * fp;
diff -r -c old/southamerica new/southamerica
*** old/southamerica Mon Jan 17 18:36:17 2005
--- new/southamerica Mon Jan 31 14:06:50 2005
***************
*** 1,4 ****
! # @(#)southamerica 7.57
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
--- 1,4 ----
! # @(#)southamerica 7.58
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
***************
*** 964,970 ****
#
# <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net">
# From Evelyn C. Leeper via Mark Brader (2003-10-26):</a>
! # When we were in Peru in 1985-1986, they apparently switched over
# sometime between December 29 and January 3 while we were on the Amazon.
#
# From Paul Eggert (2003-11-02):
--- 964,970 ----
#
# <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net">
# From Evelyn C. Leeper via Mark Brader (2003-10-26):</a>
! # When we were in Peru in 1985-1986, they apparently switched over
# sometime between December 29 and January 3 while we were on the Amazon.
#
# From Paul Eggert (2003-11-02):
diff -r -c old/strftime.c new/strftime.c
*** old/strftime.c Mon Jan 31 09:20:47 2005
--- new/strftime.c Mon Jan 31 14:06:50 2005
***************
*** 1,6 ****
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)strftime.c 7.74";
/*
** Based on the UCB version with the ID appearing below.
** This is ANSIish only when "multibyte character == plain character".
--- 1,6 ----
#ifndef lint
#ifndef NOID
! static char elsieid[] = "@(#)strftime.c 7.75";
/*
** Based on the UCB version with the ID appearing below.
** This is ANSIish only when "multibyte character == plain character".
***************
*** 19,25 ****
** duplicated in all such forms and that any documentation,
** advertising materials, and other materials related to such
** distribution and use acknowledge that the software was developed
! ** by the University of California, Berkeley. The name of the
** University may not be used to endorse or promote products derived
** from this software without specific prior written permission.
** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
--- 19,25 ----
** duplicated in all such forms and that any documentation,
** advertising materials, and other materials related to such
** distribution and use acknowledge that the software was developed
! ** by the University of California, Berkeley. The name of the
** University may not be used to endorse or promote products derived
** from this software without specific prior written permission.
** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
***************
*** 91,97 ****
** C99 requires this format.
** Previously this code used "%D %X", but we now conform to C99.
** Note that
! ** "%a %b %d %H:%M:%S %Y"
** is used by Solaris 2.3.
*/
"%a %b %e %T %Y",
--- 91,97 ----
** C99 requires this format.
** Previously this code used "%D %X", but we now conform to C99.
** Note that
! ** "%a %b %d %H:%M:%S %Y"
** is used by Solaris 2.3.
*/
"%a %b %e %T %Y",
***************
*** 108,114 ****
static char * _add P((const char *, char *, const char *));
static char * _conv P((int, const char *, char *, const char *));
! static char * _fmt P((const char *, const struct tm *, char *, const char
*, int *));
static char * _yconv P((int, int, int, int, char *, const char *));
extern char * tzname[];
--- 108,115 ----
static char * _add P((const char *, char *, const char *));
static char * _conv P((int, const char *, char *, const char *));
! static char * _fmt P((const char *, const struct tm *, char *, const char
*,
! int *));
static char * _yconv P((int, int, int, int, char *, const char *));
extern char * tzname[];
***************
*** 264,270 ****
** t->tm_hour % 12 : 12, 2, '
');
** ...and has been changed to the below to
** match SunOS 4.1.1 and Arnold Robbins'
! ** strftime version 3.0. That is, "%k" and
** "%l" have been swapped.
** (ado, 1993-05-24)
*/
--- 265,271 ----
** t->tm_hour % 12 : 12, 2, '
');
** ...and has been changed to the below to
** match SunOS 4.1.1 and Arnold Robbins'
! ** strftime version 3.0. That is, "%k" and
** "%l" have been swapped.
** (ado, 1993-05-24)
*/
***************
*** 284,290 ****
** _conv(t->tm_hour, 2, ' ');
** ...and has been changed to the below to
** match SunOS 4.1.1 and Arnold Robbin's
! ** strftime version 3.0. That is, "%k" and
** "%l" have been swapped.
** (ado, 1993-05-24)
*/
--- 285,291 ----
** _conv(t->tm_hour, 2, ' ');
** ...and has been changed to the below to
** match SunOS 4.1.1 and Arnold Robbin's
! ** strftime version 3.0. That is, "%k" and
** "%l" have been swapped.
** (ado, 1993-05-24)
*/
***************
*** 359,365 ****
case 'G': /* ISO 8601 year (four digits) */
case 'g': /* ISO 8601 year (two digits) */
/*
! ** From Arnold Robbins' strftime version 3.0: "the week number of the
** year (the first Monday as the first day of week 1) as a decimal number
** (01-53)."
** (ado, 1993-05-24)
--- 360,366 ----
case 'G': /* ISO 8601 year (four digits) */
case 'g': /* ISO 8601 year (two digits) */
/*
! ** From Arnold Robbins' strftime version 3.0: "the week number of the
** year (the first Monday as the first day of week 1) as a decimal number
** (01-53)."
** (ado, 1993-05-24)
***************
*** 372,378 ****
** might also contain days from the previous year and the week before week
** 01 of a year is the last week (52 or 53) of the previous year even if
** it contains days from the new year. A week starts with Monday (day 1)
! ** and ends with Sunday (day 7). For example, the first week of the year
** 1997 lasts from 1996-12-30 to 1997-01-05..."
** (ado, 1996-01-02)
*/
--- 373,379 ----
** might also contain days from the previous year and the week before week
** 01 of a year is the last week (52 or 53) of the previous year even if
** it contains days from the new year. A week starts with Monday (day 1)
! ** and ends with Sunday (day 7). For example, the first week of the year
** 1997 lasts from 1996-12-30 to 1997-01-05..."
** (ado, 1996-01-02)
*/
***************
*** 512,523 ****
/*
** C99 says that the UTC offset must
** be computed by looking only at
! ** tm_isdst. This requirement is
** incorrect, since it means the code
** must rely on magic (in this case
** altzone and timezone), and the
** magic might not have the correct
! ** offset. Doing things correctly is
** tricky and requires disobeying C99;
** see GNU C strftime for details.
** For now, punt and conform to the
--- 513,524 ----
/*
** C99 says that the UTC offset must
** be computed by looking only at
! ** tm_isdst. This requirement is
** incorrect, since it means the code
** must rely on magic (in this case
** altzone and timezone), and the
** magic might not have the correct
! ** offset. Doing things correctly is
** tricky and requires disobeying C99;
** see GNU C strftime for details.
** For now, punt and conform to the
***************
*** 559,565 ****
case '%':
/*
** X311J/88-090 (4.12.3.5): if conversion char is
! ** undefined, behavior is undefined. Print out the
** character itself as printf(3) also does.
*/
default:
--- 560,566 ----
case '%':
/*
** X311J/88-090 (4.12.3.5): if conversion char is
! ** undefined, behavior is undefined. Print out the
** character itself as printf(3) also does.
*/
default:
***************
*** 682,688 ****
** Slurp the locale file into the cache.
*/
namesize = strlen(name) + 1;
! if (sizeof filename <
((sizeof locale_home) + namesize + (sizeof lc_time)))
goto no_locale;
oldsun = 0;
--- 683,689 ----
** Slurp the locale file into the cache.
*/
namesize = strlen(name) + 1;
! if (sizeof filename <
((sizeof locale_home) + namesize + (sizeof lc_time)))
goto no_locale;
oldsun = 0;
***************
*** 705,711 ****
goto bad_locale;
bufsize = namesize + st.st_size;
locale_buf = NULL;
! lbuf = (lbuf == NULL) ? malloc(bufsize) : realloc(lbuf, bufsize);
if (lbuf == NULL)
goto bad_locale;
(void) strcpy(lbuf, name);
--- 706,712 ----
goto bad_locale;
bufsize = namesize + st.st_size;
locale_buf = NULL;
! lbuf = (lbuf == NULL) ? malloc(bufsize) : realloc(lbuf, bufsize);
if (lbuf == NULL)
goto bad_locale;
(void) strcpy(lbuf, name);
diff -r -c old/tz-art.htm new/tz-art.htm
*** old/tz-art.htm Mon Jan 31 09:20:48 2005
--- new/tz-art.htm Mon Jan 31 14:06:50 2005
***************
*** 1,5 ****
<?xml version="1.0" encoding="US-ASCII"?>
! <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
--- 1,5 ----
<?xml version="1.0" encoding="US-ASCII"?>
! <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
***************
*** 10,16 ****
<body>
<h1>Time and the Arts</h1>
<address>
! @(#)tz-art.htm 7.53
</address>
<p>
Please send corrections to this web page to the
--- 10,16 ----
<body>
<h1>Time and the Arts</h1>
<address>
! @(#)tz-art.htm 7.54
</address>
<p>
Please send corrections to this web page to the
diff -r -c old/tzfile.h new/tzfile.h
*** old/tzfile.h Mon Jan 31 09:19:08 2005
--- new/tzfile.h Mon Jan 31 14:06:49 2005
***************
*** 21,27 ****
#ifndef lint
#ifndef NOID
! static char tzfilehid[] = "@(#)tzfile.h 7.16";
#endif /* !defined NOID */
#endif /* !defined lint */
--- 21,27 ----
#ifndef lint
#ifndef NOID
! static char tzfilehid[] = "@(#)tzfile.h 7.17";
#endif /* !defined NOID */
#endif /* !defined lint */
***************
*** 48,54 ****
#define TZ_MAGIC "TZif"
struct tzhead {
! char tzh_magic[4]; /* TZ_MAGIC */
char tzh_reserved[16]; /* reserved for future use */
char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags
*/
char tzh_ttisstdcnt[4]; /* coded number of trans. time flags
*/
--- 48,54 ----
#define TZ_MAGIC "TZif"
struct tzhead {
! char tzh_magic[4]; /* TZ_MAGIC */
char tzh_reserved[16]; /* reserved for future use */
char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags
*/
char tzh_ttisstdcnt[4]; /* coded number of trans. time flags
*/
***************
*** 172,197 ****
#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
- #ifndef USG
-
- /*
- ** Use of the underscored variants may cause problems if you move your
code to
- ** certain System-V-based systems; for maximum portability, use the
- ** underscore-free variants. The underscored variants are provided for
- ** backward compatibility only; they may disappear from future versions of
- ** this file.
- */
-
- #define SECS_PER_MIN SECSPERMIN
- #define MINS_PER_HOUR MINSPERHOUR
- #define HOURS_PER_DAY HOURSPERDAY
- #define DAYS_PER_WEEK DAYSPERWEEK
- #define DAYS_PER_NYEAR DAYSPERNYEAR
- #define DAYS_PER_LYEAR DAYSPERLYEAR
- #define SECS_PER_HOUR SECSPERHOUR
- #define SECS_PER_DAY SECSPERDAY
- #define MONS_PER_YEAR MONSPERYEAR
-
- #endif /* !defined USG */
-
#endif /* !defined TZFILE_H */
--- 172,175 ----
diff -r -c old/workman.sh new/workman.sh
*** old/workman.sh Mon Jan 31 09:20:49 2005
--- new/workman.sh Mon Jan 31 14:06:50 2005
***************
*** 1,6 ****
#! /bin/sh
! # @(#)workman.sh 1.7
# Tell groff not to emit SGR escape sequences (ANSI color escapes).
GROFF_NO_SGR=1
--- 1,6 ----
#! /bin/sh
! # @(#)workman.sh 1.8
# Tell groff not to emit SGR escape sequences (ANSI color escapes).
GROFF_NO_SGR=1
***************
*** 26,29 ****
print "$_\n";
$didprint = 1;
}
! '
--- 26,29 ----
print "$_\n";
$didprint = 1;
}
! '
diff -r -c old/yearistype.sh new/yearistype.sh
*** old/yearistype.sh Mon Jan 17 18:36:18 2005
--- new/yearistype.sh Mon Jan 31 14:06:50 2005
***************
*** 1,6 ****
#! /bin/sh
! : '@(#)yearistype.sh 7.7'
case $#-$1 in
2-|2-0*|2-*[!0-9]*)
--- 1,6 ----
#! /bin/sh
! : '@(#)yearistype.sh 7.8'
case $#-$1 in
2-|2-0*|2-*[!0-9]*)
***************
*** 9,15 ****
esac
case $#-$2 in
! 2-even)
case $1 in
*[24680]) exit 0 ;;
*) exit 1 ;;
--- 9,15 ----
esac
case $#-$2 in
! 2-even)
case $1 in
*[24680]) exit 0 ;;
*) exit 1 ;;
***************
*** 19,25 ****
*[02468][048]|*[13579][26]) exit 1 ;;
*) exit 0 ;;
esac ;;
! 2-odd)
case $1 in
*[13579]) exit 0 ;;
*) exit 1 ;;
--- 19,25 ----
*[02468][048]|*[13579][26]) exit 1 ;;
*) exit 0 ;;
esac ;;
! 2-odd)
case $1 in
*[13579]) exit 0 ;;
*) exit 1 ;;
***************
*** 29,35 ****
*[02468][048]|*[13579][26]) exit 0 ;;
*) exit 1 ;;
esac ;;
! 2-*)
echo "$0: wild type - $2" >&2 ;;
esac
--- 29,35 ----
*[02468][048]|*[13579][26]) exit 0 ;;
*) exit 1 ;;
esac ;;
! 2-*)
echo "$0: wild type - $2" >&2 ;;
esac
diff -r -c old/zdump.c new/zdump.c
*** old/zdump.c Mon Jan 31 09:20:47 2005
--- new/zdump.c Mon Jan 31 14:20:42 2005
***************
*** 1,4 ****
! static char elsieid[] = "@(#)zdump.c 7.61";
/*
** This code has been made independent of the rest of the time
--- 1,4 ----
! static char elsieid[] = "@(#)zdump.c 7.63";
/*
** This code has been made independent of the rest of the time
***************
*** 215,221 ****
INITIALIZE(cutlotime);
INITIALIZE(cuthitime);
#if HAVE_GETTEXT
! (void) setlocale(LC_MESSAGES, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
--- 215,221 ----
INITIALIZE(cutlotime);
INITIALIZE(cuthitime);
#if HAVE_GETTEXT
! (void) setlocale(LC_ALL, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
***************
*** 318,324 ****
newtmp = localtime(&newt);
if (newtmp != NULL)
newtm = *newtmp;
! if ((tmp == NULL || newtmp == NULL) ? (tmp !=
newtmp) :
(delta(&newtm, &tm) != (newt - t) ||
newtm.tm_isdst != tm.tm_isdst ||
strcmp(abbr(&newtm), buf) != 0)) {
--- 318,324 ----
newtmp = localtime(&newt);
if (newtmp != NULL)
newtm = *newtmp;
! if ((tmp == NULL || newtmp == NULL) ? (tmp !=
newtmp) :
(delta(&newtm, &tm) != (newt - t) ||
newtm.tm_isdst != tm.tm_isdst ||
strcmp(abbr(&newtm), buf) != 0)) {
diff -r -c old/zic.c new/zic.c
*** old/zic.c Mon Jan 31 09:20:47 2005
--- new/zic.c Mon Jan 31 14:20:42 2005
***************
*** 1,4 ****
! static char elsieid[] = "@(#)zic.c 7.120";
/*
** Regardless of the type of time_t, we do our work using this type.
--- 1,4 ----
! static char elsieid[] = "@(#)zic.c 7.122";
/*
** Regardless of the type of time_t, we do our work using this type.
***************
*** 21,27 ****
/*
** On some ancient hosts, predicates like `isspace(C)' are defined
! ** only if isascii(C) || C == EOF. Modern hosts obey the C Standard,
** which says they are defined only if C == ((unsigned char) C) || C ==
EOF.
** Neither the C Standard nor Posix require that `isascii' exist.
** For portability, we check both ancient and modern requirements.
--- 21,27 ----
/*
** On some ancient hosts, predicates like `isspace(C)' are defined
! ** only if isascii(C) || C == EOF. Modern hosts obey the C Standard,
** which says they are defined only if C == ((unsigned char) C) || C ==
EOF.
** Neither the C Standard nor Posix require that `isascii' exist.
** For portability, we check both ancient and modern requirements.
***************
*** 138,146 ****
static void writezone P((const char * name));
static int yearistype P((int year, const char * type));
! #if !(HAVE_STRERROR - 0)
static char * strerror P((int));
! #endif /* !(HAVE_STRERROR - 0) */
static int charcnt;
static int errors;
--- 138,146 ----
static void writezone P((const char * name));
static int yearistype P((int year, const char * type));
! #if !HAVE_STRERROR
static char * strerror P((int));
! #endif /* !HAVE_STRERROR */
static int charcnt;
static int errors;
***************
*** 380,386 ****
** Error handling.
*/
! #if !(HAVE_STRERROR - 0)
static char *
strerror(errnum)
int errnum;
--- 380,386 ----
** Error handling.
*/
! #if !HAVE_STRERROR
static char *
strerror(errnum)
int errnum;
***************
*** 391,397 ****
return (errnum > 0 && errnum <= sys_nerr) ?
sys_errlist[errnum] : _("Unknown system error");
}
! #endif /* !(HAVE_STRERROR - 0) */
static void
eats(name, num, rname, rnum)
--- 391,397 ----
return (errnum > 0 && errnum <= sys_nerr) ?
sys_errlist[errnum] : _("Unknown system error");
}
! #endif /* !HAVE_STRERROR */
static void
eats(name, num, rname, rnum)
***************
*** 448,454 ****
static void
usage P((void))
{
! (void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v
] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds
] [ -y yearistype ] [ filename ... ]\n"),
progname, progname);
(void) exit(EXIT_FAILURE);
}
--- 448,456 ----
static void
usage P((void))
{
! (void) fprintf(stderr, _("%s: usage is %s \
! [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
! \t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ...
]\n"),
progname, progname);
(void) exit(EXIT_FAILURE);
}
***************
*** 472,484 ****
#ifdef unix
(void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
#endif /* defined unix */
! #if HAVE_GETTEXT - 0
! (void) setlocale(LC_MESSAGES, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
(void) textdomain(TZ_DOMAIN);
! #endif /* HAVE_GETTEXT - 0 */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
--- 474,486 ----
#ifdef unix
(void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
#endif /* defined unix */
! #if HAVE_GETTEXT
! (void) setlocale(LC_ALL, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
#endif /* defined TEXTDOMAINDIR */
(void) textdomain(TZ_DOMAIN);
! #endif /* HAVE_GETTEXT */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
***************
*** 631,652 ****
(void) exit(EXIT_FAILURE);
result = link(fromname, toname);
! #if (HAVE_SYMLINK - 0)
if (result != 0 &&
! access(fromname, F_OK) == 0 &&
! !itsdir(fromname)) {
! const char *s = tofile;
! register char * symlinkcontents = NULL;
! while ((s = strchr(s+1, '/')) != NULL)
! symlinkcontents = ecatalloc(symlinkcontents,
"../");
! symlinkcontents = ecatalloc(symlinkcontents,
fromfile);
! result = symlink(symlinkcontents, toname);
! if (result == 0)
warning(_("hard link failed, symbolic link used"));
! ifree(symlinkcontents);
}
! #endif
if (result != 0) {
const char *e = strerror(errno);
--- 633,659 ----
(void) exit(EXIT_FAILURE);
result = link(fromname, toname);
! #if HAVE_SYMLINK
if (result != 0 &&
! access(fromname, F_OK) == 0 &&
! !itsdir(fromname)) {
! const char *s = tofile;
! register char * symlinkcontents = NULL;
! while ((s = strchr(s+1, '/')) != NULL)
! symlinkcontents =
! ecatalloc(symlinkcontents,
! "../");
! symlinkcontents =
! ecatalloc(symlinkcontents,
! fromfile);
! result = symlink(symlinkcontents,
! toname);
! if (result == 0)
warning(_("hard link failed, symbolic link used"));
! ifree(symlinkcontents);
}
! #endif /* HAVE_SYMLINK */
if (result != 0) {
const char *e = strerror(errno);
***************
*** 804,810 ****
*/
eat(zp->z_filename, zp->z_linenum);
zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"),
! TRUE);
/*
** Note, though, that if there's no rule,
** a '%s' in the format is a bad thing.
--- 811,817 ----
*/
eat(zp->z_filename, zp->z_linenum);
zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"),
! TRUE);
/*
** Note, though, that if there's no rule,
** a '%s' in the format is a bad thing.
***************
*** 1107,1113 ****
zones[nzones - 1].z_untiltime > min_time &&
zones[nzones - 1].z_untiltime < max_time &&
zones[nzones - 1].z_untiltime >= z.z_untiltime) {
! error(_("Zone continuation line end time is
not after end time of previous line"));
return FALSE;
}
}
--- 1114,1122 ----
zones[nzones - 1].z_untiltime > min_time &&
zones[nzones - 1].z_untiltime < max_time &&
zones[nzones - 1].z_untiltime >= z.z_untiltime) {
! error(_(
! "Zone continuation line end time is not after end time of previous line"
! ));
return FALSE;
}
}
***************
*** 1140,1150 ****
dayoff = 0;
cp = fields[LP_YEAR];
if (sscanf(cp, scheck(cp, "%d"), &year) != 1) {
! /*
! * Leapin' Lizards!
! */
! error(_("invalid leaping year"));
! return;
}
j = EPOCH_YEAR;
while (j != year) {
--- 1149,1159 ----
dayoff = 0;
cp = fields[LP_YEAR];
if (sscanf(cp, scheck(cp, "%d"), &year) != 1) {
! /*
! ** Leapin' Lizards!
! */
! error(_("invalid leaping year"));
! return;
}
j = EPOCH_YEAR;
while (j != year) {
***************
*** 1211,1217 ****
return;
}
if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
! error(_("illegal Rolling/Stationary field on Leap
line"));
return;
}
leapadd(tadd(t, tod), positive, lp->l_value, count);
--- 1220,1228 ----
return;
}
if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
! error(_(
! "illegal Rolling/Stationary field on Leap
line"
! ));
return;
}
leapadd(tadd(t, tod), positive, lp->l_value, count);
***************
*** 1473,1486 ****
while (fromi < timecnt && attypes[fromi].type == 0)
++fromi; /* handled by default rule
*/
for ( ; fromi < timecnt; ++fromi) {
! if (toi != 0
! && ((attypes[fromi].at
! + gmtoffs[attypes[toi - 1].type])
! <= (attypes[toi - 1].at
! + gmtoffs[toi == 1 ? 0
! : attypes[toi - 2].type]))) {
! attypes[toi - 1].type = attypes[fromi].type;
! continue;
}
if (toi == 0 ||
attypes[toi - 1].type !=
attypes[fromi].type)
--- 1484,1496 ----
while (fromi < timecnt && attypes[fromi].type == 0)
++fromi; /* handled by default rule
*/
for ( ; fromi < timecnt; ++fromi) {
! if (toi != 0 && ((attypes[fromi].at +
! gmtoffs[attypes[toi - 1].type]) <=
! (attypes[toi - 1].at + gmtoffs[toi == 1 ? 0
! : attypes[toi - 2].type]))) {
! attypes[toi - 1].type =
! attypes[fromi].type;
! continue;
}
if (toi == 0 ||
attypes[toi - 1].type !=
attypes[fromi].type)
***************
*** 1526,1532 ****
convert(eitol(typecnt), tzh.tzh_typecnt);
convert(eitol(charcnt), tzh.tzh_charcnt);
(void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
! #define DO(field) (void) fwrite((void *) tzh.field, (size_t) sizeof
tzh.field, (size_t) 1, fp)
DO(tzh_magic);
DO(tzh_reserved);
DO(tzh_ttisgmtcnt);
--- 1536,1543 ----
convert(eitol(typecnt), tzh.tzh_typecnt);
convert(eitol(charcnt), tzh.tzh_charcnt);
(void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
! #define DO(field) (void) fwrite((void *) tzh.field, \
! (size_t) sizeof tzh.field, (size_t) 1, fp)
DO(tzh_magic);
DO(tzh_reserved);
DO(tzh_ttisgmtcnt);
***************
*** 1745,1756 ****
continue;
}
if (*startbuf == '\0' &&
! startoff == oadd(zp->z_gmtoff,
! stdoff)) {
! doabbr(startbuf,
zp->z_format,
! rp->r_abbrvar,
! rp->r_stdoff != 0);
! }
}
eats(zp->z_filename, zp->z_linenum,
rp->r_filename, rp->r_linenum);
--- 1756,1768 ----
continue;
}
if (*startbuf == '\0' &&
! startoff ==
oadd(zp->z_gmtoff,
! stdoff))
! doabbr(startbuf,
!
zp->z_format,
!
rp->r_abbrvar,
! rp->r_stdoff
!=
! 0);
}
eats(zp->z_filename, zp->z_linenum,
rp->r_filename, rp->r_linenum);
***************
*** 2041,2047 ****
else while ((*dp = *cp++) != '"')
if (*dp != '\0')
++dp;
! else error(_("Odd number of quotation
marks"));
} while (*cp != '\0' && *cp != '#' &&
(!isascii(*cp) || !isspace((unsigned char) *cp)));
if (isascii(*cp) && isspace((unsigned char) *cp))
--- 2053,2061 ----
else while ((*dp = *cp++) != '"')
if (*dp != '\0')
++dp;
! else error(_(
! "Odd number of quotation
marks"
! ));
} while (*cp != '\0' && *cp != '#' &&
(!isascii(*cp) || !isspace((unsigned char) *cp)));
if (isascii(*cp) && isspace((unsigned char) *cp))
***************
*** 2162,2168 ****
}
if (i < 0 || i >= len_months[isleap(y)][m]) {
if (noise)
! warning(_("rule goes past start/end of
month--will not work with pre-2004 versions of zic"));
}
}
if (dayoff < 0 && !TYPE_SIGNED(zic_t))
--- 2176,2183 ----
}
if (i < 0 || i >= len_months[isleap(y)][m]) {
if (noise)
! warning(_("rule goes past start/end of
month--\
! will not work with pre-2004 versions of zic"));
}
}
if (dayoff < 0 && !TYPE_SIGNED(zic_t))
2
1