[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r877 - in glibc-package/trunk/debian: . patches



Author: gotom
Date: 2005-04-10 00:10:19 +0000 (Sun, 10 Apr 2005)
New Revision: 877

Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/90_glibc232-timezones.dpatch
Log:
    - debian/patches/90_glibc232-timezones.dpatch: Update to tzdata2005h.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2005-04-09 03:05:23 UTC (rev 876)
+++ glibc-package/trunk/debian/changelog	2005-04-10 00:10:19 UTC (rev 877)
@@ -10,6 +10,7 @@
       breakage on amd64.  (Closes: #295457)
     - debian/debhelper.in/libc.manpages: Add tzconfig.8.  Reported by Matthijs
       Mohlmann <matthijs@cacholong.nl>.  (Closes: #182981)
+    - debian/patches/90_glibc232-timezones.dpatch: Update to tzdata2005h.
 
     - Bastian Blank <waldi@debian.org>:
       - debian/patches/sched-update.dpatch: Update sched_[gs]et_affinity to

Modified: glibc-package/trunk/debian/patches/90_glibc232-timezones.dpatch
===================================================================
--- glibc-package/trunk/debian/patches/90_glibc232-timezones.dpatch	2005-04-09 03:05:23 UTC (rev 876)
+++ glibc-package/trunk/debian/patches/90_glibc232-timezones.dpatch	2005-04-10 00:10:19 UTC (rev 877)
@@ -1,20 +1,23 @@
 #! /bin/sh -e
 
 # All lines beginning with `# DP:' are a description of the patch.
-# DP: Description: Update timezone info to tzdata2004e.
-# DP: Related bugs: Many in the BTS
-# DP: Dpatch Author: GOTO Masanori <gotom@debian.org>
+# DP: Description: Update timezone info to tzdata2005h.
+# DP: Related bugs: 
+# DP: Dpatch author: GOTO Masanori <gotom@debian.org>
+# DP: Patch author: 
 # DP: Upstream status: In CVS
 # DP: Status Details: 
-# DP: Date: 2004-10-14
+# DP: Date: 2005-04-10
 
+PATCHLEVEL=1
+
 if [ $# -ne 2 ]; then
     echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
     exit 1
 fi
 case "$1" in
-    -patch) patch -d "$2" -f --no-backup-if-mismatch -p0 < $0;;
-    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p0 < $0;;
+    -patch) patch -d "$2" -f --no-backup-if-mismatch -p$PATCHLEVEL < $0;;
+    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p$PATCHLEVEL < $0;;
     *)
 	echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
 	exit 1
@@ -22,22 +25,130 @@
 exit 0
 
 # append the patch here and adjust the -p? flag in the patch calls.
-diff -Nuar timezone.org/asia timezone/asia
---- timezone.org/asia	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/asia	2004-10-13 23:30:38.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/antarctica glibc-2.3.4/timezone/antarctica
+--- glibc-2.3.2/timezone/antarctica	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/antarctica	2005-04-10 08:52:13.000000000 +0900
 @@ -1,4 +1,4 @@
+-# @(#)antarctica	7.23
++# @(#)antarctica	7.24
+ 
+ # From Paul Eggert (1999-11-15):
+ # To keep things manageable, we list only locations occupied year-round; see
+@@ -90,19 +90,19 @@
+ # </a>
+ 
+ # Brazil - year-round base
+-# Ferraz, King George Island, since 1983/4
++# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
+ 
+ # Chile - year-round bases and towns
+ # Escudero, South Shetland Is, -621157-0585735, since 1994
+-# Frei, King George Island, -6214-05848, since 1969-03-07
+-# O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
+-# Prat, -6230-05941
+-# Villa Las Estrellas (a town), King George Island, since 1984-04-09
++# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
++# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
++# Capitan Arturo Prat, -6230-05941
++# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
+ # These locations have always used Santiago time; use TZ='America/Santiago'.
+ 
+ # China - year-round bases
+-# Great Wall, King George Island, since 1985-02-20
+-# Zhongshan, Larsemann Hills, Prydz Bay, since 1989-02-26
++# Great Wall, King George Island, -6213-05858, since 1985-02-20
++# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
+ 
+ # France - year-round bases
+ #
+@@ -145,14 +145,14 @@
+ 
+ 
+ # Germany - year-round base
+-# Georg von Neumayer
++# Georg von Neumayer, -7039-00815
+ 
+ # India - year-round base
+-# Dakshin Gangotri
++# Dakshin Gangotri, -7005+01200
+ 
+ # Japan - year-round bases
+-# Dome Fuji
+-# Syowa
++# Dome Fuji, -7719+03942
++# Syowa, -690022+0393524
+ #
+ # From Hideyuki Suzuki (1999-02-06):
+ # In all Japanese stations, +0300 is used as the standard time.  [See]
+@@ -171,7 +171,7 @@
+ # </a>
+ 
+ # S Korea - year-round base
+-# King Sejong, King George Island, since 1988
++# King Sejong, King George Island, -6213-05847, since 1988
+ 
+ # New Zealand - claims
+ # Balleny Islands (never inhabited)
+@@ -202,7 +202,8 @@
+ # Russia - year-round bases
+ # Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
+ # Mirny, Davis coast, -6633+09301, since 1956-02
+-# Molodezhnaya, Alasheyev Bay, year-round from 1962-02 to 1999-07-01
++# Molodezhnaya, Alasheyev Bay, -6740+04551,
++#	year-round from 1962-02 to 1999-07-01
+ # Novolazarevskaya, Queen Maud Land, -7046+01150,
+ #	year-round from 1960/61 to 1992
+ 
+@@ -234,8 +235,8 @@
+ 			6:00	-	VOST	# Vostok time
+ 
+ # S Africa - year-round bases
+-# Marion Island
+-# Sanae
++# Marion Island, -4653+03752
++# Sanae, -7141-00250
+ 
+ # UK
+ #
+diff -Nuar glibc-2.3.2/timezone/asia glibc-2.3.4/timezone/asia
+--- glibc-2.3.2/timezone/asia	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/asia	2005-04-10 08:52:13.000000000 +0900
+@@ -1,4 +1,4 @@
 -# @(#)asia	7.71
-+# @(#)asia	7.77
++# @(#)asia	7.81
  
  # 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
-@@ -335,6 +335,16 @@
+@@ -107,7 +107,7 @@
+ 			3:00	-	BAKT	1957 Mar    # Baku Time
+ 			4:00 RussiaAsia BAK%sT	1991 Mar 31 2:00s
+ 			3:00	1:00	BAKST	1991 Aug 30 # independence
+-			3:00 RussiaAsia	AZ%sT	1992 Sep lastSun 2:00s
++			3:00 RussiaAsia	AZ%sT	1992 Sep lastSat 23:00
+ 			4:00	-	AZT	1996 # Azerbaijan time
+ 			4:00	EUAsia	AZ%sT	1997
+ 			4:00	Azer	AZ%sT
+@@ -137,8 +137,12 @@
+ # British Indian Ocean Territory
+ # Whitman and the 1995 CIA time zone map say 5:00, but the
+ # 1997 and later maps say 6:00.  Assume the switch occurred in 1996.
++# We have no information as to when standard time was introduced;
++# assume it occurred in 1907, the same year as Mauritius (which
++# then contained the Chagos Archipelago).
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Chagos	5:00	-	IOT	1996 # BIOT Time
++Zone	Indian/Chagos	4:49:40	-	LMT	1907
++			5:00	-	IOT	1996 # BIOT Time
+ 			6:00	-	IOT
+ 
+ # Brunei
+@@ -335,6 +339,16 @@
  # Instead of putting back clocks at the end of October, Georgia
  # will stay on daylight savings time this winter to save energy,
  # 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
@@ -48,7 +159,7 @@
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
  Zone	Asia/Tbilisi	2:59:16 -	LMT	1880
  			2:59:16	-	TBMT	1924 May  2 # Tbilisi Mean Time
-@@ -345,7 +355,8 @@
+@@ -345,7 +359,8 @@
  			3:00 E-EurAsia	GE%sT	1994 Sep lastSun
  			4:00 E-EurAsia	GE%sT	1996 Oct lastSun
  			4:00	1:00	GEST	1997 Mar lastSun
@@ -58,7 +169,7 @@
  
  # East Timor
  
-@@ -380,7 +391,7 @@
+@@ -380,7 +395,7 @@
  
  # India
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -67,13 +178,133 @@
  			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
  			6:30	-	BURT	1942 May 15 # Burma Time
  			5:30	-	IST	1942 Sep
-@@ -736,44 +747,39 @@
+@@ -628,7 +643,8 @@
+ Rule	Zion	1988	only	-	Sep	 3	0:00	0	S
+ 
+ # From Ephraim Silverberg <ephraim@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, 2004-12-22,
++# and 2005-02-17):
+ 
+ # According to the Office of the Secretary General of the Ministry of
+ # Interior, there is NO set rule for Daylight-Savings/Standard time changes.
+@@ -679,13 +695,13 @@
+ # 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.
+ 
+@@ -705,12 +721,12 @@
+ #
+ # 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
+@@ -724,57 +740,80 @@
+ 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.
+-# 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
++# The proposed law agreed upon by the Knesset Interior Committee on
++# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
++# last Friday before April 2nd (i.e. the last Friday in March or April
++# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
++# night _before_ the fast of Yom Kippur.
++#
++# Those who can read Hebrew can view the announcement at:
++#
++#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
++
++# From Paul Eggert (2005-02-22):
++# I used Ephraim Silverberg's dst-israel.el program
++# <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)
++# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
++# to generate the transitions in this list.
++# (I replaced "lastFri" with "Fri>=26" by hand.)
++# The spring transitions below all correspond to the following Rule:
++#
++# Rule	Zion	2005	max	-	Mar	Fri>=26	2:00	1:00	D
++#
++# but older zic implementations (e.g., Solaris 8) do not support
++# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
++# springtime transitions explicitly.
++
++# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	Zion	2005	only	-	Apr	 1	2:00	1:00	D
++Rule	Zion	2005	only	-	Oct	 9	2:00	0	S
++Rule	Zion	2006	2010	-	Mar	Fri>=26	2:00	1:00	D
++Rule	Zion	2006	only	-	Oct	 1	2:00	0	S
++Rule	Zion	2007	only	-	Sep	16	2:00	0	S
++Rule	Zion	2008	only	-	Oct	 5	2:00	0	S
++Rule	Zion	2009	only	-	Sep	27	2:00	0	S
++Rule	Zion	2010	only	-	Sep	12	2:00	0	S
++Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
++Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
++Rule	Zion	2012	2015	-	Mar	Fri>=26	2:00	1:00	D
++Rule	Zion	2012	only	-	Sep	23	2:00	0	S
++Rule	Zion	2013	only	-	Sep	 8	2:00	0	S
++Rule	Zion	2014	only	-	Sep	28	2:00	0	S
++Rule	Zion	2015	only	-	Sep	20	2:00	0	S
++Rule	Zion	2016	only	-	Apr	 1	2:00	1:00	D
++Rule	Zion	2016	only	-	Oct	 9	2:00	0	S
++Rule	Zion	2017	2021	-	Mar	Fri>=26	2:00	1:00	D
++Rule	Zion	2017	only	-	Sep	24	2:00	0	S
++Rule	Zion	2018	only	-	Sep	16	2:00	0	S
++Rule	Zion	2019	only	-	Oct	 6	2:00	0	S
++Rule	Zion	2020	only	-	Sep	27	2:00	0	S
++Rule	Zion	2021	only	-	Sep	12	2:00	0	S
++Rule	Zion	2022	only	-	Apr	 1	2:00	1:00	D
++Rule	Zion	2022	only	-	Oct	 2	2:00	0	S
++Rule	Zion	2023	2032	-	Mar	Fri>=26	2:00	1:00	D
++Rule	Zion	2023	only	-	Sep	24	2:00	0	S
++Rule	Zion	2024	only	-	Oct	 6	2:00	0	S
++Rule	Zion	2025	only	-	Sep	28	2:00	0	S
++Rule	Zion	2026	only	-	Sep	20	2:00	0	S
++Rule	Zion	2027	only	-	Oct	10	2:00	0	S
++Rule	Zion	2028	only	-	Sep	24	2:00	0	S
++Rule	Zion	2029	only	-	Sep	16	2:00	0	S
++Rule	Zion	2030	only	-	Oct	 6	2:00	0	S
++Rule	Zion	2031	only	-	Sep	21	2:00	0	S
++Rule	Zion	2032	only	-	Sep	12	2:00	0	S
++Rule	Zion	2033	only	-	Apr	 1	2:00	1:00	D
++Rule	Zion	2033	only	-	Oct	 2	2:00	0	S
++Rule	Zion	2034	2037	-	Mar	Fri>=26	2:00	1:00	D
++Rule	Zion	2034	only	-	Sep	17	2:00	0	S
++Rule	Zion	2035	only	-	Oct	 7	2:00	0	S
++Rule	Zion	2036	only	-	Sep	28	2:00	0	S
++Rule	Zion	2037	only	-	Sep	13	2: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 (2002-07-07):
-+# From Ephraim Silverberg (2003-03-23):
- #
+-#
 -# The Israeli government today adopted a proposal by Minister of Interior
 -# Eli Yishai to shorten the period of Daylight Savings Time for the year
 -# 2002 (only -- the dates for 2003 and 2004 are, so far, unaffected).
@@ -110,50 +341,77 @@
 -# change is the start date of DST in 2003 from Mar.28.03 (24th of Adar II)
 -# to Apr.18.03 (16th of Nisan) so that the Passover Seder will take place
 -# during Standard Time.  The start date for 2004 is already Nisan 16th.
-+# 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.
+-
  
  
- 
-@@ -926,7 +932,7 @@
+ ###############################################################################
+@@ -888,6 +927,13 @@
+ # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+ # - Oral switched from +5:00 to +4:00 in spring 1989.
+ #
++# <a href="http://www.kazsociety.org.uk/news/2005/03/30.htm";>
++# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
++# </a>
++# The Government of Kazakhstan passed a resolution March 15 abolishing
++# daylight saving time citing lack of economic benefits and health
++# complications coupled with a decrease in productivity.
++#
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ #
+@@ -896,7 +942,8 @@
+ 			5:00	-	ALMT	1930 Jun 21 # Alma-Ata Time
+ 			6:00 RussiaAsia ALM%sT	1991
+ 			6:00	-	ALMT	1992
+-			6:00 RussiaAsia	ALM%sT
++			6:00 RussiaAsia	ALM%sT	2005 Mar 15
++			6:00	-	ALMT
+ # Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)
+ Zone	Asia/Qyzylorda	4:21:52 -	LMT	1924 May  2
+ 			4:00	-	KIZT	1930 Jun 21 # Kizilorda Time
+@@ -906,7 +953,8 @@
+ 			5:00 RussiaAsia	KIZ%sT	1991
+ 			5:00	-	KIZT	1991 Dec 16 # independence
+ 			5:00	-	QYZT	1992 Jan 19 2:00
+-			6:00 RussiaAsia	QYZ%sT
++			6:00 RussiaAsia	QYZ%sT	2005 Mar 15
++			6:00	-	QYZT
+ # Aqtobe (aka Aktobe, formerly Akt'ubinsk)
+ Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
+ 			4:00	-	AKTT	1930 Jun 21 # Aktyubinsk Time
+@@ -915,7 +963,8 @@
+ 			6:00	-	AKTT	1982 Apr  1
+ 			5:00 RussiaAsia	AKT%sT	1991
+ 			5:00	-	AKTT	1991 Dec 16 # independence
+-			5:00 RussiaAsia	AQT%sT	# Aqtobe Time
++			5:00 RussiaAsia	AQT%sT	2005 Mar 15 # Aqtobe Time
++			5:00	-	AQTT
+ # Mangghystau
+ # Aqtau was not founded until 1963, but it represents an inhabited region,
+ # so include time stamps before 1963.
+@@ -926,8 +975,9 @@
  			6:00	-	SHET	1982 Apr  1
  			5:00 RussiaAsia	SHE%sT	1991
  			5:00	-	SHET	1991 Dec 16 # independence
 -			5:00 RussiaAsia	AQT%sT	1995 Sep lastSun # Aqtau Time
+-			4:00 RussiaAsia	AQT%sT
 +			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun 2:00 # Aqtau Time
- 			4:00 RussiaAsia	AQT%sT
++			4:00 RussiaAsia	AQT%sT	2005 Mar 15
++			4:00	-	AQTT
  # West Kazakhstan
  Zone	Asia/Oral	3:25:24	-	LMT	1924 May  2 # or Ural'sk
-@@ -1036,22 +1042,29 @@
+ 			4:00	-	URAT	1930 Jun 21 # Ural'sk time
+@@ -937,7 +987,8 @@
+ 			5:00 RussiaAsia	URA%sT	1989 Mar 26 2:00
+ 			4:00 RussiaAsia	URA%sT	1991
+ 			4:00	-	URAT	1991 Dec 16 # independence
+-			4:00 RussiaAsia	ORA%sT	# Oral Time
++			4:00 RussiaAsia	ORA%sT	2005 Mar 15 # Oral Time
++			4:00	-	ORAT
+ 
+ # Kyrgyzstan (Kirgizstan)
+ # Transitions through 1991 are from Shanks.
+@@ -1036,22 +1087,29 @@
  Rule	NBorneo	1935	1941	-	Sep	14	0:00	0:20	TS # one-Third Summer
  Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
  #
@@ -194,7 +452,7 @@
  			8:00	-	MYT
  
  # Maldives
-@@ -1103,6 +1116,15 @@
+@@ -1103,6 +1161,15 @@
  #
  # [The province of Selenge is omitted from the above lists.]
  
@@ -210,7 +468,7 @@
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule	Mongol	1983	1984	-	Apr	1	0:00	1:00	S
  Rule	Mongol	1983	only	-	Oct	1	0:00	0	-
-@@ -1112,8 +1134,9 @@
+@@ -1112,8 +1179,9 @@
  Rule	Mongol	1985	1998	-	Mar	lastSun	2:00s	1:00	S
  Rule	Mongol	1984	1998	-	Sep	lastSun	2:00s	0	-
  # IATA SSIM (1999-09) says Mongolia no longer observes DST.
@@ -222,7 +480,7 @@
  
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
  # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
-@@ -1320,15 +1343,18 @@
+@@ -1320,15 +1388,18 @@
  			3:00	-	AST
  
  # Singapore
@@ -248,16 +506,30 @@
  			8:00	-	SGT
  
  # Spratly Is
-diff -Nuar timezone.org/australasia timezone/australasia
---- timezone.org/australasia	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/australasia	2003-10-27 13:21:35.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/australasia glibc-2.3.4/timezone/australasia
+--- glibc-2.3.2/timezone/australasia	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/australasia	2005-04-10 08:52:13.000000000 +0900
 @@ -1,4 +1,4 @@
 -# @(#)australasia	7.68
-+# @(#)australasia	7.69
++# @(#)australasia	7.71
  # This file also includes Pacific islands.
  
  # Notes are at the end of this file
-@@ -297,45 +297,37 @@
+@@ -199,9 +199,11 @@
+ 			-10:00	Cook	CK%sT
+ 
+ # Cocos
+-# From USNO (1989):
++# These islands were ruled by the Ross family from about 1830 to 1978.
++# We don't know when standard time was introduced; for now, we guess 1900.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Cocos	6:30	-	CCT	# Cocos Islands Time
++Zone	Indian/Cocos	6:27:40	-	LMT	1900
++			6:30	-	CCT	# Cocos Islands Time
+ 
+ # Fiji
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -297,45 +299,37 @@
  ###############################################################################
  
  # New Zealand
@@ -322,16 +594,42 @@
  
  
  # Auckland Is
-@@ -443,6 +435,8 @@
+@@ -389,11 +383,11 @@
+ 			-11:00	-	BST	1983 Nov 30	# B=Bering
+ 			-11:00	-	SST			# S=Samoa
  
+-# W Samoa
++# Samoa
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	SAMT	1950		# Samoa Time
+-			-11:00	-	WST			# W Samoa Time
++			-11:00	-	WST			# Samoa Time
+ 
+ # Solomon Is
+ # excludes Bougainville, for which see Papua New Guinea
+@@ -442,7 +436,20 @@
+ # uninhabited
+ 
  # Midway
++#
++# From Mark Brader (2005-01-23):
++# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
++# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
++# reproduced a Pan American Airways timeables from 1936, for their weekly
++# "Orient Express" flights between San Francisco and Manila, and connecting
++# flights to Chicago and the US East Coast.  As it uses some time zone
++# designations that I've never seen before:....
++# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I.   H.L.T. Ar. 5:30P Sun.
++#  "   3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A  "
++#
  Zone Pacific/Midway	-11:49:28 -	LMT	1901
 +			-11:00	-	NST	1956 Jun  3
 +			-11:00	1:00	NDT	1956 Sep  2
  			-11:00	-	NST	1967 Apr	# N=Nome
  			-11:00	-	BST	1983 Nov 30	# B=Bering
  			-11:00	-	SST			# S=Samoa
-@@ -513,7 +507,8 @@
+@@ -513,7 +520,8 @@
  #	 10:00	EST EST	Eastern Australia
  #	 10:00	ChST	Chamorro
  #	 10:30	LHST LHST Lord Howe*
@@ -341,7 +639,7 @@
  #	 12:45	CHAST CHADT Chatham*
  #	-11:00	SST	Samoa
  #	-10:00	HST	Hawaii
-@@ -1067,11 +1062,14 @@
+@@ -1067,11 +1075,14 @@
  # time on both the first Sunday in October and the third Sunday in March.
  # As with Australia, we'll assume the tradition is 2:00s, not 2:00.
  #
@@ -361,7 +659,7 @@
  
  ###############################################################################
  
-@@ -1154,6 +1152,23 @@
+@@ -1154,6 +1165,23 @@
  # We don't know when Kosrae switched from UTC+12; assume January 1 for now.
  
  
@@ -385,7 +683,7 @@
  # Pitcairn
  
  # From Rives McDow (1999-11-08):
-@@ -1277,6 +1292,24 @@
+@@ -1277,6 +1305,24 @@
  # From Pulu 'Anau (2002-11-05):
  # The law was for 3 years, supposedly to get renewed.  It wasn't.
  
@@ -410,12 +708,24 @@
  ###############################################################################
  
  # The International Date Line
-diff -Nuar timezone.org/backward timezone/backward
---- timezone.org/backward	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/backward	2004-07-30 08:40:17.000000000 +0900
-@@ -1,12 +1,17 @@
+@@ -1303,3 +1349,11 @@
+ # places as late as fourteen hours later than UTC.  And, since the IDL is not
+ # an international standard, there are some places on the high seas where the
+ # correct date is ambiguous.
++
++# From Paul Eggert, using references suggested by Oscar van Vlijmen
++# (2005-03-20):
++#
++# The American Practical Navigator (2002)
++# <http://pollux.nss.nima.mil/pubs/pubs_j_apn_sections.html?rid=187>
++# talks only about the 180-degree meridian with respect to ships in
++# international waters; it ignores the international date line.
+diff -Nuar glibc-2.3.2/timezone/backward glibc-2.3.4/timezone/backward
+--- glibc-2.3.2/timezone/backward	2002-04-06 12:40:00.000000000 +0900
++++ glibc-2.3.4/timezone/backward	2005-04-10 08:52:13.000000000 +0900
+@@ -1,14 +1,19 @@
 -# @(#)backward	7.23
-+# @(#)backward	7.26
++# @(#)backward	7.27
  
  # This file provides links between current names for time zones
  # and their old names.  Many names changed in late 1993.
@@ -430,9 +740,20 @@
  Link	America/Indiana/Knox	America/Knox_IN
 +Link	America/Argentina/Mendoza	America/Mendoza
  Link	America/Rio_Branco	America/Porto_Acre
- Link	America/Cordoba		America/Rosario
+-Link	America/Cordoba		America/Rosario
++Link	America/Argentina/Cordoba	America/Rosario
  Link	America/St_Thomas	America/Virgin
-@@ -36,7 +41,7 @@
+ Link	Asia/Ashgabat		Asia/Ashkhabad
+ Link	Asia/Chongqing		Asia/Chungking
+@@ -29,14 +34,14 @@
+ Link	Australia/Melbourne	Australia/Victoria
+ Link	Australia/Perth		Australia/West
+ Link	Australia/Broken_Hill	Australia/Yancowinna
+-Link	America/Porto_Acre	Brazil/Acre
++Link	America/Rio_Branco	Brazil/Acre
+ Link	America/Noronha		Brazil/DeNoronha
+ Link	America/Sao_Paulo	Brazil/East
+ Link	America/Manaus		Brazil/West
  Link	America/Halifax		Canada/Atlantic
  Link	America/Winnipeg	Canada/Central
  Link	America/Regina		Canada/East-Saskatchewan
@@ -441,21 +762,54 @@
  Link	America/Edmonton	Canada/Mountain
  Link	America/St_Johns	Canada/Newfoundland
  Link	America/Vancouver	Canada/Pacific
-@@ -65,7 +70,7 @@
- Link	America/Tijuana		Mexico/BajaNorte
- Link	America/Mazatlan	Mexico/BajaSur
- Link	America/Mexico_City	Mexico/General
--Link	America/Denver		Navajo
-+Link	America/Shiprock	Navajo
- Link	Pacific/Auckland	NZ
- Link	Pacific/Chatham		NZ-CHAT
- Link	Pacific/Pago_Pago	Pacific/Samoa
-diff -Nuar timezone.org/europe timezone/europe
---- timezone.org/europe	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/europe	2004-07-30 08:40:17.000000000 +0900
+@@ -50,10 +55,10 @@
+ Link	Europe/Chisinau		Europe/Tiraspol
+ Link	Europe/London		GB
+ Link	Europe/London		GB-Eire
+-Link	Etc/GMT+0		GMT+0
+-Link	Etc/GMT-0		GMT-0
+-Link	Etc/GMT0		GMT0
+-Link	Etc/Greenwich		Greenwich
++Link	Etc/GMT			GMT+0
++Link	Etc/GMT			GMT-0
++Link	Etc/GMT			GMT0
++Link	Etc/GMT			Greenwich
+ Link	Asia/Hong_Kong		Hongkong
+ Link	Atlantic/Reykjavik	Iceland
+ Link	Asia/Tehran		Iran
+@@ -90,6 +95,6 @@
+ Link	America/Los_Angeles	US/Pacific
+ Link	Pacific/Pago_Pago	US/Samoa
+ Link	Etc/UTC			UTC
+-Link	Etc/Universal		Universal
++Link	Etc/UTC			Universal
+ Link	Europe/Moscow		W-SU
+-Link	Etc/Zulu		Zulu
++Link	Etc/UTC			Zulu
+diff -Nuar glibc-2.3.2/timezone/etcetera glibc-2.3.4/timezone/etcetera
+--- glibc-2.3.2/timezone/etcetera	2001-03-16 10:00:19.000000000 +0900
++++ glibc-2.3.4/timezone/etcetera	2005-04-10 08:52:13.000000000 +0900
+@@ -1,10 +1,11 @@
+-# @(#)etcetera	7.11
++# @(#)etcetera	7.12
+ 
+ # These entries are mostly present for historical reasons, so that
+ # people in areas not otherwise covered by the tz files could "zic -l"
+ # to a time zone that was right for their area.  These days, the
+-# tz files cover almost all the inhabited world, so there's little
+-# need now for the entries that are not on UTC.
++# tz files cover almost all the inhabited world, and the only practical
++# need now for the entries that are not on UTC are for ships at sea
++# that cannot use POSIX TZ settings.
+ 
+ Zone	Etc/GMT		0	-	GMT
+ Zone	Etc/UTC		0	-	UTC
+diff -Nuar glibc-2.3.2/timezone/europe glibc-2.3.4/timezone/europe
+--- glibc-2.3.2/timezone/europe	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/europe	2005-04-10 08:52:13.000000000 +0900
 @@ -1,4 +1,4 @@
 -# @(#)europe	7.83
-+# @(#)europe	7.88
++# @(#)europe	7.92
  
  # 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
@@ -512,17 +866,65 @@
  
  # From Paul Eggert (1996-09-03):
  # The OED Supplement says that the English originally said ``Daylight Saving''
-@@ -693,6 +707,9 @@
+@@ -241,6 +255,35 @@
+ #   "Timeball on the ballast office is down.  Dunsink time."
+ #   -- James Joyce, Ulysses
+ 
++# From Joseph S. Myers (2005-01-26):
++# Irish laws are available online at www.irishstatutebook.ie.  These include 
++# various relating to legal time, for example:
++# 
++# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
++# 
++# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
++# ZZSI27Y1951.html ZZSI73Y1952.html
++# 
++# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
++# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
++# ZZA23Y1968.html ZZA17Y1971.html
++# 
++# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
++# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
++# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
++#
++# [These are all relative to the root, e.g., the first is
++# <http://www.irishstatutebook.ie/ZZA13Y1923.html>.]
++# 
++# (These are those I found, but there could be more.  In any case these 
++# should allow various updates to the comments in the europe file to cover 
++# the laws applicable in Ireland.)
++# 
++# (Note that the time in the Republic of Ireland since 1968 has been defined 
++# in terms of standard time being GMT+1 with a period of winter time when it 
++# is GMT, rather than standard time being GMT with a period of summer time 
++# being GMT+1.)
++
+ # From Paul Eggert (1999-03-28):
+ # Clive Feather (<news:859845706.26043.0@office.demon.net>, 1997-03-31)
+ # reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time
+@@ -693,6 +736,9 @@
  # Croatia
  # see Serbia and Montenegro
  
 +# Cyprus
-+# See the `asia' file.
++# Please see the `asia' file for Asia/Nicosia.
 +
  # Czech Republic
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule	Czech	1945	only	-	Apr	 8	2:00s	1:00	S
-@@ -904,6 +921,10 @@
+@@ -737,6 +783,11 @@
+ 			 0:00	-	WET	1981
+ 			 0:00	EU	WE%sT
+ #
++# From Paul Eggert (2004-10-31):
++# During World War II, Germany maintained secret manned weather stations in
++# East Greenland and Franz Josef Land, but we don't know their time zones.
++# My source for this is Wilhelm Dege's book mentioned under Svalbard.
++#
+ # From Paul Eggert (1996-11-22):
+ # Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
+ # and left the EU on 1985-02-01.  It therefore should have been using EU
+@@ -904,6 +955,10 @@
  			2:00	Finland	EE%sT	1981 Mar 29 2:00
  			2:00	EU	EE%sT
  
@@ -533,7 +935,19 @@
  # France
  
  # From Ciro Discepolo (2000-12-20):
-@@ -1323,7 +1344,7 @@
+@@ -1034,6 +1089,11 @@
+ 			1:00	Germany	CE%sT	1980
+ 			1:00	EU	CE%sT
+ 
++# Georgia
++# Please see the "asia" file for Asia/Tbilisi.
++# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
++# is in Europe.  Our reference location Tbilisi is in the Asian part.
++
+ # Gibraltar
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2
+@@ -1323,7 +1383,7 @@
  			2:00	1:00	EEST	1989 Sep lastSun 2:00s
  			2:00	Latvia	EE%sT	1997 Jan 21
  			2:00	EU	EE%sT	2000 Feb 29
@@ -542,7 +956,25 @@
  			2:00	EU	EE%sT
  
  # Liechtenstein
-@@ -1750,8 +1771,10 @@
+@@ -1590,7 +1650,7 @@
+ # From Paul Eggert (2001-05-01):
+ #
+ # Actually, Jan Mayen was never occupied by Germany during World War II,
+-# so it must have diverged from Oslo time during the war, as Olso was
++# so it must have diverged from Oslo time during the war, as Oslo was
+ # keeping Berlin time.
+ #
+ # <http://home.no.net/janmayen/history.htm> says that the meteorologists
+@@ -1607,7 +1667,7 @@
+ # <http://www.svalbard.com/SvalbardFAQ.html> says that the Germans were
+ # expelled on 1942-05-14.  However, small parties of Germans did return,
+ # and according to Wilhelm Dege's book "War North of 80" (1954)
+-# <http://www.utpress.utoronto.ca/publishing/rights/dege_warnorthof80.htm>
++# <http://www.ucalgary.ca/UofC/departments/UP/1-55238/1-55238-110-2.html>
+ # the German armed forces at the Svalbard weather station code-named
+ # Haudegen did not surrender to the Allies until September 1945.
+ #
+@@ -1750,8 +1810,10 @@
  Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
  Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -554,7 +986,7 @@
  			 0:00	Port	WE%sT	1966 Apr  3 2:00
  			 1:00	-	CET	1976 Sep 26 1:00
  			 0:00	Port	WE%sT	1983 Sep 25 1:00s
-@@ -1815,7 +1838,7 @@
+@@ -1815,7 +1877,7 @@
  #
  # From Andrey A. Chernov <ache@nagual.ru> (1996-10-04):
  # `MSK' and `MSD' were born and used initially on Moscow computers with
@@ -563,7 +995,7 @@
  # The next step was the UUCP network, the Relcom predecessor
  # (used mainly for mail), and MSK/MSD was actively used there.
  #
-@@ -1936,28 +1959,26 @@
+@@ -1936,28 +1998,26 @@
  			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
  			 8:00	Russia	IRK%sT
  #
@@ -602,7 +1034,7 @@
  Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
  			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
  			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
-@@ -1974,11 +1995,11 @@
+@@ -1974,11 +2034,11 @@
  			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
  			10:00	Russia	SAK%sT
  #
@@ -618,14 +1050,14 @@
  Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
  			10:00	-	MAGT	1930 Jun 21 # Magadan Time
  			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
-diff -Nuar timezone.org/iso3166.tab timezone/iso3166.tab
---- timezone.org/iso3166.tab	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/iso3166.tab	2004-07-30 08:40:17.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/iso3166.tab glibc-2.3.4/timezone/iso3166.tab
+--- glibc-2.3.2/timezone/iso3166.tab	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/iso3166.tab	2005-04-10 08:52:13.000000000 +0900
 @@ -1,12 +1,12 @@
  # ISO 3166 alpha-2 country codes
  #
 -# @(#)iso3166.tab	1.9
-+# @(#)iso3166.tab	1.15
++# @(#)iso3166.tab	1.16
  #
 -# From Paul Eggert <eggert@twinsun.com> (2003-02-04):
 +# From Paul Eggert <eggert@twinsun.com> (2004-06-14):
@@ -653,86 +1085,97 @@
  CU	Cuba
  CV	Cape Verde
  CX	Christmas Island
-@@ -256,7 +258,6 @@
- WS	Samoa (Western)
+@@ -253,10 +255,9 @@
+ VN	Vietnam
+ VU	Vanuatu
+ WF	Wallis & Futuna
+-WS	Samoa (Western)
++WS	Samoa (western)
  YE	Yemen
  YT	Mayotte
 -YU	Serbia and Montenegro
  ZA	South Africa
  ZM	Zambia
  ZW	Zimbabwe
-diff -Nuar timezone.org/leapseconds timezone/leapseconds
---- timezone.org/leapseconds	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/leapseconds	2004-07-30 08:40:17.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/leapseconds glibc-2.3.4/timezone/leapseconds
+--- glibc-2.3.2/timezone/leapseconds	2002-01-29 13:18:04.000000000 +0900
++++ glibc-2.3.4/timezone/leapseconds	2005-04-10 08:52:13.000000000 +0900
 @@ -1,4 +1,4 @@
 -# @(#)leapseconds	7.15
-+# @(#)leapseconds	7.17
++# @(#)leapseconds	7.19
  
  # Allowance for leapseconds added to each timezone file.
  
-@@ -44,37 +44,38 @@
+@@ -44,37 +44,37 @@
  Leap	1997	Jun	30	23:59:60	+	S
  Leap	1998	Dec	31	23:59:60	+	S
  
 -#                  INTERNATIONAL EARTH ROTATION SERVICE (IERS)
 -#   	       SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE
-+# 	INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
-+# 
+-# 
++#	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)
  # Tel.      : 33 (0) 1 40 51 22 26
  # FAX       : 33 (0) 1 40 51 22 91
 -# Internet  : iers@obspm.fr
-+# Internet  : services.iers@obspm.fr
-+# 
-+# 						Paris, 15 January 2004
- # 
+-# 
 -#                                               Paris, 14 January 2002
-+# 						Bulletin C 27
- # 
+-# 
 -#                                               Bulletin C 23
-+# 						To authorities responsible
-+# 						for the measurement and
-+# 						distribution of time
- # 
+-# 
 -#                                               To authorities responsible
 -#                                               for the measurement and
 -#                                               distribution of time
-+# 			INFORMATION ON UTC - TAI
- # 
+-# 
 -#                          INFORMATION ON UTC - TAI
-+# NO positive leap second will be introduced at the end of June 2004.
-+# The difference between UTC and the International Atomic Time TAI is:
- # 
+-# 
 -# NO positive leap second will be introduced at the end of June 2002.
 -# The difference between UTC and the International Atomic Time TAI is :		
 -# 		
 -#     from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s
-+# 	from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s
- # 
+-# 
++# Internet  : services.iers@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
 +# 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
 -#                                             Observatoire de Paris, France
-+# 					Daniel GAMBIS
-+# 					Director
-+# 					Earth Orientation Center of IERS
-+# 					Observatoire de Paris, France
-diff -Nuar timezone.org/northamerica timezone/northamerica
---- timezone.org/northamerica	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/northamerica	2004-07-30 08:40:18.000000000 +0900
++#
++#					Daniel GAMBIS
++#					Director
++#					Earth Orientation Center of IERS
+diff -Nuar glibc-2.3.2/timezone/northamerica glibc-2.3.4/timezone/northamerica
+--- glibc-2.3.2/timezone/northamerica	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/northamerica	2005-04-10 08:52:13.000000000 +0900
 @@ -1,4 +1,4 @@
 -# @(#)northamerica	7.62
-+# @(#)northamerica	7.69
++# @(#)northamerica	7.72
  # also includes Central America and the Caribbean
  
  # This data is by no means authoritative; if you think you know better,
@@ -747,8 +1190,22 @@
  # From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
  # Public law 106-564 (2000-12-23) introduced the abbreviation
  # "Chamorro Standard Time" for time in Guam and the Northern Marianas.
-@@ -228,7 +224,9 @@
+@@ -212,6 +208,13 @@
+ # Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
+ # Vermont, Virginia, West Virginia
  
++# From Dave Cantor (2004-11-02):
++# Early this summer I had the occasion to visit the Mount Washington
++# Observatory weather station atop (of course!) Mount Washington [, NH]....
++# One of the staff members said that the station was on Eastern Standard Time
++# and didn't change their clocks for Daylight Saving ... so that their
++# reports will always have times which are 5 hours behind UTC.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+ Rule	NYC	1920	only	-	Mar	lastSun	2:00	1:00	D
+ Rule	NYC	1920	only	-	Oct	lastSun	2:00	0	S
+@@ -228,7 +231,9 @@
+ 
  # US central time, represented by Chicago
  
 -# Alabama, Arkansas, Florida panhandle, Illinois, western Indiana
@@ -758,7 +1215,7 @@
  # (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
  # Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
  # Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
-@@ -258,7 +256,7 @@
+@@ -258,7 +263,7 @@
  
  # US mountain time, represented by Denver
  #
@@ -767,7 +1224,7 @@
  # Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
  # New Mexico, southwestern North Dakota, far eastern Oregon,
  # western South Dakota, far western Texas (El Paso County, Hudspeth County,
-@@ -280,7 +278,9 @@
+@@ -280,7 +285,9 @@
  
  # US Pacific time, represented by Los Angeles
  #
@@ -778,7 +1235,7 @@
  #
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
  Rule	CA	1948	only	-	Mar	14	2:00	1:00	D
-@@ -319,13 +319,14 @@
+@@ -319,13 +326,14 @@
  			 -8:00	US	P%sT	1946
  			 -8:00	-	PST	1969
  			 -8:00	US	P%sT	1983 Oct 30 2:00
@@ -794,7 +1251,7 @@
  			 -9:00	US	AK%sT
  Zone America/Anchorage	 14:00:24 -	LMT	1867 Oct 18
  			 -9:59:36 -	LMT	1900 Aug 20 12:00
-@@ -334,6 +335,7 @@
+@@ -334,6 +342,7 @@
  			-10:00	-	CAT	1967 Apr
  			-10:00	-	AHST	1969
  			-10:00	US	AH%sT	1983 Oct 30 2:00
@@ -802,7 +1259,7 @@
  			 -9:00	US	AK%sT
  Zone America/Nome	 12:58:21 -	LMT	1867 Oct 18
  			-11:01:38 -	LMT	1900 Aug 20 12:00
-@@ -342,6 +344,7 @@
+@@ -342,6 +351,7 @@
  			-11:00	-	NST	1967 Apr
  			-11:00	-	BST	1969
  			-11:00	US	B%sT	1983 Oct 30 2:00
@@ -810,15 +1267,37 @@
  			 -9:00	US	AK%sT
  Zone America/Adak	 12:13:21 -	LMT	1867 Oct 18
  			-11:46:38 -	LMT	1900 Aug 20 12:00
-@@ -350,6 +353,7 @@
+@@ -350,11 +360,28 @@
  			-11:00	-	NST	1967 Apr
  			-11:00	-	BST	1969
  			-11:00	US	B%sT	1983 Oct 30 2:00
 +			-10:00	US	AH%sT	1983 Nov 30
  			-10:00	US	HA%sT
++# The following switches don't quite make our 1970 cutoff.
++#
  # Shanks writes that part of southwest Alaska (e.g. Aniak)
  # switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
-@@ -405,14 +409,20 @@
+ # and another part (e.g. Akiak) made the same switch five weeks later.
+-# These switches don't quite make our 1970 cutoff.
++#
++# From David Flater (2004-11-09):
++# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska
++# Historic Preservation Commission, provided this information, which
++# suggests that Unalaska deviated from statutory time from early 1967
++# possibly until 1983:
++#
++#  Minutes of the Unalaska City Council Meeting, January 10, 1967:
++#  "Except for St. Paul and Akutan, Unalaska is the only important
++#  location not on Alaska Standard Time.  The following resolution was
++#  made by William Robinson and seconded by Henry Swanson:  Be it
++#  resolved that the City of Unalaska hereby goes to Alaska Standard
++#  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
++#  January 14, Alaska Standard Time.)  This resolution was passed with
++#  three votes for and one against."
+ 
+ # Hawaii
+ #
+@@ -405,14 +432,20 @@
  			-7:00	-	MST
  # From Arthur David Olson (1988-02-13):
  # A writer from the Inter Tribal Council of Arizona, Inc.,
@@ -837,11 +1316,11 @@
 +# 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
-@@ -685,9 +695,15 @@
+@@ -685,9 +718,15 @@
  # Except where otherwise noted, Shanks is the source for entries through 1990,
  # and IATA SSIM is the source for entries after 1990.
  #
@@ -860,7 +1339,7 @@
  #
  # See the `europe' file for Greenland.
  
-@@ -743,7 +759,8 @@
+@@ -743,7 +782,8 @@
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule	Canada	1918	only	-	Apr	14	2:00	1:00	D
  Rule	Canada	1918	only	-	Oct	31	2:00	0	S
@@ -870,7 +1349,7 @@
  Rule	Canada	1945	only	-	Sep	30	2:00	0	S
  Rule	Canada	1974	1986	-	Apr	lastSun	2:00	1:00	D
  Rule	Canada	1974	max	-	Oct	lastSun	2:00	0	S
-@@ -759,27 +776,20 @@
+@@ -759,27 +799,20 @@
  # but excluding, say, Black Tickle.
  
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -905,7 +1384,7 @@
  # For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
  # Apr 30 - Sep 24; go with Shanks.
  Rule	StJohns	1946	1950	-	May	Sun>=8	2:00	1:00	D
-@@ -797,18 +807,24 @@
+@@ -797,18 +830,24 @@
  # St John's has an apostrophe, but Posix file names can't have apostrophes.
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
  Zone America/St_Johns	-3:30:52 -	LMT	1884
@@ -932,7 +1411,7 @@
  			-3:30	StJohns	N%sT	1966 Mar 15 2:00
  			-4:00	StJohns	A%sT
  
-@@ -830,8 +846,6 @@
+@@ -830,8 +869,6 @@
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule Halifax	1916	only	-	Apr	 1	0:00	1:00	D
  Rule Halifax	1916	only	-	Oct	 1	0:00	0	S
@@ -941,7 +1420,7 @@
  Rule Halifax	1920	only	-	May	 9	0:00	1:00	D
  Rule Halifax	1920	only	-	Aug	29	0:00	0	S
  Rule Halifax	1921	only	-	May	 6	0:00	1:00	D
-@@ -850,6 +864,7 @@
+@@ -850,6 +887,7 @@
  Rule Halifax	1929	only	-	Sep	 3	0:00	0	S
  Rule Halifax	1930	only	-	Sep	15	0:00	0	S
  Rule Halifax	1931	1932	-	Sep	Mon>=24	0:00	0	S
@@ -949,7 +1428,7 @@
  Rule Halifax	1933	only	-	Apr	30	0:00	1:00	D
  Rule Halifax	1933	only	-	Oct	 2	0:00	0	S
  Rule Halifax	1934	only	-	May	20	0:00	1:00	D
-@@ -862,33 +877,55 @@
+@@ -862,33 +900,55 @@
  Rule Halifax	1937	1941	-	Sep	Mon>=24	0:00	0	S
  Rule Halifax	1939	only	-	May	28	0:00	1:00	D
  Rule Halifax	1940	1941	-	May	Sun>=1	0:00	1:00	D
@@ -1015,7 +1494,7 @@
  # says that Atikokan, Ontario currently does not observe DST,
  # but will vote on 11-10 whether to use EST/EDT.
  # He also writes that the
-@@ -915,43 +952,115 @@
+@@ -915,43 +975,115 @@
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
  Rule	Mont	1917	only	-	Apr	24	0:00	0	S
@@ -1147,7 +1626,7 @@
  			-6:00	Canada	C%sT
  
  
-@@ -964,7 +1073,8 @@
+@@ -964,7 +1096,8 @@
  Rule	Winn	1918	only	-	Oct	31	2:00	0	S
  Rule	Winn	1937	only	-	May	16	2:00	1:00	D
  Rule	Winn	1937	only	-	Sep	26	2:00	0	S
@@ -1157,7 +1636,7 @@
  Rule	Winn	1945	only	-	Sep	lastSun	2:00	0	S
  Rule	Winn	1946	only	-	May	12	2:00	1:00	D
  Rule	Winn	1946	only	-	Oct	13	2:00	0	S
-@@ -992,6 +1102,20 @@
+@@ -992,6 +1125,20 @@
  
  # Saskatchewan
  
@@ -1178,7 +1657,7 @@
  # From Paul Eggert (2000-10-02):
  # Shanks writes that since 1970 most of this region has been like Regina.
  # Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
-@@ -1034,12 +1158,14 @@
+@@ -1034,12 +1181,14 @@
  Rule	Regina	1937	only	-	Oct	Sun>=8	0:00	0	S
  Rule	Regina	1938	only	-	Oct	Sun>=1	0:00	0	S
  Rule	Regina	1939	1941	-	Oct	Sun>=8	0:00	0	S
@@ -1196,7 +1675,7 @@
  Rule	Regina	1959	only	-	Oct	lastSun	2:00	0	S
  #
  Rule	Swift	1957	only	-	Apr	lastSun	2:00	1:00	D
-@@ -1067,7 +1193,8 @@
+@@ -1067,7 +1216,8 @@
  Rule	Edm	1920	1923	-	Apr	lastSun	2:00	1:00	D
  Rule	Edm	1920	only	-	Oct	lastSun	2:00	0	S
  Rule	Edm	1921	1923	-	Sep	lastSun	2:00	0	S
@@ -1206,7 +1685,7 @@
  Rule	Edm	1945	only	-	Sep	lastSun	2:00	0	S
  Rule	Edm	1947	only	-	Apr	lastSun	2:00	1:00	D
  Rule	Edm	1947	only	-	Sep	lastSun	2:00	0	S
-@@ -1093,7 +1220,8 @@
+@@ -1093,7 +1243,8 @@
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule	Vanc	1918	only	-	Apr	14	2:00	1:00	D
  Rule	Vanc	1918	only	-	Oct	31	2:00	0	S
@@ -1216,7 +1695,7 @@
  Rule	Vanc	1945	only	-	Sep	30	2:00	0	S
  Rule	Vanc	1946	1986	-	Apr	lastSun	2:00	1:00	D
  Rule	Vanc	1946	only	-	Oct	13	2:00	0	S
-@@ -1219,7 +1347,8 @@
+@@ -1219,7 +1370,8 @@
  Rule	NT_YK	1918	only	-	Oct	27	2:00	0	S
  Rule	NT_YK	1919	only	-	May	25	2:00	1:00	D
  Rule	NT_YK	1919	only	-	Nov	 1	0:00	0	S
@@ -1226,7 +1705,7 @@
  Rule	NT_YK	1945	only	-	Sep	30	2:00	0	S
  Rule	NT_YK	1965	only	-	Apr	lastSun	0:00	2:00	DD
  Rule	NT_YK	1965	only	-	Oct	lastSun	2:00	0	S
-@@ -1412,7 +1541,7 @@
+@@ -1412,7 +1564,7 @@
  Rule	Mexico	1939	only	-	Jun	25	0:00	0	S
  Rule	Mexico	1940	only	-	Dec	9	0:00	1:00	D
  Rule	Mexico	1941	only	-	Apr	1	0:00	0	S
@@ -1235,8 +1714,35 @@
  Rule	Mexico	1944	only	-	May	1	0:00	0	S
  Rule	Mexico	1950	only	-	Feb	12	0:00	1:00	D
  Rule	Mexico	1950	only	-	Jul	30	0:00	0	S
-@@ -1682,7 +1811,8 @@
+@@ -1602,6 +1754,15 @@
+ # to DST--and one more hour on 1999-04-04--when the announcers will have
+ # returned to Baltimore, which switches on that date.)
+ 
++# From Evert van der Veer via Steffen Thorsen (2004-10-28):
++# Cuba is not going back to standard time this year.
++# From Paul Eggert (2004-10-28):
++# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html
++# says that it's due to a problem at the Antonio Guiteras
++# thermoelectric plant, and says "This October there will be no return
++# to normal hours (after daylight saving time)".
++# For now, let's assume that it's a one-year temporary measure.
++
  # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
+ Rule	Cuba	1928	only	-	Oct	10	0:00	0	S
+@@ -1630,8 +1791,9 @@
+ Rule	Cuba	1996	only	-	Oct	 6	0:00s	0	S
+ Rule	Cuba	1997	only	-	Oct	12	0:00s	0	S
+ Rule	Cuba	1998	1999	-	Mar	lastSun	0:00s	1:00	D
+-Rule	Cuba	1998	max	-	Oct	lastSun	0:00s	0	S
++Rule	Cuba	1998	2003	-	Oct	lastSun	0:00s	0	S
+ Rule	Cuba	2000	max	-	Apr	Sun>=1	0:00s	1:00	D
++Rule	Cuba	2005	max	-	Oct	lastSun	0:00s	0	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Havana	-5:29:28 -	LMT	1890
+@@ -1682,7 +1844,8 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
  Rule	Salv	1987	1988	-	May	Sun>=1	0:00	1:00	D
  Rule	Salv	1987	1988	-	Sep	lastSun	0:00	0	S
 -# There are too many San Salvadors elsewhere, so we'll use `El Salvador'.
@@ -1245,7 +1751,7 @@
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
  Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
  			-6:00	Salv	C%sT
-@@ -1812,7 +1942,8 @@
+@@ -1812,7 +1975,8 @@
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
  Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
  			-4:00	-	AST	1980 May
@@ -1255,19 +1761,19 @@
  
  # St Vincent and the Grenadines
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-diff -Nuar timezone.org/private.h timezone/private.h
---- timezone.org/private.h	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/private.h	2004-10-13 23:30:38.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/private.h glibc-2.3.4/timezone/private.h
+--- glibc-2.3.2/timezone/private.h	2001-06-10 05:29:20.000000000 +0900
++++ glibc-2.3.4/timezone/private.h	2005-04-10 08:52:13.000000000 +0900
 @@ -21,7 +21,7 @@
  
  #ifndef lint
  #ifndef NOID
 -static char	privatehid[] = "@(#)private.h	7.52";
-+static char	privatehid[] = "@(#)private.h	7.54";
++static char	privatehid[] = "@(#)private.h	7.55";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
-@@ -190,11 +190,22 @@
+@@ -190,13 +190,25 @@
  ** But some newer errno.h implementations define it as a macro.
  ** Fix the former without affecting the latter.
  */
@@ -1289,8 +1795,35 @@
 +/*
  ** Private function declarations.
  */
++
  char *	icalloc P((int nelem, int elsize));
-@@ -288,7 +299,7 @@
+ char *	icatalloc P((char * old, const char * new));
+ char *	icpyalloc P((const char * string));
+@@ -206,7 +218,6 @@
+ void	ifree P((char * pointer));
+ char *	scheck P((const char *string, const char *format));
+ 
+-
+ /*
+ ** Finally, some convenience items.
+ */
+@@ -227,6 +238,15 @@
+ #define TYPE_SIGNED(type) (((type) -1) < 0)
+ #endif /* !defined TYPE_SIGNED */
+ 
++/*
++** Since the definition of TYPE_INTEGRAL contains floating point numbers,
++** it cannot be used in preprocessor directives.
++*/
++
++#ifndef TYPE_INTEGRAL
++#define TYPE_INTEGRAL(type) (((type) 0.5) != 0.5)
++#endif /* !defined TYPE_INTEGRAL */
++
+ #ifndef INT_STRLEN_MAXIMUM
+ /*
+ ** 302 / 1000 is log10(2.0) rounded up.
+@@ -288,7 +308,7 @@
  #endif /* HAVE_INCOMPATIBLE_CTIME_R */
  
  /*
@@ -1299,12 +1832,23 @@
  */
  
  #endif /* !defined PRIVATE_H */
-diff -Nuar timezone.org/southamerica timezone/southamerica
---- timezone.org/southamerica	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/southamerica	2004-10-13 23:30:38.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/scheck.c glibc-2.3.4/timezone/scheck.c
+--- glibc-2.3.2/timezone/scheck.c	1998-02-16 04:30:15.000000000 +0900
++++ glibc-2.3.4/timezone/scheck.c	2005-04-10 08:52:13.000000000 +0900
+@@ -1,6 +1,6 @@
+ #ifndef lint
+ #ifndef NOID
+-static char	elsieid[] = "@(#)scheck.c	8.15";
++static char	elsieid[] = "@(#)scheck.c	8.16";
+ #endif /* !defined lint */
+ #endif /* !defined NOID */
+ 
+diff -Nuar glibc-2.3.2/timezone/southamerica glibc-2.3.4/timezone/southamerica
+--- glibc-2.3.2/timezone/southamerica	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/southamerica	2005-04-10 08:52:13.000000000 +0900
 @@ -1,4 +1,4 @@
 -# @(#)southamerica	7.46
-+# @(#)southamerica	7.54
++# @(#)southamerica	7.59
  
  # 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
@@ -1388,7 +1932,7 @@
  			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
  			-4:00	-	ART	1930 Dec
  			-4:00	Arg	AR%sT	1969 Oct  5
-@@ -167,24 +218,19 @@
+@@ -167,24 +218,30 @@
  			-3:00	-	ART
  #
  # Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
@@ -1413,15 +1957,6 @@
  #
 -Zone America/Cordoba	-4:16:48 -	LMT	1894 Oct 31
 +Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
- 			-4:16:48 -	CMT	1920 May
- 			-4:00	-	ART	1930 Dec
- 			-4:00	Arg	AR%sT	1969 Oct  5
-@@ -194,8 +240,47 @@
- 			-4:00	Arg	AR%sT	2000 Mar  3
- 			-3:00	-	ART
- #
-+# Tucuman (TM)
-+Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
 +			-4:16:48 -	CMT	1920 May
 +			-4:00	-	ART	1930 Dec
 +			-4:00	Arg	AR%sT	1969 Oct  5
@@ -1429,6 +1964,17 @@
 +			-4:00	-	WART	1991 Oct 20
 +			-3:00	Arg	AR%sT	1999 Oct  3
 +			-4:00	Arg	AR%sT	2000 Mar  3
++			-3:00	-	ART
++#
++# Tucuman (TM)
++Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
+ 			-4:16:48 -	CMT	1920 May
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+@@ -192,10 +249,38 @@
+ 			-4:00	-	WART	1991 Oct 20
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+ 			-4:00	Arg	AR%sT	2000 Mar  3
 +			-3:00	-	ART	2004 Jun  1
 +			-4:00	-	WART	2004 Jun 13
 +			-3:00	-	ART
@@ -1457,8 +2003,8 @@
 +			-4:00	Arg	AR%sT	2000 Mar  3
 +			-3:00	-	ART	2004 May 31
 +			-4:00	-	WART	2004 Jul 25
-+			-3:00	-	ART
-+#
+ 			-3:00	-	ART
+ #
  # Jujuy (JY)
 -Zone America/Jujuy	-4:21:12 -	LMT	1894 Oct 31
 +Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
@@ -1646,7 +2192,7 @@
 +# Mato Grosso (MT)
  Zone America/Cuiaba	-3:44:20 -	LMT	1914
 +			-4:00	Brazil	AM%sT	2003 Sep 24
-+			-4:00	-	AMT	2004 Oct  4
++			-4:00	-	AMT	2004 Oct  1
  			-4:00	Brazil	AM%sT
  #
  # west Para (PA), Rondonia (RO)
@@ -1659,14 +2205,34 @@
  Zone America/Manaus	-4:00:04 -	LMT	1914
  			-4:00	Brazil	AM%sT	1988 Sep 12
  			-4:00	-	AMT	1993 Sep 28
-@@ -792,13 +954,22 @@
+@@ -780,9 +942,16 @@
+ # A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the
+ # dst method to be from the first Sunday in September to the first Sunday in
+ # April.
+-Rule	Para	2002	max	-	Apr	Sun>=1	0:00	0	-
+-Rule	Para	2002	max	-	Sep	Sun>=1	0:00	1:00	S
+-
++Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
++Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
++#
++# From Jesper Norgaard Welen (2005-01-02):
++# There are several sources that claim that Paraguay made
++# a timezone rule change in autumn 2004.
++# From Steffen Thorsen (2005-01-05):
++# Decree 1,867 (2004-03-05) <http://www.labor.com.py/noticias.asp?id=27>
++Rule	Para	2004	max	-	Oct	Sun>=15	0:00	1:00	S
++Rule	Para	2005	max	-	Mar	Sun>=8	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Asuncion	-3:50:40 -	LMT	1890
+@@ -792,13 +961,22 @@
  			-4:00	Para	PY%sT
  
  # Peru
 +#
 +# <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 
++# 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):
@@ -1684,36 +2250,137 @@
  Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	S
  Rule	Peru	1990	only	-	Apr	 1	0:00	0	-
  # IATA is ambiguous for 1993/1995; go with Shanks.
-@@ -882,6 +1053,11 @@
+@@ -882,6 +1060,15 @@
  Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	S
  Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
  Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
 +# From Eduardo Cota (2004-09-20):
 +# The uruguayan government has decreed a change in the local time....
 +# http://www.presidencia.gub.uy/decretos/2004091502.htm
-+Rule	Uruguay	2004	only	-	Sep	Sun>=15	 0:00	1:00	S
-+Rule	Uruguay	2005	only	-	Mar	Sun>=8	 0:00	0	-
++Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
++# From Steffen Thorsen (2005-03-11):
++# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
++# save energy ... it was postponed two weeks....
++# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
++Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
  # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
  Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
  			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
-diff -Nuar timezone.org/zdump.c timezone/zdump.c
---- timezone.org/zdump.c	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/zdump.c	2004-10-13 23:30:38.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/tzfile.h glibc-2.3.4/timezone/tzfile.h
+--- glibc-2.3.2/timezone/tzfile.h	1998-02-16 04:30:15.000000000 +0900
++++ glibc-2.3.4/timezone/tzfile.h	2005-04-10 08:52:13.000000000 +0900
+@@ -21,7 +21,7 @@
+ 
+ #ifndef lint
+ #ifndef NOID
+-static char	tzfilehid[] = "@(#)tzfile.h	7.14";
++static char	tzfilehid[] = "@(#)tzfile.h	7.17";
+ #endif /* !defined NOID */
+ #endif /* !defined lint */
+ 
+@@ -48,7 +48,7 @@
+ #define	TZ_MAGIC	"TZif"
+ 
+ struct tzhead {
+- 	char	tzh_magic[4];		/* TZ_MAGIC */
++	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 */
+@@ -156,33 +156,20 @@
+ #define EPOCH_YEAR	1970
+ #define EPOCH_WDAY	TM_THURSDAY
+ 
+-/*
+-** Accurate only for the past couple of centuries;
+-** that will probably do.
+-*/
+-
+ #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
+ 
+-#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
++** Since everything in isleap is modulo 400 (or a factor of 400), we know that
++**	isleap(y) == isleap(y % 400)
++** and so
++**	isleap(a + b) == isleap((a + b) % 400)
++** or
++**	isleap(a + b) == isleap(a % 400 + b % 400)
++** This is true even if % means modulo rather than Fortran remainder
++** (which is allowed by C89 but not C99).
++** We use this to avoid addition overflow problems.
++*/
+ 
+-#endif /* !defined USG */
++#define isleap_sum(a, b)	isleap((a) % 400 + (b) % 400)
+ 
+ #endif /* !defined TZFILE_H */
+diff -Nuar glibc-2.3.2/timezone/zdump.c glibc-2.3.4/timezone/zdump.c
+--- glibc-2.3.2/timezone/zdump.c	2001-03-16 10:07:38.000000000 +0900
++++ glibc-2.3.4/timezone/zdump.c	2005-04-10 08:52:13.000000000 +0900
 @@ -1,8 +1,4 @@
 -#ifndef lint
 -#ifndef NOID
 -static char	elsieid[] = "@(#)zdump.c	7.29";
 -#endif /* !defined NOID */
 -#endif /* !defined lint */
-+static char	elsieid[] = "@(#)zdump.c	7.40";
++static char	elsieid[] = "@(#)zdump.c	7.64";
  
  /*
  ** This code has been made independent of the rest of the time
-@@ -68,16 +64,15 @@
- #define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
+@@ -15,6 +11,15 @@
+ #include "sys/types.h"	/* for time_t */
+ #include "time.h"	/* for struct tm */
+ #include "stdlib.h"	/* for exit, malloc, atoi */
++#include "float.h"	/* for FLT_MAX and DBL_MAX */
++
++#ifndef ZDUMP_LO_YEAR
++#define ZDUMP_LO_YEAR	(-500)
++#endif /* !defined ZDUMP_LO_YEAR */
++
++#ifndef ZDUMP_HI_YEAR
++#define ZDUMP_HI_YEAR	2500
++#endif /* !defined ZDUMP_HI_YEAR */
+ 
+ #ifndef MAX_STRING_LENGTH
+ #define MAX_STRING_LENGTH	1024
+@@ -65,19 +70,29 @@
+ #endif /* !defined DAYSPERNYEAR */
+ 
+ #ifndef isleap
+-#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
++#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
  #endif /* !defined isleap */
  
 -#if HAVE_GETTEXT - 0
++#ifndef isleap_sum
++/*
++** See tzfile.h for details on isleap_sum.
++*/
++#define isleap_sum(a, b)	isleap((a) % 400 + (b) % 400)
++#endif /* !defined isleap_sum */
++
++#define SECSPERDAY	((long) SECSPERHOUR * HOURSPERDAY)
++#define SECSPERNYEAR	(SECSPERDAY * DAYSPERNYEAR)
++#define SECSPERLYEAR	(SECSPERNYEAR + SECSPERDAY)
++
 +#if HAVE_GETTEXT
  #include "locale.h"	/* for setlocale */
  #include "libintl.h"
@@ -1729,7 +2396,7 @@
  #ifdef __GNUC__
  #define GNUC_or_lint
  #endif /* defined __GNUC__ */
-@@ -87,8 +82,7 @@
+@@ -87,8 +102,7 @@
  #ifndef INITIALIZE
  #ifdef GNUC_or_lint
  #define INITIALIZE(x)	((x) = 0)
@@ -1739,7 +2406,7 @@
  #define INITIALIZE(x)
  #endif /* !defined GNUC_or_lint */
  #endif /* !defined INITIALIZE */
-@@ -100,11 +94,11 @@
+@@ -100,11 +114,11 @@
  */
  
  #ifndef _
@@ -1754,7 +2421,7 @@
  #endif /* !defined _ */
  
  #ifndef TZ_DOMAIN
-@@ -114,8 +108,7 @@
+@@ -114,25 +128,68 @@
  #ifndef P
  #ifdef __STDC__
  #define P(x)	x
@@ -1764,20 +2431,98 @@
  #define P(x)	()
  #endif /* !defined __STDC__ */
  #endif /* !defined P */
-@@ -133,6 +126,7 @@
- static size_t	longest;
- static char *	progname;
+ 
+ extern char **	environ;
+ extern int	getopt P((int argc, char * const argv[],
+-			  const char * options));
++			const char * options));
+ extern char *	optarg;
+ extern int	optind;
+ extern char *	tzname[2];
+ 
++static time_t	absolute_min_time;
++static time_t	absolute_max_time;
++static size_t	longest;
++static char *	progname;
++
+ static char *	abbr P((struct tm * tmp));
+ static long	delta P((struct tm * newp, struct tm * oldp));
++static void	dumptime P((const struct tm * tmp));
+ static time_t	hunt P((char * name, time_t lot, time_t	hit));
+-static size_t	longest;
+-static char *	progname;
++static void	setabsolutes P((void));
  static void	show P((char * zone, time_t t, int v));
-+static void	dumptime P((const struct tm * tmp));
++static const char *	tformat P((void));
++static time_t	yeartot P((long y));
++
++#ifndef TYPECHECK
++#define my_localtime	localtime
++#else /* !defined TYPECHECK */
++static struct tm *
++my_localtime(tp)
++time_t *	tp;
++{
++	register struct tm *	tmp;
++
++	tmp = localtime(tp);
++	if (tp != NULL && tmp != NULL) {
++		struct tm	tm;
++		register time_t	t;
++
++		tm = *tmp;
++		t = mktime(&tm);
++		if (t - *tp >= 1 || *tp - t >= 1) {
++			(void) fflush(stdout);
++			(void) fprintf(stderr, "\n%s: ", progname);
++			(void) fprintf(stderr, tformat(), *tp);
++			(void) fprintf(stderr, " ->");
++			(void) fprintf(stderr, " year=%d", tmp->tm_year);
++			(void) fprintf(stderr, " mon=%d", tmp->tm_mon);
++			(void) fprintf(stderr, " mday=%d", tmp->tm_mday);
++			(void) fprintf(stderr, " hour=%d", tmp->tm_hour);
++			(void) fprintf(stderr, " min=%d", tmp->tm_min);
++			(void) fprintf(stderr, " sec=%d", tmp->tm_sec);
++			(void) fprintf(stderr, " isdst=%d", tmp->tm_isdst);
++			(void) fprintf(stderr, " -> ");
++			(void) fprintf(stderr, tformat(), t);
++			(void) fprintf(stderr, "\n");
++		}
++	}
++	return tmp;
++}
++#endif /* !defined TYPECHECK */
  
  int
  main(argc, argv)
-@@ -154,15 +148,19 @@
+@@ -142,61 +199,80 @@
+ 	register int		i;
+ 	register int		c;
+ 	register int		vflag;
+-	register char *		cutoff;
+-	register int		cutyear;
+-	register long		cuttime;
+-	char **			fakeenv;
++	register char *		cutarg;
++	register long		cutloyear = ZDUMP_LO_YEAR;
++	register long		cuthiyear = ZDUMP_HI_YEAR;
++	register time_t		cutlotime;
++	register time_t		cuthitime;
++	register char **	fakeenv;
+ 	time_t			now;
+ 	time_t			t;
+ 	time_t			newt;
+-	time_t			hibit;
+ 	struct tm		tm;
  	struct tm		newtm;
++	register struct tm *	tmp;
++	register struct tm *	newtmp;
  
- 	INITIALIZE(cuttime);
+-	INITIALIZE(cuttime);
 -#if HAVE_GETTEXT - 0
 -	(void) setlocale(LC_CTYPE, "");
++	INITIALIZE(cutlotime);
++	INITIALIZE(cuthitime);
 +#if HAVE_GETTEXT
  	(void) setlocale(LC_MESSAGES, "");
  #ifdef TZ_DOMAINDIR
@@ -1794,47 +2539,366 @@
 +			(void) exit(EXIT_SUCCESS);
 +		}
  	vflag = 0;
- 	cutoff = NULL;
+-	cutoff = NULL;
++	cutarg = NULL;
  	while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v')
-@@ -172,7 +170,7 @@
+ 		if (c == 'v')
+ 			vflag = 1;
+-		else	cutoff = optarg;
++		else	cutarg = optarg;
  	if ((c != EOF && c != -1) ||
  		(optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
  			(void) fprintf(stderr,
 -_("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"),
-+_("%s: usage is %s [ --version ] [ -v ] [ -c cutoff ] zonename ...\n"),
- 				argv[0], argv[0]);
+-				argv[0], argv[0]);
++_("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
++				progname, progname);
  			(void) exit(EXIT_FAILURE);
  	}
-@@ -323,7 +321,7 @@
+-	if (cutoff != NULL) {
+-		int	y;
+-
+-		cutyear = atoi(cutoff);
+-		cuttime = 0;
+-		for (y = EPOCH_YEAR; y < cutyear; ++y)
+-			cuttime += DAYSPERNYEAR + isleap(y);
+-		cuttime *= SECSPERHOUR * HOURSPERDAY;
++	if (vflag) {
++		if (cutarg != NULL) {
++			long	lo;
++			long	hi;
++			char	dummy;
++
++			if (sscanf(cutarg, "%ld%c", &hi, &dummy) == 1) {
++				cuthiyear = hi;
++			} else if (sscanf(cutarg, "%ld,%ld%c",
++				&lo, &hi, &dummy) == 2) {
++					cutloyear = lo;
++					cuthiyear = hi;
++			} else {
++(void) fprintf(stderr, _("%s: wild -c argument %s\n"),
++					progname, cutarg);
++				(void) exit(EXIT_FAILURE);
++			}
++		}
++		setabsolutes();
++		cutlotime = yeartot(cutloyear);
++		cuthitime = yeartot(cuthiyear);
+ 	}
+ 	(void) time(&now);
+ 	longest = 0;
+ 	for (i = optind; i < argc; ++i)
+ 		if (strlen(argv[i]) > longest)
+ 			longest = strlen(argv[i]);
+-	for (hibit = 1; (hibit << 1) != 0; hibit <<= 1)
+-		continue;
+ 	{
+ 		register int	from;
+ 		register int	to;
+ 
+-		for (i = 0;  environ[i] != NULL;  ++i)
++		for (i = 0; environ[i] != NULL; ++i)
+ 			continue;
+ 		fakeenv = (char **) malloc((size_t) ((i + 2) *
+ 			sizeof *fakeenv));
+@@ -221,58 +297,129 @@
+ 			show(argv[i], now, FALSE);
+ 			continue;
+ 		}
+-		/*
+-		** Get lowest value of t.
+-		*/
+-		t = hibit;
+-		if (t > 0)		/* time_t is unsigned */
+-			t = 0;
++		t = absolute_min_time;
+ 		show(argv[i], t, TRUE);
+ 		t += SECSPERHOUR * HOURSPERDAY;
+ 		show(argv[i], t, TRUE);
+-		tm = *localtime(&t);
+-		(void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);
++		if (t < cutlotime)
++			t = cutlotime;
++		tmp = my_localtime(&t);
++		if (tmp != NULL) {
++			tm = *tmp;
++			(void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);
++		}
+ 		for ( ; ; ) {
+-			if (cutoff != NULL && t >= cuttime)
++			if (t >= cuthitime)
+ 				break;
+ 			newt = t + SECSPERHOUR * 12;
+-			if (cutoff != NULL && newt >= cuttime)
++			if (newt >= cuthitime)
+ 				break;
+ 			if (newt <= t)
+ 				break;
+-			newtm = *localtime(&newt);
+-			if (delta(&newtm, &tm) != (newt - t) ||
++			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) {
++				strcmp(abbr(&newtm), buf) != 0)) {
+ 					newt = hunt(argv[i], t, newt);
+-					newtm = *localtime(&newt);
+-					(void) strncpy(buf, abbr(&newtm),
+-						(sizeof buf) - 1);
++					newtmp = localtime(&newt);
++					if (newtmp != NULL) {
++						newtm = *newtmp;
++						(void) strncpy(buf,
++							abbr(&newtm),
++							(sizeof buf) - 1);
++					}
+ 			}
+ 			t = newt;
+ 			tm = newtm;
++			tmp = newtmp;
+ 		}
+-		/*
+-		** Get highest value of t.
+-		*/
+-		t = ~((time_t) 0);
+-		if (t < 0)		/* time_t is signed */
+-			t &= ~hibit;
++		t = absolute_max_time;
+ 		t -= SECSPERHOUR * HOURSPERDAY;
+ 		show(argv[i], t, TRUE);
+ 		t += SECSPERHOUR * HOURSPERDAY;
+ 		show(argv[i], t, TRUE);
+ 	}
+ 	if (fflush(stdout) || ferror(stdout)) {
+-		(void) fprintf(stderr, "%s: ", argv[0]);
++		(void) fprintf(stderr, "%s: ", progname);
+ 		(void) perror(_("Error writing standard output"));
+ 		(void) exit(EXIT_FAILURE);
+ 	}
+ 	exit(EXIT_SUCCESS);
++	/* If exit fails to exit... */
++	return EXIT_FAILURE;
++}
+ 
+-	/* gcc -Wall pacifier */
+-	for ( ; ; )
+-		continue;
++static void
++setabsolutes()
++{
++	if (0.5 == (time_t) 0.5) {
++		/*
++		** time_t is floating.
++		*/
++		if (sizeof (time_t) == sizeof (float)) {
++			absolute_min_time = (time_t) -FLT_MAX;
++			absolute_max_time = (time_t) FLT_MAX;
++		} else if (sizeof (time_t) == sizeof (double)) {
++			absolute_min_time = (time_t) -DBL_MAX;
++			absolute_max_time = (time_t) DBL_MAX;
++		} else {
++			(void) fprintf(stderr,
++_("%s: use of -v on system with floating time_t other than float or double\n"),
++				progname);
++			(void) exit(EXIT_FAILURE);
++		}
++	} else if (0 > (time_t) -1) {
++		/*
++		** time_t is signed.
++		*/
++		register time_t	hibit;
++
++		for (hibit = 1; (hibit * 2) != 0; hibit *= 2)
++			continue;
++		absolute_min_time = hibit;
++		absolute_max_time = -(hibit + 1);
++	} else {
++		/*
++		** time_t is unsigned.
++		*/
++		absolute_min_time = 0;
++		absolute_max_time = absolute_min_time - 1;
++	}
++}
++
++static time_t
++yeartot(y)
++const long	y;
++{
++	register long	myy;
++	register long	seconds;
++	register time_t	t;
++
++	myy = EPOCH_YEAR;
++	t = 0;
++	while (myy != y) {
++		if (myy < y) {
++			seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
++			++myy;
++			if (t > absolute_max_time - seconds) {
++				t = absolute_max_time;
++				break;
++			}
++			t += seconds;
++		} else {
++			--myy;
++			seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
++			if (t < absolute_min_time + seconds) {
++				t = absolute_min_time;
++				break;
++			}
++			t -= seconds;
++		}
++	}
++	return t;
+ }
+ 
+ static time_t
+@@ -281,25 +428,39 @@
+ time_t	lot;
+ time_t	hit;
+ {
+-	time_t		t;
+-	struct tm	lotm;
+-	struct tm	tm;
+-	static char	loab[MAX_STRING_LENGTH];
+-
+-	lotm = *localtime(&lot);
+-	(void) strncpy(loab, abbr(&lotm), (sizeof loab) - 1);
+-	while ((hit - lot) >= 2) {
+-		t = lot / 2 + hit / 2;
++	time_t			t;
++	long			diff;
++	struct tm		lotm;
++	register struct tm *	lotmp;
++	struct tm		tm;
++	register struct tm *	tmp;
++	char			loab[MAX_STRING_LENGTH];
++
++	lotmp = my_localtime(&lot);
++	if (lotmp != NULL) {
++		lotm = *lotmp;
++		(void) strncpy(loab, abbr(&lotm), (sizeof loab) - 1);
++	}
++	for ( ; ; ) {
++		diff = (long) (hit - lot);
++		if (diff < 2)
++			break;
++		t = lot;
++		t += diff / 2;
+ 		if (t <= lot)
+ 			++t;
+ 		else if (t >= hit)
+ 			--t;
+-		tm = *localtime(&t);
+-		if (delta(&tm, &lotm) == (t - lot) &&
++		tmp = my_localtime(&t);
++		if (tmp != NULL)
++			tm = *tmp;
++		if ((lotmp == NULL || tmp == NULL) ? (lotmp == tmp) :
++			(delta(&tm, &lotm) == (t - lot) &&
+ 			tm.tm_isdst == lotm.tm_isdst &&
+-			strcmp(abbr(&tm), loab) == 0) {
++			strcmp(abbr(&tm), loab) == 0)) {
+ 				lot = t;
+ 				lotm = tm;
++				lotmp = tmp;
+ 		} else	hit = t;
+ 	}
+ 	show(name, lot, TRUE);
+@@ -316,14 +477,14 @@
+ struct tm *	newp;
+ struct tm *	oldp;
+ {
+-	long	result;
+-	int	tmy;
++	register long	result;
++	register int	tmy;
+ 
+ 	if (newp->tm_year < oldp->tm_year)
  		return -delta(oldp, newp);
  	result = 0;
  	for (tmy = oldp->tm_year; tmy < newp->tm_year; ++tmy)
 -		result += DAYSPERNYEAR + isleap(tmy + TM_YEAR_BASE);
-+		result += DAYSPERNYEAR + isleap(tmy + (long) TM_YEAR_BASE);
++		result += DAYSPERNYEAR + isleap_sum(tmy, TM_YEAR_BASE);
  	result += newp->tm_yday - oldp->tm_yday;
  	result *= HOURSPERDAY;
  	result += newp->tm_hour - oldp->tm_hour;
-@@ -343,10 +341,12 @@
- 	struct tm *	tmp;
+@@ -340,20 +501,30 @@
+ time_t	t;
+ int	v;
+ {
+-	struct tm *	tmp;
++	register struct tm *	tmp;
  
  	(void) printf("%-*s  ", (int) longest, zone);
 -	if (v)
 -		(void) printf("%.24s UTC = ", asctime(gmtime(&t)));
-+	if (v) {
-+		dumptime(gmtime(&t));
-+		(void) printf(" UTC = ");
+-	tmp = localtime(&t);
+-	(void) printf("%.24s", asctime(tmp));
+-	if (*abbr(tmp) != '\0')
+-		(void) printf(" %s", abbr(tmp));
+ 	if (v) {
+-		(void) printf(" isdst=%d", tmp->tm_isdst);
++		tmp = gmtime(&t);
++		if (tmp == NULL) {
++			(void) printf(tformat(), t);
++		} else {
++			dumptime(tmp);
++			(void) printf(" UTC");
++		}
++		(void) printf(" = ");
 +	}
- 	tmp = localtime(&t);
--	(void) printf("%.24s", asctime(tmp));
++	tmp = my_localtime(&t);
 +	dumptime(tmp);
- 	if (*abbr(tmp) != '\0')
- 		(void) printf(" %s", abbr(tmp));
- 	if (v) {
-@@ -370,3 +370,37 @@
++	if (tmp != NULL) {
++		if (*abbr(tmp) != '\0')
++			(void) printf(" %s", abbr(tmp));
++		if (v) {
++			(void) printf(" isdst=%d", tmp->tm_isdst);
+ #ifdef TM_GMTOFF
+-		(void) printf(" gmtoff=%ld", tmp->TM_GMTOFF);
++			(void) printf(" gmtoff=%ld", tmp->TM_GMTOFF);
+ #endif /* defined TM_GMTOFF */
++		}
+ 	}
+ 	(void) printf("\n");
+ }
+@@ -370,3 +541,84 @@
  	result = tzname[tmp->tm_isdst];
  	return (result == NULL) ? &nada : result;
  }
 +
++/*
++** The code below can fail on certain theoretical systems;
++** it works on all known real-world systems as of 2004-12-30.
++*/
++
++static const char *
++tformat()
++{
++	if (0.5 == (time_t) 0.5) {	/* floating */
++		if (sizeof (time_t) > sizeof (double))
++			return "%Lg";
++		return "%g";
++	}
++	if (0 > (time_t) -1) {		/* signed */
++		if (sizeof (time_t) > sizeof (long))
++			return "%lld";
++		if (sizeof (time_t) > sizeof (int))
++			return "%ld";
++		return "%d";
++	}
++	if (sizeof (time_t) > sizeof (unsigned long))
++		return "%llu";
++	if (sizeof (time_t) > sizeof (unsigned int))
++		return "%lu";
++	return "%u";
++}
++
 +static void
 +dumptime(timeptr)
 +register const struct tm *	timeptr;
@@ -1848,7 +2912,13 @@
 +	};
 +	register const char *	wn;
 +	register const char *	mn;
++	register int		lead;
++	register int		trail;
 +
++	if (timeptr == NULL) {
++		(void) printf("NULL");
++		return;
++	}
 +	/*
 +	** The packaged versions of localtime and gmtime never put out-of-range
 +	** values in tm_wday or tm_mon, but since this code might be compiled
@@ -1862,37 +2932,183 @@
 +		(int) (sizeof mon_name / sizeof mon_name[0]))
 +			mn = "???";
 +	else		mn = mon_name[timeptr->tm_mon];
-+	(void) printf("%.3s %.3s%3d %.2d:%.2d:%.2d %ld",
++	(void) printf("%.3s %.3s%3d %.2d:%.2d:%.2d ",
 +		wn, mn,
 +		timeptr->tm_mday, timeptr->tm_hour,
-+		timeptr->tm_min, timeptr->tm_sec,
-+		timeptr->tm_year + (long) TM_YEAR_BASE);
++		timeptr->tm_min, timeptr->tm_sec);
++#define DIVISOR	10
++	trail = timeptr->tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR;
++	lead = timeptr->tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR +
++		trail / DIVISOR;
++	trail %= DIVISOR;
++	if (trail < 0 && lead > 0) {
++		trail += DIVISOR;
++		--lead;
++	} else if (lead < 0 && trail > 0) {
++		trail -= DIVISOR;
++		++lead;
++	}
++	if (lead == 0)
++		(void) printf("%d", trail);
++	else	(void) printf("%d%d", lead, ((trail < 0) ? -trail : trail));
 +}
-diff -Nuar timezone.org/zic.c timezone/zic.c
---- timezone.org/zic.c	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/zic.c	2004-07-30 08:40:18.000000000 +0900
-@@ -1,8 +1,4 @@
+diff -Nuar glibc-2.3.2/timezone/zic.c glibc-2.3.4/timezone/zic.c
+--- glibc-2.3.2/timezone/zic.c	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/zic.c	2005-04-10 08:52:13.000000000 +0900
+@@ -1,8 +1,10 @@
 -#ifndef lint
 -#ifndef NOID
 -static char	elsieid[] = "@(#)zic.c	7.107";
 -#endif /* !defined NOID */
 -#endif /* !defined lint */
-+static char	elsieid[] = "@(#)zic.c	7.116";
++static char	elsieid[] = "@(#)zic.c	7.122";
++
++/*
++** Regardless of the type of time_t, we do our work using this type.
++*/
++
++typedef int	zic_t;
  
  #include "private.h"
  #include "locale.h"
-@@ -446,7 +442,7 @@
+@@ -19,7 +21,7 @@
+ 
+ /*
+ ** On some ancient hosts, predicates like `isspace(C)' are defined
+-** only if isascii(C) || C == EOF.  Modern hosts obey the C Standard,
++** 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.
+@@ -54,7 +56,7 @@
+ 	const char *	r_abbrvar;	/* variable part of abbreviation */
+ 
+ 	int		r_todo;		/* a rule to do (used in outzone) */
+-	time_t		r_temp;		/* used in outzone */
++	zic_t		r_temp;		/* used in outzone */
+ };
+ 
+ /*
+@@ -80,7 +82,7 @@
+ 	int		z_nrules;
+ 
+ 	struct rule	z_untilrule;
+-	time_t		z_untiltime;
++	zic_t		z_untiltime;
+ };
+ 
+ extern int	getopt P((int argc, char * const argv[],
+@@ -89,10 +91,10 @@
+ extern char *	optarg;
+ extern int	optind;
+ 
+-static void	addtt P((time_t starttime, int type));
++static void	addtt P((zic_t starttime, int type));
+ static int	addtype P((long gmtoff, const char * abbr, int isdst,
+ 				int ttisstd, int ttisgmt));
+-static void	leapadd P((time_t t, int positive, int rolling, int count));
++static void	leapadd P((zic_t t, int positive, int rolling, int count));
+ static void	adjleap P((void));
+ static void	associate P((void));
+ static int	ciequal P((const char * ap, const char * bp));
+@@ -125,30 +127,30 @@
+ static void	outzone P((const struct zone * zp, int ntzones));
+ static void	puttzcode P((long code, FILE * fp));
+ static int	rcomp P((const void * leftp, const void * rightp));
+-static time_t	rpytime P((const struct rule * rp, int wantedy));
++static zic_t	rpytime P((const struct rule * rp, int wantedy));
+ static void	rulesub P((struct rule * rp,
+ 			const char * loyearp, const char * hiyearp,
+ 			const char * typep, const char * monthp,
+ 			const char * dayp, const char * timep));
+ static void	setboundaries P((void));
+-static time_t	tadd P((time_t t1, long t2));
++static zic_t	tadd P((zic_t t1, long t2));
+ static void	usage P((void));
+ static void	writezone P((const char * name));
+ static int	yearistype P((int year, const char * type));
+ 
+-#if !(HAVE_STRERROR - 0)
++#if !HAVE_STRERROR
+ static char *	strerror P((int));
+-#endif /* !(HAVE_STRERROR - 0) */
++#endif /* !HAVE_STRERROR */
+ 
+ static int		charcnt;
+ static int		errors;
+ static const char *	filename;
+ static int		leapcnt;
+ static int		linenum;
+-static time_t		max_time;
++static zic_t		max_time;
+ static int		max_year;
+ static int		max_year_representable;
+-static time_t		min_time;
++static zic_t		min_time;
+ static int		min_year;
+ static int		min_year_representable;
+ static int		noise;
+@@ -338,7 +340,7 @@
+ };
+ 
+ static struct attype {
+-	time_t		at;
++	zic_t		at;
+ 	unsigned char	type;
+ }			attypes[TZ_MAX_TIMES];
+ static long		gmtoffs[TZ_MAX_TYPES];
+@@ -347,7 +349,7 @@
+ static char		ttisstds[TZ_MAX_TYPES];
+ static char		ttisgmts[TZ_MAX_TYPES];
+ static char		chars[TZ_MAX_CHARS];
+-static time_t		trans[TZ_MAX_LEAPS];
++static zic_t		trans[TZ_MAX_LEAPS];
+ static long		corr[TZ_MAX_LEAPS];
+ static char		roll[TZ_MAX_LEAPS];
+ 
+@@ -378,7 +380,7 @@
+ ** Error handling.
+ */
+ 
+-#if !(HAVE_STRERROR - 0)
++#if !HAVE_STRERROR
+ static char *
+ strerror(errnum)
+ int	errnum;
+@@ -389,7 +391,7 @@
+ 	return (errnum > 0 && errnum <= sys_nerr) ?
+ 		sys_errlist[errnum] : _("Unknown system error");
+ }
+-#endif /* !(HAVE_STRERROR - 0) */
++#endif /* !HAVE_STRERROR */
+ 
  static void
+ eats(name, num, rname, rnum)
+@@ -446,7 +448,9 @@
+ static void
  usage P((void))
  {
 -	(void) fprintf(stderr, _("%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
-+	(void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
++	(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);
  }
-@@ -479,6 +475,11 @@
+@@ -470,15 +474,20 @@
+ #ifdef unix
+ 	(void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
+ #endif /* defined unix */
+-#if HAVE_GETTEXT - 0
++#if HAVE_GETTEXT
+ 	(void) setlocale(LC_CTYPE, "");
+ 	(void) setlocale(LC_MESSAGES, "");
+ #ifdef TZ_DOMAINDIR
+ 	(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
+ #endif /* defined TEXTDOMAINDIR */
  	(void) textdomain(TZ_DOMAIN);
- #endif /* HAVE_GETTEXT - 0 */
+-#endif /* HAVE_GETTEXT - 0 */
++#endif /* HAVE_GETTEXT */
  	progname = argv[0];
 +	for (i = 1; i < argc; ++i)
 +		if (strcmp(argv[i], "--version") == 0) {
@@ -1902,7 +3118,124 @@
  	while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
  		switch (c) {
  			default:
-@@ -941,6 +942,8 @@
+@@ -573,6 +582,11 @@
+ 	for (i = 0; i < nlinks; ++i) {
+ 		eat(links[i].l_filename, links[i].l_linenum);
+ 		dolink(links[i].l_from, links[i].l_to);
++		if (noise)
++			for (j = 0; j < nlinks; ++j)
++				if (strcmp(links[i].l_to,
++					links[j].l_from) == 0)
++						warning(_("link to link"));
+ 	}
+ 	if (lcltime != NULL) {
+ 		eat("command line", 1);
+@@ -620,32 +634,27 @@
+ 			(void) exit(EXIT_FAILURE);
+ 
+ 		result = link(fromname, toname);
+-#if (HAVE_SYMLINK - 0)
++#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, fromname);
+-
+-			result = unlink(toname);
+-			if (result != 0 && errno != ENOENT) {
+-				const char *e = strerror(errno);
+-
+-				(void) fprintf(stderr,
+-					       _("%s: Can't unlink  %s: %s\n"),
+-					       progname, toname, e);
+-				(void) exit(EXIT_FAILURE);
+-			}
+-
+-			result = symlink(symlinkcontents, toname);
+-			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);
++					ifree(symlinkcontents);
+ 		}
+-#endif
++#endif /* HAVE_SYMLINK */
+ 		if (result != 0) {
+ 			const char *e = strerror(errno);
+ 
+@@ -675,25 +684,36 @@
+ */
+ 
+ #define MAX_BITS_IN_FILE	32
+-#define TIME_T_BITS_IN_FILE	((TYPE_BIT(time_t) < MAX_BITS_IN_FILE) ? TYPE_BIT(time_t) : MAX_BITS_IN_FILE)
++#define TIME_T_BITS_IN_FILE	((TYPE_BIT(zic_t) < MAX_BITS_IN_FILE) ? \
++					TYPE_BIT(zic_t) : MAX_BITS_IN_FILE)
+ 
+ static void
+ setboundaries P((void))
+ {
+-	if (TYPE_SIGNED(time_t)) {
+-		min_time = ~ (time_t) 0;
+-		min_time <<= TIME_T_BITS_IN_FILE - 1;
+-		max_time = ~ (time_t) 0 - min_time;
++	register int	i;
++
++	if (TYPE_SIGNED(zic_t)) {
++		min_time = -1;
++		for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i)
++			min_time *= 2;
++		max_time = -(min_time + 1);
+ 		if (sflag)
+ 			min_time = 0;
+ 	} else {
+ 		min_time = 0;
+ 		max_time = 2 - sflag;
+-		max_time <<= TIME_T_BITS_IN_FILE - 1;
++		for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i)
++			max_time *= 2;
+ 		--max_time;
+ 	}
+-	min_year = TM_YEAR_BASE + gmtime(&min_time)->tm_year;
+-	max_year = TM_YEAR_BASE + gmtime(&max_time)->tm_year;
++	{
++		time_t	t;
++
++		t = (time_t) min_time;
++		min_year = TM_YEAR_BASE + gmtime(&t)->tm_year;
++		t = (time_t) max_time;
++		max_year = TM_YEAR_BASE + gmtime(&t)->tm_year;
++	}
+ 	min_year_representable = min_year;
+ 	max_year_representable = max_year;
+ }
+@@ -792,7 +812,7 @@
+ 			*/
+ 			eat(zp->z_filename, zp->z_linenum);
+ 			zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"),
+-					      TRUE);
++				TRUE);
+ 			/*
+ 			** Note, though, that if there's no rule,
+ 			** a '%s' in the format is a bad thing.
+@@ -941,6 +961,8 @@
  			error(errstring);
  			return 0;
  	}
@@ -1911,7 +3244,49 @@
  	return eitol(sign) *
  		(eitol(hh * MINSPERHOUR + mm) *
  		eitol(SECSPERMIN) + eitol(ss));
-@@ -1165,14 +1168,15 @@
+@@ -1093,7 +1115,9 @@
+ 			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"));
++				error(_(
++"Zone continuation line end time is not after end time of previous line"
++					));
+ 				return FALSE;
+ 		}
+ 	}
+@@ -1117,7 +1141,7 @@
+ 	register int			i, j;
+ 	int				year, month, day;
+ 	long				dayoff, tod;
+-	time_t				t;
++	zic_t				t;
+ 
+ 	if (nfields != LEAP_FIELDS) {
+ 		error(_("wrong number of fields on Leap line"));
+@@ -1126,11 +1150,11 @@
+ 	dayoff = 0;
+ 	cp = fields[LP_YEAR];
+ 	if (sscanf(cp, scheck(cp, "%d"), &year) != 1) {
+-			/*
+-			 * Leapin' Lizards!
+-			 */
+-			error(_("invalid leaping year"));
+-			return;
++		/*
++		** Leapin' Lizards!
++		*/
++		error(_("invalid leaping year"));
++		return;
+ 	}
+ 	j = EPOCH_YEAR;
+ 	while (j != year) {
+@@ -1161,18 +1185,19 @@
+ 			return;
+ 	}
+ 	dayoff = oadd(dayoff, eitol(day - 1));
+-	if (dayoff < 0 && !TYPE_SIGNED(time_t)) {
++	if (dayoff < 0 && !TYPE_SIGNED(zic_t)) {
  		error(_("time before zero"));
  		return;
  	}
@@ -1923,17 +3298,28 @@
 -		error(_("time overflow"));
 +	if (dayoff < min_time / SECSPERDAY) {
 +		error(_("time too small"));
++		return;
++	}
++	if (dayoff > max_time / SECSPERDAY) {
++		error(_("time too large"));
  		return;
  	}
-+	if (dayoff > max_time / SECSPERDAY) {
-+		error(_("time too large"));
-+		return;
-+	}
-+	t = (time_t) dayoff * SECSPERDAY;
++	t = (zic_t) dayoff * SECSPERDAY;
  	tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE);
  	cp = fields[LP_CORR];
  	{
-@@ -1325,9 +1329,9 @@
+@@ -1196,7 +1221,9 @@
+ 			return;
+ 		}
+ 		if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
+-			error(_("illegal Rolling/Stationary field on Leap line"));
++			error(_(
++				"illegal Rolling/Stationary field on Leap line"
++				));
+ 			return;
+ 		}
+ 		leapadd(tadd(t, tod), positive, lp->l_value, count);
+@@ -1325,9 +1352,9 @@
  		return;
  	} else if (noise) {
  		if (rp->r_loyear < min_year_representable)
@@ -1945,27 +3331,182 @@
  	}
  	if (rp->r_loyear > rp->r_hiyear) {
  		error(_("starting year greater than ending year"));
-@@ -2146,8 +2150,8 @@
+@@ -1434,7 +1461,7 @@
+ 	register int		i, j;
+ 	static char *		fullname;
+ 	static struct tzhead	tzh;
+-	time_t			ats[TZ_MAX_TIMES];
++	zic_t			ats[TZ_MAX_TIMES];
+ 	unsigned char		types[TZ_MAX_TIMES];
+ 
+ 	/*
+@@ -1458,14 +1485,13 @@
+ 			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[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)
+@@ -1511,7 +1537,8 @@
+ 	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)
++#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);
+@@ -1599,7 +1626,7 @@
+ 	register struct rule *		rp;
+ 	register int			i, j;
+ 	register int			usestart, useuntil;
+-	register time_t			starttime, untiltime;
++	register zic_t			starttime, untiltime;
+ 	register long			gmtoff;
+ 	register long			stdoff;
+ 	register int			year;
+@@ -1668,7 +1695,7 @@
+ 			}
+ 			for ( ; ; ) {
+ 				register int	k;
+-				register time_t	jtime, ktime;
++				register zic_t	jtime, ktime;
+ 				register long	offset;
+ 				char		buf[BUFSIZ];
+ 
+@@ -1730,12 +1757,13 @@
+ 						continue;
+ 					}
+ 					if (*startbuf == '\0' &&
+-					    startoff == oadd(zp->z_gmtoff,
+-					    stdoff)) {
+-						doabbr(startbuf, zp->z_format,
+-							rp->r_abbrvar,
+-							rp->r_stdoff != 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);
+@@ -1780,7 +1808,7 @@
+ 
+ static void
+ addtt(starttime, type)
+-const time_t	starttime;
++const zic_t	starttime;
+ int		type;
+ {
+ 	if (starttime <= min_time ||
+@@ -1864,7 +1892,7 @@
+ 
+ static void
+ leapadd(t, positive, rolling, count)
+-const time_t	t;
++const zic_t	t;
+ const int	positive;
+ const int	rolling;
+ int		count;
+@@ -2026,7 +2054,9 @@
+ 			else while ((*dp = *cp++) != '"')
+ 				if (*dp != '\0')
+ 					++dp;
+-				else	error(_("Odd number of quotation marks"));
++				else	error(_(
++						"Odd number of quotation marks"
++						));
+ 		} while (*cp != '\0' && *cp != '#' &&
+ 			(!isascii(*cp) || !isspace((unsigned char) *cp)));
+ 		if (isascii(*cp) && isspace((unsigned char) *cp))
+@@ -2052,12 +2082,12 @@
+ 	return t;
+ }
+ 
+-static time_t
++static zic_t
+ tadd(t1, t2)
+-const time_t	t1;
++const zic_t	t1;
+ const long	t2;
+ {
+-	register time_t	t;
++	register zic_t	t;
+ 
+ 	if (t1 == max_time && t2 > 0)
+ 		return max_time;
+@@ -2076,14 +2106,14 @@
+ ** 1970, 00:00 LOCAL time - in that year that the rule refers to.
+ */
+ 
+-static time_t
++static zic_t
+ rpytime(rp, wantedy)
+ register const struct rule * const	rp;
+ register const int			wantedy;
+ {
+ 	register int	y, m, i;
+ 	register long	dayoff;			/* with a nod to Margaret O. */
+-	register time_t	t;
++	register zic_t	t;
+ 
+ 	if (wantedy == INT_MIN)
+ 		return min_time;
+@@ -2146,19 +2176,18 @@
  				--i;
  			}
  		if (i < 0 || i >= len_months[isleap(y)][m]) {
 -			error(_("no day in month matches rule"));
 -			(void) exit(EXIT_FAILURE);
 +			if (noise)
-+				warning(_("rule goes past start/end of month--will not work with pre-2004 versions of zic"));
++				warning(_("rule goes past start/end of month--\
++will not work with pre-2004 versions of zic"));
  		}
  	}
- 	if (dayoff < 0 && !TYPE_SIGNED(time_t))
-@@ -2241,5 +2245,5 @@
+-	if (dayoff < 0 && !TYPE_SIGNED(time_t))
++	if (dayoff < 0 && !TYPE_SIGNED(zic_t))
+ 		return min_time;
+ 	if (dayoff < min_time / SECSPERDAY)
+ 		return min_time;
+ 	if (dayoff > max_time / SECSPERDAY)
+ 		return max_time;
+-	t = (time_t) dayoff * SECSPERDAY;
+-	if (t > 0 && max_time - t < rp->r_tod)
+-		return max_time;
++	t = (zic_t) dayoff * SECSPERDAY;
+ 	return tadd(t, rp->r_tod);
  }
  
+@@ -2241,5 +2270,5 @@
+ }
+ 
  /*
 -** UNIX was a registered trademark of UNIX System Laboratories in 1993.
 +** UNIX was a registered trademark of The Open Group in 2003.
  */
-diff -Nuar timezone.org/zone.tab timezone/zone.tab
---- timezone.org/zone.tab	2004-10-14 01:27:07.000000000 +0900
-+++ timezone/zone.tab	2004-07-30 08:40:19.000000000 +0900
+diff -Nuar glibc-2.3.2/timezone/zone.tab glibc-2.3.4/timezone/zone.tab
+--- glibc-2.3.2/timezone/zone.tab	2005-04-10 09:00:31.000000000 +0900
++++ glibc-2.3.4/timezone/zone.tab	2004-10-19 09:45:18.000000000 +0900
 @@ -1,4 +1,4 @@
 -# @(#)zone.tab	1.28
 +# @(#)zone.tab	1.30



Reply to: