diff options
author | Roland McGrath <roland@gnu.org> | 1996-06-05 23:25:04 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1996-06-05 23:25:04 +0000 |
commit | dfe1754a556c167df741843ef0114f5325717a7c (patch) | |
tree | 90bcf729e52edc7666cd58886fa6dbafc585d6f7 | |
parent | 92702b91978866324b422e24b058c52ab63c82d7 (diff) | |
download | glibc-dfe1754a556c167df741843ef0114f5325717a7c.tar.gz glibc-dfe1754a556c167df741843ef0114f5325717a7c.tar.xz glibc-dfe1754a556c167df741843ef0114f5325717a7c.zip |
* time/tzfile.h, time/private.h, time/zdump.c, time/zic.c,
time/africa, time/asia, time/australasia, time/europe, time/northamerica, time/southamerica: Updated from ADO 96h. * Make-dist (all-headers): Filter $(sysdep_headers) out of $(headers). (try-sysdeps, +sysdep-names): Check sysdeps/libm-ieee754 too. * Makerules (distinfo-vars): Add sysdep_headers. * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Append to this instead of $(headers). * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * Make-dist [subdirs-dirs]: Don't prefix $(subdir-dirs) with $(subdir); we are already there. * sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist: Removed.
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | Make-dist | 12 | ||||
-rw-r--r-- | Makerules | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Makefile | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/Makefile | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist | 1 | ||||
-rw-r--r-- | time/africa | 11 | ||||
-rw-r--r-- | time/asia | 103 | ||||
-rw-r--r-- | time/australasia | 40 | ||||
-rw-r--r-- | time/europe | 218 | ||||
-rw-r--r-- | time/northamerica | 73 | ||||
-rw-r--r-- | time/private.h | 7 | ||||
-rw-r--r-- | time/southamerica | 7 | ||||
-rw-r--r-- | time/tzfile.h | 7 | ||||
-rw-r--r-- | time/zdump.c | 7 | ||||
-rw-r--r-- | time/zic.c | 213 |
16 files changed, 445 insertions, 294 deletions
diff --git a/ChangeLog b/ChangeLog index ef3680f4a6..c85d427970 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,22 @@ Wed Jun 5 15:57:28 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> + * time/tzfile.h, time/private.h, time/zdump.c, time/zic.c, + time/africa, time/asia, time/australasia, time/europe, + time/northamerica, time/southamerica: Updated from ADO 96h. + + * Make-dist (all-headers): Filter $(sysdep_headers) out of $(headers). + (try-sysdeps, +sysdep-names): Check sysdeps/libm-ieee754 too. + + * Makerules (distinfo-vars): Add sysdep_headers. + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Append to + this instead of $(headers). + * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. + + * Make-dist [subdirs-dirs]: Don't prefix $(subdir-dirs) with + $(subdir); we are already there. + + * sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist: Removed. + * mach/Machrules: Undo last change. (mach-generated): List .uh and .__h files only for $(user-interfaces), not for each .h in $(interface-headers); server-interfaces have no .uh diff --git a/Make-dist b/Make-dist index 02bffc4877..f0c1620654 100644 --- a/Make-dist +++ b/Make-dist @@ -48,7 +48,7 @@ endif # where source files might be found. ifdef subdir -all-headers = $(headers) +all-headers = $(filter-out $(sysdep_headers),$(headers)) else +distinfo := $(shell MAKEFLAGS= MFLAGS= $(MAKE) -s no_deps=t \ inhibit_interface_rules=t inhibit_mach_syscalls=t \ @@ -67,16 +67,20 @@ foo:=$(shell echo 'IS THIS WORKING??? all-headers=$(all-headers)' >&2) $(filter %.c %.S %.s %.h %.sub,$(distribute)) foo:=$(shell echo '+maybe-sysdeps=$(+maybe-sysdeps)'>&2) # Find all the files that have a stub or generic version. -try-sysdeps := $(foreach dir,$(..)sysdeps/stub $(..)sysdeps/generic,\ +try-sysdeps := $(foreach dir,$(..)sysdeps/stub $(..)sysdeps/generic \ + $(..)sysdeps/libm-ieee754,\ $(addprefix $(dir)/,$(+maybe-sysdeps))) foo:=$(shell echo 'try-sysdeps=$(try-sysdeps)'>&2) +sysdeps := $(wildcard $(try-sysdeps)) foo:=$(shell echo 'stub/generic +sysdeps=$(+sysdeps)'>&2) -+sysdep-names := $(sort $(notdir $(+sysdeps))) ++sysdep-names := $(sort $(patsubst $(..)sysdeps/generic/%,%,\ + $(patsubst $(..)sysdeps/stub/%,%,\ + $(patsubst $(..)sysdeps/libm-ieee754/%,%,\ + $(+sysdeps))))) foo:=$(shell echo '+sysdep-names=$(+sysdep-names)' >&2) ifdef subdir-dirs -vpath % $(addprefix $(subdir)/,$(subdir-dirs)) +vpath % $(subdir-dirs) endif # Now find all the sysdep versions of those files. diff --git a/Makerules b/Makerules index e2878e17e5..d770957bf2 100644 --- a/Makerules +++ b/Makerules @@ -794,8 +794,8 @@ distinfo: Makefile $(..)Makerules define distinfo-vars rm -f $@.new $(foreach var,subdir subdir-dirs sources elided-routines sysdep_routines \ - headers distribute dont_distribute generated others tests \ - extra-libs $(extra-libs:%=%-routines), + headers sysdep_headers distribute dont_distribute generated \ + others tests extra-libs $(extra-libs:%=%-routines), echo >> $@.new '$(var) := $($(var))') echo >> $@.new 'sources += $$(addsuffix .c,$$(elided-routines))' endef diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 412227a320..ec5119e408 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -1,7 +1,7 @@ ifeq ($(subdir), math) sysdep_routines += setfpucw extra-objs += ieee-fpucw.o -headers += fpu_control.h +sysdep_headers += fpu_control.h install-lib += libieee.a non-lib.a += libieee.a @@ -18,7 +18,7 @@ ifeq ($(subdir), misc) sysdep_routines += mount umount xmknod s_ptrace s_sysctl sysctl llseek \ setfsgid setfsuid sysinfo uselib s_reboot -headers += sys/mount.h sys/sysinfo.h sys/acct.h sys/sysctl.h sys/module.h \ +sysdep_headers += sys/mount.h sys/sysinfo.h sys/acct.h sys/sysctl.h sys/module.h \ sys/io.h sys/klog.h sys/kdaemon.h install-others += $(includedir)/sys/syscall.h @@ -45,19 +45,19 @@ endif ifeq ($(subdir), time) sysdep_routines += adjtimex -headers += sys/timex.h +sysdep_headers += sys/timex.h endif ifeq ($(subdir), socket) -headers += sys/socketcall.h net/if.h +sysdep_headers += sys/socketcall.h net/if.h endif ifeq ($(subdir), sunrpc) -headers += nfs/nfs.h +sysdep_headers += nfs/nfs.h endif ifeq ($(subdir), termios) -headers += termio.h +sysdep_headers += termio.h endif rtld-installed-name = ld-gnu.so.1 diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile index beb8441b46..e6e421da9d 100644 --- a/sysdeps/unix/sysv/linux/alpha/Makefile +++ b/sysdeps/unix/sysv/linux/alpha/Makefile @@ -1,7 +1,6 @@ ifeq ($(subdir), misc) -headers += alpha/ptrace.h alpha/regdef.h +sysdep_headers += alpha/ptrace.h alpha/regdef.h -sysdep_routines := $(sysdep_routines) \ - ieee_get_fp_control ieee_set_fp_control fpu_control setfpucw \ - sethae ioperm osf_sigprocmask fstatfs statfs +sysdep_routines += ieee_get_fp_control ieee_set_fp_control fpu_control \ + setfpucw sethae ioperm osf_sigprocmask fstatfs statfs endif diff --git a/sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist b/sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist deleted file mode 100644 index 69d16ac6bf..0000000000 --- a/sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist +++ /dev/null @@ -1 +0,0 @@ -sys-sig.S diff --git a/time/africa b/time/africa index ddb472d320..d55b598912 100644 --- a/time/africa +++ b/time/africa @@ -1,4 +1,4 @@ -# @(#)africa 7.12 +# @(#)africa 7.13 # 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 @@ -80,7 +80,6 @@ # Algeria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Algeria 1911 only - Jan 1 0:00s 0 - Rule Algeria 1916 only - Jun 14 23:00s 1:00 " DST" Rule Algeria 1916 1919 - Oct Sun<=7 23:00s 0 - Rule Algeria 1917 only - Mar 24 23:00s 1:00 " DST" @@ -212,7 +211,6 @@ Zone Africa/Djibouti 2:52:36 - LMT 1911 Jul # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Egypt 1900 only - Oct 1 0:00 0 - Rule Egypt 1940 only - Jul 15 0:00 1:00 " DST" Rule Egypt 1940 only - Oct 1 0:00 0 - Rule Egypt 1941 only - Apr 15 0:00 1:00 " DST" @@ -275,7 +273,6 @@ Zone Africa/Banjul -1:06:36 - LMT 1912 # WATDT is my invention for ``West Africa one-Third Daylight Time''. # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Ghana 1918 only - Jan 1 0:00 0 WAT # Whitman says DST was observed from 1931 to ``the present''; go with Shanks. Rule Ghana 1936 1942 - Sep 1 0:00 0:20 WATDT Rule Ghana 1936 1942 - Dec 31 0:00 0 WAT @@ -348,7 +345,6 @@ Zone Africa/Monrovia -0:43:08 - LMT 1882 # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Libya 1920 only - Jan 1 0:00 0 - Rule Libya 1951 only - Oct 14 2:00 1:00 " DST" Rule Libya 1952 only - Jan 1 0:00 0 - Rule Libya 1953 only - Oct 9 2:00 1:00 " DST" @@ -416,7 +412,6 @@ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou # Morocco # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Morocco 1913 only - Oct 26 0:00 0 - Rule Morocco 1939 only - Sep 12 0:00 1:00 " DST" Rule Morocco 1939 only - Nov 19 0:00 0 - Rule Morocco 1940 only - Feb 25 0:00 1:00 " DST" @@ -504,7 +499,6 @@ Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria # Sierra Leone # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule SL 1913 only - Oct 26 0:00 0 - # Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks. Rule SL 1935 1942 - Jun 1 0:00 1:00 S Rule SL 1935 1942 - Oct 1 0:00 0 - @@ -528,7 +522,6 @@ Zone Africa/Mogadishu 3:01:28 - LMT 1893 Nov # South Africa # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule SA 1892 only - Feb 8 0:00 0 - Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 S Rule SA 1943 1944 - Mar Sun>=15 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -544,7 +537,6 @@ Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8 # I verified this today by telephone with the Sudan Mission to the # United Nations: 212-573-6033 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Sudan 1931 only - Feb 8 0:00 0 - Rule Sudan 1970 only - May 1 0:00 1:00 " DST" Rule Sudan 1970 1985 - Oct 15 0:00 0 - Rule Sudan 1971 only - Apr 30 0:00 1:00 " DST" @@ -575,7 +567,6 @@ Zone Africa/Lome 0:04:52 - LMT 1893 # Tunisia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Tunisia 1911 only - Mar 9 0:00 0 - Rule Tunisia 1939 only - Apr 15 23:00s 1:00 " DST" Rule Tunisia 1939 only - Nov 18 23:00s 0 - Rule Tunisia 1940 only - Feb 25 23:00s 1:00 " DST" diff --git a/time/asia b/time/asia index c9cdc7ebad..a5d0ab59f5 100644 --- a/time/asia +++ b/time/asia @@ -1,4 +1,4 @@ -# @(#)asia 7.18 +# @(#)asia 7.23 # 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 @@ -30,10 +30,11 @@ # 3:00 AST ADT Arabia* # 3:00 BSK BSD Baku (was 4:00)* # 3:30 IST IDT Iran +# 4:00 AMST AMDT Armenia (was 3:00) (was YSK, YSD)* # 4:00 TBSK TBSD Tbilisi (was 3:00)* -# 4:00 YSK YSD Yerevan (was 3:00)* # 4:00 GST GDT Gulf* # 4:30 AFT Afghanistan* +# 5:00 ASK ASD Aktau (was SHSK, SHSD)* # 5:00 ASK ASD Ashkhabad (was 4:00)* # 5:00 BSK BSD Bishkek (was 6:00) (was FSK, FSD)* # 5:00 PKT Pakistan* @@ -69,11 +70,12 @@ ############################################################################### +# These rules for Russia are stolen from the `europe' file. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Russia 1981 1984 - Apr 1 0:00 1:00 D -Rule Russia 1981 1983 - Oct 1 0:00 0 K -Rule Russia 1984 max - Sep lastSun 2:00s 0 K -Rule Russia 1985 max - Mar lastSun 2:00s 1:00 D +Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 D +Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 K +Rule RussiaAsia 1984 max - Sep lastSun 2:00s 0 K +Rule RussiaAsia 1985 max - Mar lastSun 2:00s 1:00 D # Afghanistan # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -82,18 +84,32 @@ Zone Asia/Kabul 4:36:48 - LMT 1890 4:30 - AFT # Armenia +# From Paul Eggert (1996-05-04): +# Shanks has Yerevan switching to 3:00 (with Russian DST) in spring 1991, +# but usno1995 has Armenia at 4:00 (with DST), and Edgar Der-Danieliantz +# <edd@AIC.NET> reported today that Yerevan probably won't use DST this year, +# though it did use DST in 1995. We guess Yerevan stayed in sync with Moscow +# between 1990 and 1995, but stopped using DST in 1996. +# Der-Danieliantz also asked for a better abbreviation than `YSK' +# after independence. Apparently no abbreviation is in common use; +# use `AMST/AMDT' since `AM' is the ISO country code for Armenia. +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Armenia 1992 1995 - Sep lastSun 2:00s 0 S +Rule Armenia 1992 1995 - Mar lastSun 2:00s 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 3:00 - YSK 1957 Mar - 4:00 Russia YS%s -# Shanks has Yerevan switching to 3:00 (with Russian DST) in spring 1991, -# but usno1995 has Armenia at 4:00 (with DST). Ignore the 1991 switch for now. + 4:00 RussiaAsia YS%s 1991 Mar 31 2:00s + 3:00 1:00 YSD 1991 Sep 29 2:00s + 3:00 - AMST 1992 Jan 19 2:00s + 4:00 Armenia AM%sT 1996 + 4:00 - AMST # Azerbaijan # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Baku 3:19:24 - LMT 1924 May 2 3:00 - BSK 1957 Mar - 4:00 Russia BS%s 1991 Mar 31 2:00s + 4:00 RussiaAsia BS%s 1991 Mar 31 2:00s 3:00 1:00 BSD 1991 Sep 29 2:00s 3:00 - BSK # Shanks has Baku using Russian DST rules after 1991, @@ -133,7 +149,7 @@ Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan # Burma / Myanmar # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Asia/Rangoon 6:24:40 - LMT 1880 +Zone Asia/Rangoon 6:24:40 - LMT 1880 # or Yangon 6:25 - RMT 1920 6:30 - BMT 1942 May 9:00 - JST 1945 May 3 @@ -179,7 +195,6 @@ Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9 # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Shang 1928 only - Jan 1 0:00 0 S Rule Shang 1940 only - Jun 3 0:00 1:00 D Rule Shang 1940 1941 - Oct 1 0:00 0 S Rule Shang 1941 only - Mar 16 0:00 1:00 D @@ -213,7 +228,6 @@ Zone Asia/Kashgar 5:03:56 - LMT 1928 # Republic of China # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Taiwan 1896 only - Jan 1 0:00 0 S Rule Taiwan 1945 1951 - May 1 0:00 1:00 D Rule Taiwan 1945 1951 - Oct 1 0:00 0 S Rule Taiwan 1952 only - Mar 1 0:00 1:00 D @@ -232,7 +246,6 @@ Zone Asia/Taipei 8:06:00 - LMT 1896 ############################################################################### # Hong Kong # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule HK 1904 only - Oct 30 0:00 0 - Rule HK 1946 only - Apr 20 3:30 1:00 S Rule HK 1946 only - Dec 1 3:30 0 - Rule HK 1947 only - Apr 13 3:30 1:00 S @@ -254,7 +267,6 @@ Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30 # Macao # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Macao 1912 only - Jan 1 0:00 0 S Rule Macao 1961 1962 - Mar Sun>=16 3:30 1:00 D Rule Macao 1961 1964 - Nov Sun>=1 3:30 0 S Rule Macao 1963 only - Mar Sun>=16 0:00 1:00 D @@ -278,7 +290,6 @@ Zone Asia/Macao 7:34:20 - LMT 1912 # Cyprus # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Cyprus 1921 only - Nov 14 0:00 0 - Rule Cyprus 1975 only - Apr 13 0:00 1:00 " DST" Rule Cyprus 1975 only - Oct 12 0:00 0 - Rule Cyprus 1976 only - May 15 0:00 1:00 " DST" @@ -307,9 +318,9 @@ Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14 Zone Asia/Tbilisi 2:59:16 - LMT 1880 2:59 - LST 1924 May 2 3:00 - TBSK 1957 Mar - 4:00 Russia TBS%s 1991 Mar 31 2:00s + 4:00 RussiaAsia TBS%s 1991 Mar 31 2:00s 3:00 1:00 TBSD 1991 Sep 29 2:00s - 3:00 Russia TBS%s 1994 Sep 25 2:00s + 3:00 RussiaAsia TBS%s 1994 Sep 25 2:00s 4:00 - TBSK # India @@ -348,7 +359,6 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov # Iran # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Iran 1977 only - Nov 1 0:00 0 S Rule Iran 1978 1980 - Mar 21 0:00 1:00 D Rule Iran 1978 only - Oct 21 0:00 0 S Rule Iran 1979 only - Sep 19 0:00 0 S @@ -390,7 +400,6 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890 # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Zion 1918 only - Jan 1 0:00 0 S Rule Zion 1940 only - Jun 1 0:00 1:00 D Rule Zion 1942 1944 - Nov 1 0:00 0 S Rule Zion 1943 only - Apr 1 2:00 1:00 D @@ -553,7 +562,6 @@ Zone Asia/Tokyo 9:19:04 - LMT 1896 # Most likely Shanks is merely guessing dates from 1992 on. # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Jordan 1931 only - Jan 1 0:00 0 - Rule Jordan 1973 only - Jun 6 0:00 1:00 " DST" Rule Jordan 1973 1975 - Oct 1 0:00 0 - Rule Jordan 1974 1977 - May 1 0:00 1:00 " DST" @@ -576,21 +584,31 @@ Zone Asia/Amman 2:23:44 - LMT 1931 2:00 Jordan EET%s # Kazakhstan -# From Shanks (1991): +# From Paul Eggert (1996-04-19): +# Andrew Evtichov <evti@chevron.com> (1996-04-13) writes that Kazakhstan +# stayed in sync with Moscow after 1990, and that Aktau is the biggest city +# in western Kazakhstan. Follow Shanks before 1991, Evtichov afterwards. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Asia/Alma-Ata 5:07:48 - LMT 1924 May 2 +Zone Asia/Alma-Ata 5:07:48 - LMT 1924 May 2 # or Almaty 5:00 - AASK 1957 Mar - 6:00 Russia AAS%s -# Shanks has Alma-Ata switching to 5:00 in 1991, -# but usno1995 has Kazakhstan at 6:00. Ignore the 1991 switch for now. + 6:00 RussiaAsia AAS%s 1991 Mar 31 2:00s + 5:00 1:00 AASD 1991 Sep 29 2:00s + 5:00 - AASK 1992 Jan 19 2:00s + 6:00 RussiaAsia AAS%s +Zone Asia/Aktau 3:21:04 - LMT 1924 May 2 # or Aqtau + 4:00 - SHSK 1957 Mar # Fort Shevchenko + 5:00 RussiaAsia SHS%s 1991 Mar 31 2:00s + 4:00 1:00 ASD 1991 Sep 29 2:00s + 4:00 - ASK 1992 Jan 19 2:00s + 5:00 RussiaAsia AS%s # Kirgizstan # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 5:00 - FSK 1957 Mar # Frunze - 6:00 Russia FS%s 1991 Mar 31 2:00s + 6:00 RussiaAsia FS%s 1991 Mar 31 2:00s 5:00 1:00 FSD 1991 Sep 29 2:00s - 5:00 Russia BS%s + 5:00 RussiaAsia BS%s ############################################################################### @@ -642,7 +660,6 @@ Zone Asia/Vientiane 6:50:24 - LMT 1906 Jun 9 # Lebanon # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Lebanon 1880 only - Jan 1 0:00 0 - Rule Lebanon 1920 only - Mar 28 0:00 1:00 " DST" Rule Lebanon 1920 only - Oct 25 0:00 0 - Rule Lebanon 1921 only - Apr 3 0:00 1:00 " DST" @@ -685,10 +702,12 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Male 5:00 - PKT # Mongolia +# Shanks says that Mongolia has three time zones, +# but usno1995 and http://www.odci.gov/cia/publications/95fact/802389h.gif +# both say that it has just one. # Let's comment out the western and eastern Mongolian time zones # till we know what their principal towns are. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mongol 1978 only - Jan 1 0:00 0 S Rule Mongol 1981 1984 - Apr 1 0:00 1:00 T Rule Mongol 1981 1984 - Oct 1 0:00 0 S Rule Mongol 1985 max - Mar lastSun 2:00 1:00 T @@ -726,16 +745,16 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # Palestine # These rules for Egypt are stolen from the `africa' file. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Egypt 1957 only - May 10 0:00 1:00 " DST" -Rule Egypt 1957 1958 - Oct 1 0:00 0 - -Rule Egypt 1958 only - May 1 0:00 1:00 " DST" -Rule Egypt 1959 1981 - May 1 1:00 1:00 " DST" -Rule Egypt 1959 1965 - Sep 30 3:00 0 - -Rule Egypt 1966 max - Oct 1 3:00 0 - +Rule EgyptAsia 1957 only - May 10 0:00 1:00 " DST" +Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 - +Rule EgyptAsia 1958 only - May 1 0:00 1:00 " DST" +Rule EgyptAsia 1959 1981 - May 1 1:00 1:00 " DST" +Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 - +Rule EgyptAsia 1966 max - Oct 1 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Gaza 2:17:52 - LMT 1900 Oct 2:00 - EET 1957 May 10 - 2:00 Egypt EET%s 1967 Jun 30 + 2:00 EgyptAsia EET%s 1967 Jun 30 2:00 Zion I%sT # This will undoubtedly change soon. @@ -746,7 +765,6 @@ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct # Howse writes (p 162) that until 1844 the Philippines kept American date. # The rest of this data is from Shanks. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Phil 1899 only - May 11 0:00 0 S Rule Phil 1936 only - Nov 1 0:00 1:00 D Rule Phil 1937 only - Feb 1 0:00 0 S Rule Phil 1954 only - Apr 12 0:00 1:00 D @@ -796,7 +814,6 @@ Zone Asia/Colombo 5:19:24 - LMT 1880 # Syria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Syria 1920 only - Jan 1 0:00 0 - Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 " DST" Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 - Rule Syria 1962 only - Apr 29 2:00 1:00 " DST" @@ -828,7 +845,7 @@ Zone Asia/Damascus 2:25:12 - LMT 1920 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2 5:00 - DSK 1957 Mar - 6:00 Russia DS%s 1991 + 6:00 RussiaAsia DS%s 1991 6:00 - DSK # Shanks has Dushanbe at 5:00 (6:00 summer) after 1991 Sep 29 3:00, # but usno1995 has it at 6:00. Go with usno1995. @@ -843,7 +860,7 @@ Zone Asia/Bangkok 6:42:04 - LMT 1880 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Ashkhabad 3:53:32 - LMT 1924 May 2 4:00 - ASK 1957 Mar - 5:00 Russia AS%s 1991 + 5:00 RussiaAsia AS%s 1991 5:00 - ASK # Shanks has Ashkhabad at 4:00 (5:00 summer) after 1991 Sep 20 3:00, # but usno has it at 5:00. Go with usno1995. @@ -857,11 +874,13 @@ Zone Asia/Dubai 3:41:12 - LMT 1920 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tashkent 4:37:12 - LMT 1924 May 2 5:00 - TSK 1957 Mar - 6:00 Russia TS%s 1991 Mar 31 2:00s + 6:00 RussiaAsia TS%s 1991 Mar 31 2:00s 5:00 1:00 TSD 1991 Sep 29 2:00s 5:00 - TSK # Shanks has Tashkent using DST after 1991, but usno1995 says they don't. # Go with usno1995. +# http://www.odci.gov/cia/publications/95fact/802389h.gif claims that +# Uzbekistan has two time zones, but we lack data about this. # Vietnam # From Paul Eggert <eggert@twinsun.com> (November 18, 1993): diff --git a/time/australasia b/time/australasia index 8c92a5b27a..960f9e3f55 100644 --- a/time/australasia +++ b/time/australasia @@ -1,4 +1,4 @@ -# @(#)australasia 7.25 +# @(#)australasia 7.27 # This file also includes Pacific islands. # Notes are at the end of this file @@ -8,7 +8,6 @@ # Australia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Aus 1895 only - Jan 1 0:00 0 - # Shanks gives 1917 Jan 1 0:01; go with Whitman (and guess 2:00). Rule Aus 1916 only - Oct 1 2:00 1:00 - Rule Aus 1917 only - Mar 25 2:00 0 - @@ -208,10 +207,6 @@ Zone Pacific/Johnston -10:00 - HST # uninhabited # Kiribati -# From Paul Eggert (1996-01-22): -# Today's _Wall Street Journal_ (page 1) reports that Kiribati -# ``declared it the same day throught the country as of Jan. 1, 1995'' -# as part of the competition to be first into the 21st century. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki 12:00 - NZST @@ -246,8 +241,7 @@ Zone Pacific/Yap 9:12:32 - LMT 1901 # Colonia 9:00 - PLT 1969 Oct 10:00 - GST Zone Pacific/Truk 10:07:08 - LMT 1901 - 10:00 - GST 1978 Oct - 11:00 - NCST + 10:00 - GST Zone Pacific/Ponape 10:32:52 - LMT 1901 # Kolonia 11:00 - NCST Zone Pacific/Kosrae 10:51:56 - LMT 1901 @@ -264,7 +258,6 @@ Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe # New Caledonia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule NC 1912 only - Jan 13 0:00 0 S Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 D Rule NC 1978 1979 - Feb 27 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -277,7 +270,6 @@ Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # New Zealand # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule NZ 1868 only - Jan 1 0:00 0 S # Shanks gives 1927 Nov 6 - 1928 Mar 4, 1928 Oct 14 - 1929 Mar 17, # 1929 Oct 13 - 1930 Mar 16; go with Whitman. Rule NZ 1927 only - Nov 26 2:00 0:30 HD @@ -368,10 +360,6 @@ Zone Pacific/Fakaofo -11:24:56 - LMT 1901 -10:00 - THT # Tonga -# From Paul Eggert (1996-01-22): -# Today's _Wall Street Journal_ (page 1) reports that ``Tonga has been plotting -# to sneak ahead of [New Zealanders] by introducing daylight-saving time.'' -# But since Kiribati has moved the Date Line it's not clear what Tonga will do. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tongatapu 12:19:20 - LMT 1901 12:20 - TMT 1968 Oct @@ -384,7 +372,6 @@ Zone Pacific/Funafuti 11:56:52 - LMT 1901 # Vanuatu # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Vanuatu 1912 only - Jan 13 0:00 0 S Rule Vanuatu 1983 only - Sep 25 0:00 1:00 D Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 S Rule Vanuatu 1984 only - Oct 23 0:00 1:00 D @@ -840,6 +827,13 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # Johnston data is from usno1995. +# Kiribati + +# From Paul Eggert (1996-01-22): +# Today's _Wall Street Journal_ (page 1) reports that Kiribati +# ``declared it the same day throught the country as of Jan. 1, 1995'' +# as part of the competition to be first into the 21st century. + # Kwajalein # In comp.risks 14.87 (26 August 1993), Peter Neumann writes: @@ -855,9 +849,25 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # (now called the Marianas) kept American date for quite some time. # Ignore this for now, as we have no hard data. See also Asia/Manila. +# Micronesia + +# Alan Eugene Davis <adavis@kuentos.guam.net> writes (1996-03-16), +# ``I am certain, having lived there for the past decade, that "Truk" +# (now properly known as Chuuk) ... is in the time zone GMT+10.'' +# +# Shanks writes that Truk switched from GMT+10 to GMT+11 on 1978-10-01; +# ignore this for now. + # Samoa # Howse writes that in 1879 the King of Samoa decided to change # ``the date in his kingdom from the Antipodean to the American system, # ordaining -- by a masterpiece of diplomatic flattery -- that # the Fourth of July should be celebrated twice in that year.'' + +# Tonga + +# From Paul Eggert (1996-01-22): +# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting +# to sneak ahead of [New Zealanders] by introducing daylight-saving time.'' +# Since Kiribati has moved the Date Line it's not clear what Tonga will do. diff --git a/time/europe b/time/europe index 04273d277c..b96f23556d 100644 --- a/time/europe +++ b/time/europe @@ -1,4 +1,4 @@ -# @(#)europe 7.33 +# @(#)europe 7.37 # 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 @@ -36,7 +36,7 @@ # 5:00 ESK ESD Yekaterinburg (was 4:00) (was SSK, SSD)* # 6:00 OSK OSD Omsk (was 5:00)* # 6:00 NSK NSD Novosibirsk (was 7:00) -# 7:00 TSK TSD Tomsk (was 6:00)* +# 7:00 KRSK KRSD Krasnoyarsk (was 6:00) # 8:00 ISK ISD Irkutsk (was 7:00)* # 9:00 YSK YSD Yakutsk (was 8:00)* # 10:00 VSK VSD Vladivostok (was 9:00)* @@ -600,6 +600,11 @@ # 1995-97 is now in place. The Summer Time Order 1994 (SI 1994/2798) # came into force on 16 November. It restates the dates from the EC # seventh Summer Time Directive.... +# +# From Peter Ilieve <peter@aldie.co.uk> (1996-04-20): +# Proposals for the eighth directive were supposed to have been produced +# by the Commission by 1 Jan 96. They have not yet appeared (I asked just +# before Easter). # From Peter Ilieve <peter@memex.co.uk> (March 28, 1994): # The [GB-Eire] end date of 22 October [1995] conflicts with your current rule @@ -642,7 +647,6 @@ # Whitman says Dublin Mean Time was -0:25:21, which is more precise than Shanks. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule GB-Eire 1847 only - Sep 22 0:00 0 GMT # 1916 to 1925--irregular Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT @@ -716,21 +720,21 @@ Rule GB-Eire 1972 1980 - Oct Sun>=23 2:00s 0 GMT Rule GB-Eire 1981 1995 - Mar lastSun 1:00u 1:00 BST Rule GB-Eire 1981 1989 - Oct Sun>=23 1:00u 0 GMT Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT -# See EC for rules starting in 1996. +# See EU for rules starting in 1996. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/London -0:01:15 - LMT 1847 Sep 22 0:00 GB-Eire %s 1968 Feb 18 2:00 1:00 - BST 1971 Oct 31 2:00 0:00 GB-Eire %s 1996 - 0:00 EC GMT/BST + 0:00 EU GMT/BST Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00 # Dublin MT -0:25:21 1:00 DST 1916 Oct 1 3:00 0:00 GB-Eire %s 1968 Feb 18 2:00 1:00 - BST 1971 Oct 31 3:00 0:00 GB-Eire %s 1996 - 0:00 EC GMT/BST + 0:00 EU GMT/BST Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00 # Dublin MT -0:25:21 1:00 DST 1916 Oct 1 3:00 @@ -742,25 +746,24 @@ Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 0:00 GB-Eire %s 1968 Feb 18 2:00 1:00 - BST 1971 Oct 31 3:00 0:00 GB-Eire %s 1996 - 0:00 EC GMT/BST + 0:00 EU GMT/BST ############################################################################### # Continental Europe -# EC rules are for the European Community. +# EU rules are for the European Union, previously known as the EC, EEC, +# Common Market, etc. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule EC 1800 only - Jan 1 0:00 0 - -Rule EC 1977 1980 - Apr Sun>=1 1:00u 1:00 " DST" -Rule EC 1977 only - Sep lastSun 1:00u 0 - -Rule EC 1978 only - Oct 1 1:00u 0 - -Rule EC 1979 1995 - Sep lastSun 1:00u 0 - -Rule EC 1981 max - Mar lastSun 1:00u 1:00 " DST" -Rule EC 1996 max - Oct lastSun 1:00u 0 - - -# W-Eur differs from EC only in that W-Eur uses standard time. -Rule W-Eur 1800 only - Jan 1 0:00 0 - +Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 " DST" +Rule EU 1977 only - Sep lastSun 1:00u 0 - +Rule EU 1978 only - Oct 1 1:00u 0 - +Rule EU 1979 1995 - Sep lastSun 1:00u 0 - +Rule EU 1981 max - Mar lastSun 1:00u 1:00 " DST" +Rule EU 1996 max - Oct lastSun 1:00u 0 - + +# W-Eur differs from EU only in that W-Eur uses standard time. Rule W-Eur 1977 1980 - Apr Sun>=1 1:00s 1:00 " DST" Rule W-Eur 1977 only - Sep lastSun 1:00s 0 - Rule W-Eur 1978 only - Oct 1 1:00s 0 - @@ -769,18 +772,13 @@ Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 " DST" Rule W-Eur 1996 max - Oct lastSun 1:00s 0 - # Older M-Eur rules are for convenience in the tables. -# From 1977 on, M-Eur differs from EC only in that M-Eur uses standard time. -Rule M-Eur 1800 only - Jan 1 0:00 0 - +# From 1977 on, M-Eur differs from EU only in that M-Eur uses standard time. Rule M-Eur 1916 only - Apr 30 23:00 1:00 " DST" Rule M-Eur 1916 only - Oct 1 1:00 0 - Rule M-Eur 1917 1918 - Apr Mon>=15 2:00s 1:00 " DST" Rule M-Eur 1917 1918 - Sep Mon>=15 2:00s 0 - Rule M-Eur 1940 only - Apr 1 2:00s 1:00 " DST" -# Shanks says DST was continuous from 1940 Apr 1 to 1942 Nov 2; go with Whitman. -Rule M-Eur 1940 only - Dec 31 2:00s 0 - -Rule M-Eur 1941 only - Feb 25 2:00s 1:00 " DST" -Rule M-Eur 1941 only - Oct 5 2:00s 0 - -Rule M-Eur 1942 only - Jan 1 2:00s 1:00 " DST" +# Whitman says 1941 DST was only from Feb 25 to Oct 5; go with Shanks. Rule M-Eur 1942 only - Nov 2 2:00s 0 - Rule M-Eur 1943 only - Mar 29 2:00s 1:00 " DST" Rule M-Eur 1943 only - Oct 4 2:00s 0 - @@ -795,7 +793,6 @@ Rule M-Eur 1981 max - Mar lastSun 2:00s 1:00 " DST" Rule M-Eur 1996 max - Oct lastSun 2:00s 0 - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Russia 1880 only - Jan 1 0:00 0 - Rule Russia 1917 only - Jul 1 23:00 1:00 " DST" Rule Russia 1917 only - Dec 28 0:00 0 - Rule Russia 1918 only - May 31 22:00 2:00 " DDST" @@ -818,9 +815,9 @@ Rule Russia 1985 max - Mar lastSun 2:00s 1:00 D # These are for backward compatibility with older versions. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone WET 0:00 EC WET%s +Zone WET 0:00 EU WET%s Zone MET 1:00 M-Eur MET%s -Zone EET 2:00 EC EET%s +Zone EET 2:00 EU EET%s # Tom Hoffman says that MET is also known as Central European Time @@ -859,18 +856,17 @@ Zone Europe/Tirane 1:19:20 - LMT 1914 1:00 - MET 1940 Jun 16 1:00 Albania MET%s 1985 Mar 31 1:00 1:00 W-Eur MET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Andorra # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Andorra 0:06:04 - LMT 1901 0:00 - WET 1946 Sep 30 1:00 - MET 1985 Mar 31 2:00 - 1:00 EC MET%s + 1:00 EU MET%s # Austria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Austria 1918 only - Jun 16 3:00 0 - Rule Austria 1920 only - Apr 5 2:00s 1:00 " DST" Rule Austria 1920 only - Sep 13 2:00s 0 - Rule Austria 1945 only - Apr 2 2:00s 1:00 " DST" @@ -885,7 +881,7 @@ Zone Europe/Vienna 1:05:20 - LMT 1893 Apr 1:00 Austria MET%s 1940 Apr 1 2:00 1:00 M-Eur MET%s 1945 Apr 2 2:00 1:00 Austria MET%s 1981 - 1:00 EC MET%s + 1:00 EU MET%s # Belarus # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -896,7 +892,7 @@ Zone Europe/Minsk 1:50:16 - LMT 1880 3:00 Russia MS%s 1991 Mar 31 2:00s 2:00 1:00 "EET DST" 1991 Sep 29 2:00s 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Belgium # Whitman and Shanks disagree; go with Shanks, usually. @@ -944,7 +940,7 @@ Zone Europe/Brussels 0:17:20 - LMT 1880 0:00 Belgium WET%s 1940 Feb 24 23:00 1:00 M-Eur MET%s 1945 Apr 2 2:00 1:00 Belgium MET%s 1977 - 1:00 EC MET%s + 1:00 EU MET%s # Bosnia and Herzegovina # They switched from the Julian to the Gregorian calendar on 1918 Mar 18. @@ -954,7 +950,7 @@ Zone Europe/Sarajevo 1:13:40 - LMT 1884 1:00 M-Eur MET%s 1945 May 8 2:00s 1:00 1:00 "MET DST" 1945 Sep 16 2:00s 1:00 - MET 1983 - 1:00 EC MET%s + 1:00 EU MET%s # Bulgaria # Part switched from the Julian to the Gregorian calendar on 1915 Nov 14; @@ -973,7 +969,7 @@ Zone Europe/Sofia 1:33:16 - LMT 1880 2:00 - EET 1979 Mar 31 23:00 2:00 Bulg EET%s 1982 Sep 26 2:00 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Croatia # They switched from the Julian to the Gregorian calendar on 1918 Mar 18. @@ -983,11 +979,10 @@ Zone Europe/Zagreb 1:03:52 - LMT 1884 1:00 M-Eur MET%s 1945 May 8 2:00s 1:00 1:00 "MET DST" 1945 Sep 16 2:00s 1:00 - MET 1983 - 1:00 EC MET%s + 1:00 EU MET%s # Czech Republic # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Czech 1944 only - Sep 17 2:00s 0 - Rule Czech 1945 only - Apr 8 2:00s 1:00 " DST" Rule Czech 1945 only - Nov 18 2:00s 0 - Rule Czech 1946 only - May 6 2:00s 1:00 " DST" @@ -1000,7 +995,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850 0:58 - PMT 1891 Oct # Prague Mean Time 1:00 M-Eur MET%s 1944 Sep 17 2:00s 1:00 Czech MET%s 1979 - 1:00 EC MET%s + 1:00 EU MET%s # Denmark # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -1025,10 +1020,10 @@ Zone Europe/Copenhagen 0:50:20 - LMT 1890 1:00 Denmark MET%s 1942 Nov 2 2:00s 1:00 M-Eur MET%s 1945 Apr 2 2:00 1:00 Denmark MET%s 1980 - 1:00 EC MET%s + 1:00 EU MET%s Zone Atlantic/Faeroe -0:27:04 - LMT 1908 Jan 11 # Torshavn 0:00 - WET 1981 - 0:00 EC WET%s + 0:00 EU WET%s Zone America/Scoresbysund -1:29:00 - LMT 1916 Jul 28 -2:00 - MGT 1980 Apr 6 2:00 -2:00 M-Eur MGT%s 1981 Mar 29 @@ -1057,7 +1052,7 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880 3:00 Russia MS%s 1989 Mar 26 2:00s 2:00 1:00 "EET DST" 1989 Sep 24 2:00s 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Finland # @@ -1070,20 +1065,18 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880 # Go with Strang instead. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Finland 1921 only - May 1 0:00 0 - Rule Finland 1942 only - Apr 3 0:00 1:00 " DST" Rule Finland 1942 only - Oct 3 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Helsinki 1:39:52 - LMT 1878 May 31 1:40 - HMT 1921 May # Helsinki Mean Time 2:00 Finland EET%s 1981 Mar 29 2:00 - 2:00 EC EET%s + 2:00 EU EET%s # France # Shanks seems to use `24:00' ambiguously; we resolve it with Whitman. # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule France 1911 only - Jan 1 0:00 0 - Rule France 1916 only - Jun 14 23:00s 1:00 " DST" Rule France 1916 1919 - Oct Sun>=1 0:00 0 - Rule France 1917 only - Mar 24 23:00s 1:00 " DST" @@ -1139,7 +1132,7 @@ Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01 1:00 M-Eur MET%s 1944 Aug 25 0:00 France WET%s 1945 Sep 16 3:00 1:00 France MET%s 1977 - 1:00 EC MET%s + 1:00 EU MET%s # Germany # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -1159,21 +1152,20 @@ Rule Germany 1949 only - Apr 10 2:00s 1:00 " DST" Zone Europe/Berlin 0:53:28 - LMT 1893 Apr 1:00 M-Eur MET%s 1945 Apr 2 2:00 1:00 Germany MET%s 1980 - 1:00 EC MET%s + 1:00 EU MET%s # Gibraltar # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00 GB-Eire %s 1957 Apr 14 2:00 1:00 - MET 1982 - 1:00 EC MET%s + 1:00 EU MET%s # Greece # They adopted the Julian calendar in 1846. # Part switched to the Gregorian calendar on 1916 Jul 28. # The rest switched on 1920 Mar 18. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Greece 1916 only - July 28 0:01 0 - # Whitman gives 1932 Jul 5 - Nov 1; go with Shanks. Rule Greece 1932 only - Jul 7 0:00 1:00 " DST" Rule Greece 1932 only - Sep 1 0:00 0 - @@ -1204,12 +1196,13 @@ Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14 1:00 Greece MET%s 1944 Apr 4 2:00 Greece EET%s 1981 # Shanks says they switched to M-Eur in 1981; - # go with EC intead, since Greece joined it on Jan 1. - 2:00 EC EET%s + # go with EU intead, since Greece joined it on Jan 1. + 2:00 EU EET%s # Hungary # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Hungary 1918 only - Sep 29 2:00s 0 - +Rule Hungary 1918 only - Apr 1 3:00 1:00 " DST" +Rule Hungary 1918 only - Sep 29 3:00 0 - Rule Hungary 1919 only - Apr 15 3:00 1:00 " DST" Rule Hungary 1919 only - Sep 15 3:00 0 - Rule Hungary 1920 only - Apr 5 3:00 1:00 " DST" @@ -1230,11 +1223,11 @@ Rule Hungary 1957 only - Sep lastSun 3:00 0 - Rule Hungary 1980 only - Apr 6 1:00 1:00 " DST" # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Budapest 1:16:20 - LMT 1890 Oct - 1:00 M-Eur MET%s 1918 Jul + 1:00 M-Eur MET%s 1918 1:00 Hungary MET%s 1941 Apr 6 2:00 1:00 M-Eur MET%s 1945 May 1 23:00 1:00 Hungary MET%s 1980 Sep 28 2:00s - 1:00 EC MET%s + 1:00 EU MET%s # Iceland # @@ -1272,7 +1265,6 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct # Reykavik was -1:28 from 1837 to 1908, local mean time before that. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Iceland 1908 only - Jan 1 0:00 0 S Rule Iceland 1917 1918 - Feb 19 23:00 1:00 D Rule Iceland 1917 only - Oct 21 1:00 0 S Rule Iceland 1918 only - Nov 16 1:00 0 S @@ -1300,22 +1292,43 @@ Zone Atlantic/Reykjavik -1:27:24 - LMT 1837 0:00 - GMT # Italy +# From Paul Eggert (1996-05-06): +# For Italian DST we have three sources: Shanks, Whitman, and F. Pollastri +# <http://pisolo.cstv.to.cnr.it/toi/it/ienitlt.html> (see `FP' below), +# taken from a publication of the Italian National Electrotechnical Institute. +# When the three sources disagree, guess who's right, as follows: +# +# year FP Shanks (S) Whitman (W) Go with: +# 1916 06-03 06-03 24:00 06-03 00:00 FP & W +# 09-30 09-30 24:00 09-30 01:00 FP; guess 24:00s +# 1917 04-01 03-31 24:00 03-31 00:00 FP & S +# 09-30 09-29 24:00 09-30 01:00 FP & W +# 1918 03-09 03-09 24:00 03-09 00:00 FP & S +# 10-06 10-05 24:00 10-06 01:00 FP & W +# 1919 03-01 03-01 24:00 03-01 00:00 FP & S +# 10-04 10-04 24:00 10-04 01:00 FP; guess 24:00s +# 1920 03-20 03-20 24:00 03-20 00:00 FP & S +# 09-18 09-18 24:00 10-01 01:00 FP; guess 24:00s +# 1944 04-02 04-03 02:00 S (see M-Eur) +# 09-16 10-02 03:00 FP; guess 24:00s +# 1945 09-14 09-16 24:00 FP; guess 24:00s +# 1970 05-21 05-31 00:00 S +# 09-20 09-27 00:00 S +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Italy 1893 only - Nov 1 0:00s 0 S -# Shanks gives transition times of 1916-1920 as 24:00; go with Whitman. Rule Italy 1916 only - Jun 3 0:00s 1:00 " DST" -Rule Italy 1916 only - Sep 30 0:00s 0 - -Rule Italy 1917 only - Mar 31 0:00s 1:00 " DST" +Rule Italy 1916 only - Oct 1 0:00s 0 - +Rule Italy 1917 only - Apr 1 0:00s 1:00 " DST" Rule Italy 1917 only - Sep 30 0:00s 0 - -Rule Italy 1918 only - Mar 9 0:00s 1:00 " DST" +Rule Italy 1918 only - Mar 10 0:00s 1:00 " DST" Rule Italy 1918 1919 - Oct Sun>=1 0:00s 0 - -Rule Italy 1919 only - Mar 1 0:00s 1:00 " DST" -Rule Italy 1920 only - Mar 20 0:00s 1:00 " DST" -# Shanks gives 1920 Sep 18; go with Whitman. -Rule Italy 1920 only - Oct 1 0:00s 0 - -Rule Italy 1940 only - Jun 15 0:00 1:00 " DST" +Rule Italy 1919 only - Mar 2 0:00s 1:00 " DST" +Rule Italy 1920 only - Mar 21 0:00s 1:00 " DST" +Rule Italy 1920 only - Sep 19 0:00s 0 - +Rule Italy 1940 only - Jun 15 0:00s 1:00 " DST" +Rule Italy 1944 only - Sep 17 0:00s 0 - Rule Italy 1945 only - Apr 2 2:00 1:00 " DST" -Rule Italy 1945 only - Sep 17 0:00 0 - +Rule Italy 1945 only - Sep 15 0:00s 0 - Rule Italy 1946 only - Mar 17 2:00s 1:00 " DST" Rule Italy 1946 only - Oct 6 2:00s 0 - Rule Italy 1947 only - Mar 16 0:00s 1:00 " DST" @@ -1343,9 +1356,9 @@ Rule Italy 1979 only - Sep 30 0:00s 0 - Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22 0:50 - RMT 1893 Nov # Rome Mean Time 1:00 Italy MET%s 1942 Nov 2 2:00s - 1:00 M-Eur MET%s 1945 Apr 2 2:00s + 1:00 M-Eur MET%s 1944 Jul 1:00 Italy MET%s 1980 - 1:00 EC MET%s + 1:00 EU MET%s Link Europe/Rome Europe/Vatican Link Europe/Rome Europe/San_Marino @@ -1364,13 +1377,13 @@ Zone Europe/Riga 1:36:24 - LMT 1880 3:00 Russia MS%s 1991 Mar 31 2:00s 2:00 1:00 "EET DST" 1991 Sep 29 2:00s 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Liechtenstein # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Vaduz 0:38:04 - LMT 1894 Jun 1:00 - MET 1981 - 1:00 EC MET%s + 1:00 EU MET%s # Lithuania # They switched from the Julian to the Gregorian calendar on 1918 Feb 15. @@ -1386,12 +1399,11 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880 3:00 Russia MS%s 1991 Mar 31 2:00s 2:00 1:00 "EET DST" 1991 Sep 29 2:00s 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Luxembourg # Whitman disagrees with most of these dates in minor ways; go with Shanks. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Lux 1904 only - Jun 1 0:00 0 - Rule Lux 1916 only - May 14 23:00 1:00 " DST" Rule Lux 1916 only - Oct 1 1:00 0 - Rule Lux 1917 only - Apr 28 23:00 1:00 " DST" @@ -1422,7 +1434,7 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun 0:00 Belgium WET%s 1940 May 14 3:00 1:00 M-Eur WET%s 1944 Sep 18 3:00 1:00 Belgium MET%s 1977 - 1:00 EC MET%s + 1:00 EU MET%s # Macedonia # They switched from the Julian to the Gregorian calendar on 1918 Mar 18. @@ -1432,7 +1444,7 @@ Zone Europe/Skopje 1:25:44 - LMT 1884 1:00 M-Eur MET%s 1945 May 8 2:00s 1:00 1:00 "MET DST" 1945 Sep 16 2:00s 1:00 - MET 1983 - 1:00 EC MET%s + 1:00 EU MET%s # Malta # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -1449,7 +1461,7 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta 1:00 M-Eur MET%s 1945 Apr 2 2:00s 1:00 Italy MET%s 1973 Mar 31 1:00 Malta MET%s 1981 - 1:00 EC MET%s + 1:00 EU MET%s # Moldova # They switched from the Julian to the Gregorian calendar on 1919 Mar 18. @@ -1459,7 +1471,7 @@ Zone Europe/Chisinau 1:55:20 - LMT 1924 May 2 3:00 Russia MS%s 1991 Mar 31 2:00s 2:00 1:00 "EET DST" 1991 Sep 29 2:00s 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Monaco # Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. @@ -1468,13 +1480,12 @@ Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time 0:00 France WET%s 1945 Sep 16 3:00 1:00 France MET%s 1977 - 1:00 EC MET%s + 1:00 EU MET%s # Netherlands # Howse writes that the Netherlands' railways used GMT between 1892 and 1940, # but for other purposes the Netherlands used Amsterdam mean time. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Neth 1892 only - May 1 0:00 0 AMT # Shanks gives 1916 May 1 0:00 and 1916 Oct 1 0:00; go with Whitman. Rule Neth 1916 only - May 1 2:00s 1:00 NST Rule Neth 1916 only - Oct 2 2:00s 0 AMT @@ -1506,11 +1517,10 @@ Zone Europe/Amsterdam 0:19:28 - LMT 1892 May 0:20 Neth %s 1940 May 16 0:40 1:00 M-Eur MET%s 1945 Apr 2 2:00 1:00 Neth MET%s 1977 - 1:00 EC MET%s + 1:00 EU MET%s # Norway # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Norway 1892 only - May 1 0:00 0 - # Whitman gives 1916 May 21 - 1916 Oct 21; go with Shanks. Rule Norway 1916 only - May 22 1:00 1:00 " DST" Rule Norway 1916 only - Sep 30 0:00 0 - @@ -1528,7 +1538,7 @@ Zone Europe/Oslo 0:43:00 - LMT 1895 1:00 Norway MET%s 1940 Aug 10 23:00 1:00 M-Eur MET%s 1945 Apr 2 2:00 1:00 Norway MET%s 1980 - 1:00 EC MET%s + 1:00 EU MET%s # Svalbard is like Europe/Oslo. # # From Whitman: @@ -1569,11 +1579,10 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880 1:00 M-Eur MET%s 1944 Oct 1:00 Poland MET%s 1977 Apr 3 1:00 1:00 W-Eur MET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Portugal # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Port 1911 only - May 24 0:00 0 - Rule Port 1916 only - Jun 17 23:00 1:00 " DST" # Whitman gives 1916 Oct 31; go with Shanks. Rule Port 1916 only - Nov 1 1:00 0 - @@ -1640,16 +1649,16 @@ Zone Europe/Lisbon -0:36:32 - LMT 1884 0:00 Port WET%s 1966 Apr 3 2:00 1:00 - MET 1976 Sep 26 1:00 0:00 Port WET%s 1983 Sep 25 1:00s - 0:00 EC WET%s 1992 Sep 27 1:00s + 0:00 EU WET%s 1992 Sep 27 1:00s # From Rui Pedro Salgueiro <rps@inescca.inescc.pt> (November 12, 1992): # Portugal has recently (September, 27) changed timezone # (from WET to MET or CET) to harmonize with EEC. - 1:00 EC MET%s 1996 Mar 31 1:00u + 1:00 EU MET%s 1996 Mar 31 1:00u # Martin Bruckmann <martin@ua.pt> (1996-02-29) reports via Peter Ilieve # that Portugal is reverting to 0:00 by not moving its clocks this spring. # The new Prime Minister was fed up with getting up in the dark in the winter. 0:00 1:00 "WET DST" 1996 Oct 27 1:00u - 0:00 EC WET%s + 0:00 EU WET%s # We don't know what happened to Madeira or the Azores, # so we'll just use Shanks for now. # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1664,13 +1673,12 @@ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal -1:00 Port ACT%s 1966 Apr 3 2:00 0:00 - WET 1977 Mar 27 0:00 Port WET%s 1983 Sep 25 1:00s - 0:00 EC WET%s + 0:00 EU WET%s # Romania # Catholic Romania switched from the Julian to the Gregorian calendar on # on 1919 Mar 18. Greek Orthodox Romania switched on 1920 Mar 18. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Romania 1931 only - Jul 24 0:00 0 - Rule Romania 1932 only - May 21 0:00s 1:00 " DST" Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 - Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 " DST" @@ -1683,7 +1691,7 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct 1:44 - BMT 1931 Jul 24 # Bucharest MT 2:00 Romania EET%s 1981 Mar 29 2:00s 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. # Russia # From Paul Eggert <eggert@twinsun.com> (May 28, 1994): @@ -1730,7 +1738,6 @@ Zone Asia/Omsk 4:53:36 - LMT 1924 May 2 # I do not know why they have decided to make this change; # as far as I remember it was done exactly during winter->summer switching # so we (Novosibirsk) simply did not switch. -# Tomsk is still 4 hours ahead of Moscow. Zone Asia/Novosibirsk 5:31:40 - LMT 1924 May 2 6:00 - NSK 1957 Mar 7:00 Russia NS%s 1991 Mar 31 2:00s @@ -1739,12 +1746,12 @@ Zone Asia/Novosibirsk 5:31:40 - LMT 1924 May 2 7:00 Russia NS%s 1994 Mar 27 2:00s 6:00 1:00 NSD 1994 Sep 25 2:00s 6:00 Russia NS%s -Zone Asia/Tomsk 5:39:52 - LMT 1924 May 2 - 6:00 - TSK 1957 Mar - 7:00 Russia TS%s 1991 Mar 31 2:00s - 6:00 1:00 TSD 1991 Sep 29 2:00s - 6:00 - TSK 1992 Jan 19 2:00s - 7:00 Russia TS%s +Zone Asia/Krasnoyarsk 6:11:20 - LMT 1924 May 2 + 6:00 - KRSK 1957 Mar + 7:00 Russia KRS%s 1991 Mar 31 2:00s + 6:00 1:00 KRSD 1991 Sep 29 2:00s + 6:00 - KRSK 1992 Jan 19 2:00s + 7:00 Russia KRS%s Zone Asia/Irkutsk 6:57:20 - LMT 1880 6:57 - LST 1924 May 2 7:00 - ISK 1957 Mar @@ -1796,11 +1803,10 @@ Zone Europe/Ljubljana 0:58:04 - LMT 1884 1:00 M-Eur MET%s 1945 May 8 2:00s 1:00 1:00 "MET DST" 1945 Sep 16 2:00s 1:00 - MET 1983 - 1:00 EC MET%s + 1:00 EU MET%s # Spain # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Spain 1901 only - Jan 1 0:00 0 - # For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1; go with Shanks. Rule Spain 1917 only - May 5 23:00s 1:00 " DST" Rule Spain 1917 1919 - Oct 6 23:00s 0 - @@ -1842,12 +1848,12 @@ Rule Spain 1978 only - Oct 1 1:00 0 - Zone Europe/Madrid -0:14:44 - LMT 1901 0:00 Spain WET%s 1946 Sep 30 1:00 Spain MET%s 1979 - 1:00 EC MET%s + 1:00 EU MET%s Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C. -1:00 - ACT 1946 Sep 30 1:00 0:00 - WET 1980 Apr 6 0:00s 0:00 1:00 "WET DST" 1980 Sep 28 0:00s - 0:00 EC WET%s + 0:00 EU WET%s # Sweden # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1856,7 +1862,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1878 May 31 1:00 - MET 1916 Apr 14 23:00s 1:00 1:00 "MET DST" 1916 Sep 30 23:00s 1:00 - MET 1980 - 1:00 EC MET%s + 1:00 EU MET%s # Switzerland # From Howse (1988), p 82: @@ -1864,7 +1870,6 @@ Zone Europe/Stockholm 1:12:12 - LMT 1878 May 31 # and their performance improved enormously. Communities began to keep # mean time in preference to apparent time -- Geneva from 1780 .... # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Swiss 1894 only - Jun 1 0:00 0 - # From Whitman (who writes ``Midnight?''): Rule Swiss 1940 only - Nov 2 0:00 1:00 " DST" Rule Swiss 1940 only - Dec 31 0:00 0 - @@ -1875,13 +1880,12 @@ Rule Swiss 1941 1942 - Oct Sun>=1 0:00 0 - Zone Europe/Zurich 0:34:08 - LMT 1848 Sep 12 0:30 - SST 1894 Jun # Swiss Standard Time 1:00 Swiss MET%s 1981 - 1:00 EC MET%s + 1:00 EU MET%s # Turkey # European Turkey switched to the Gregorian calendar in 1908. # Asian Turkey switched in 1914. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Turkey 1910 only - Oct 1 0:00 0 - Rule Turkey 1916 only - May 1 0:00 1:00 " DST" Rule Turkey 1916 only - Oct 1 0:00 0 - Rule Turkey 1920 only - Mar 28 0:00 1:00 " DST" @@ -1941,7 +1945,7 @@ Zone Europe/Istanbul 1:55:52 - LMT 1880 3:00 Turkey TUR%s 1985 Apr 20 2:00 Turkey EET%s 1986 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents. # Ukraine @@ -1959,7 +1963,7 @@ Zone Europe/Kiev 2:02:04 - LMT 1880 2:00 - EET 1930 Jun 21 3:00 Russia MS%s 1990 Jul 17 2:00 M-Eur EET%s -# This may change to `EC' soon. +# This may change to `EU' soon. Zone Europe/Simferopol 2:16:24 - LMT 1880 2:08 Russia LST%s 1919 Jul 1 2:00 2:08 Ukraine LST%s 1924 May 2 @@ -1981,7 +1985,7 @@ Zone Europe/Belgrade 1:22:00 - LMT 1884 1:00 M-Eur MET%s 1945 May 8 2:00s 1:00 1:00 "MET DST" 1945 Sep 16 2:00s 1:00 - MET 1983 - 1:00 EC MET%s + 1:00 EU MET%s ############################################################################### diff --git a/time/northamerica b/time/northamerica index d1427900dd..1d0342a568 100644 --- a/time/northamerica +++ b/time/northamerica @@ -1,4 +1,4 @@ -# @(#)northamerica 7.22 +# @(#)northamerica 7.25 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, @@ -160,11 +160,11 @@ Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D Rule Denver 1965 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00 - -7:00 US E%sT 1920 - -7:00 Denver E%sT 1942 - -7:00 US E%sT 1946 - -7:00 Denver E%sT 1967 - -7:00 US E%sT + -7:00 US M%sT 1920 + -7:00 Denver M%sT 1942 + -7:00 US M%sT 1946 + -7:00 Denver M%sT 1967 + -7:00 US M%sT # US Pacific time, represented by Los Angeles # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER @@ -461,8 +461,6 @@ Link Pacific/Honolulu HST # # See the `africa' file for Zone naming conventions. - - # Canada # Canada is reportedly lots easier than the US--leastways since 1951. @@ -569,11 +567,8 @@ Link Pacific/Honolulu HST # From Paul Eggert <eggert@twinsun.com> (1994-11-22): # Alas, this sort of thing must be handled by localization software. - - # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule StJohns 1884 only - Jan 1 0:00 0 S Rule StJohns 1917 1918 - Apr Sun>=8 2:00 1:00 D Rule StJohns 1917 only - Sep 17 2:00 0 S Rule StJohns 1918 only - Oct 31 2:00 0 S @@ -612,7 +607,6 @@ Zone America/St_Johns -3:30:52 - LMT 1884 -3:30 StJohns N%sT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Halifax 1902 only - Jun 15 0:00 0 S Rule Halifax 1916 only - Apr 1 0:00 1:00 D Rule Halifax 1916 only - Oct 1 0:00 0 S Rule Halifax 1918 only - Apr 14 2:00 1:00 D @@ -658,7 +652,6 @@ Zone America/Halifax -4:14:24 - LMT 1902 Jun 15 -4:00 Halifax A%sT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mont 1884 only - Jan 1 0:00 0 S Rule Mont 1917 only - Mar 25 2:00 1:00 D Rule Mont 1917 only - Apr 24 0:00 0 S Rule Mont 1918 only - Apr 14 2:00 1:00 D @@ -692,7 +685,6 @@ Zone America/Montreal -4:54:16 - LMT 1884 -5:00 Mont E%sT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Winn 1887 only - Jul 16 0:00 0 S Rule Winn 1916 only - Apr 23 0:00 1:00 D Rule Winn 1916 only - Sep 17 0:00 0 S Rule Winn 1918 only - Apr 14 2:00 1:00 D @@ -721,7 +713,6 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16 -6:00 Winn C%sT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Regina 1905 only - Sep 1 0:00 0 S Rule Regina 1918 only - Apr 14 2:00 1:00 D Rule Regina 1918 only - Oct 31 2:00 0 S Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D @@ -742,7 +733,6 @@ Zone America/Regina -6:58:36 - LMT 1905 Sep -6:00 - CST # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Edm 1906 only - Sep 1 0:00 0 S Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D Rule Edm 1918 only - Oct 31 2:00 0 S Rule Edm 1919 only - May 27 2:00 0 S @@ -765,7 +755,6 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep -7:00 Edm M%sT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Vanc 1884 only - Jan 1 0:00 0 S Rule Vanc 1918 only - Apr 14 2:00 1:00 D Rule Vanc 1918 only - Oct 31 2:00 0 S Rule Vanc 1942 only - Feb 9 2:00 1:00 D @@ -780,7 +769,6 @@ Zone America/Vancouver -8:12:28 - LMT 1884 -8:00 Vanc P%sT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Yukon 1900 only - Jan 1 0:00 0 S Rule Yukon 1918 only - Apr 14 2:00 1:00 D Rule Yukon 1918 only - Oct 27 2:00 0 S Rule Yukon 1919 only - May 25 2:00 1:00 D @@ -848,22 +836,41 @@ Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20 # a zone that's GMT-8 with DST; a zone that's always GMT-7; # a zone that's GMT-6 with DST; and a zone that's always GMT-6. -# From Paul Eggert <eggert@twinsun.com> (November 18, 1993): +# From Paul Eggert <eggert@twinsun.com> (1993-11-18): # Shanks also says there are four zones, but disagrees about the fourth. # Instead of GMT-6 with DST, he says there's GMT-8 without DST. -# From Paul Eggert (1996-02-07): -# Today in news:4f90v4$g6g@news.internet.com.mx, Kevin Pitts -# <bravo2@internet.com.mx> wrote that Mexico will use Horario de Verano (DST) -# starting this year with the same rules as the US, and gave FIDE as a source. -# (FIDE is a private organization that promotes efficient electrical use.) -# On 1996-02-02 Mario Camou wrote that the transition times are Apr Sun>=1 -# 0:00 and Nov 1 0:00 but also wrote ``The DST-out date looks a bit fishy''. -# Go with Pitts after 1996, and with Shanks before that. +# From Alan Perry <alan.perry@eng.sun.com> (1996-02-15): +# A guy from our Mexico subsidiary finally found the Presidential Decree +# outlining the timezone changes in Mexico. +# +# ------------- Begin Forwarded Message ------------- +# +# I finally got my hands on the Official Presidential Decree that sets up the +# rules for the DST changes. The rules are: +# +# 1. The country is divided in 3 timezones: +# - Baja California Norte (the Mexico/BajaNorte TZ) +# - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ) +# - The rest of the country (the Mexico/General TZ) +# +# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October +# at 2:00 AM, the times in each zone are as follows: +# BajaNorte: GMT+7 +# BajaSur: GMT+6 +# General: GMT+5 +# +# 3. The rest of the year, the times are as follows: +# BajaNorte: GMT+8 +# BajaSur: GMT+7 +# General: GMT+6 +# +# The Decree was published in Mexico's Official Newspaper on January 4th. +# +# -------------- End Forwarded Message -------------- # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mexico 1922 only - Jan 1 0:00 0 S Rule Mexico 1939 only - Feb 5 0:00 1:00 D Rule Mexico 1939 only - Jun 25 0:00 0 S Rule Mexico 1940 only - Dec 9 0:00 1:00 D @@ -930,7 +937,6 @@ Zone America/Antigua -4:07:12 - LMT 1912 Mar 2 # Bahamas # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Bahamas 1912 only - Mar 2 0:00 0 S Rule Bahamas 1964 max - Oct lastSun 2:00 0 S Rule Bahamas 1964 1986 - Apr lastSun 2:00 1:00 D Rule Bahamas 1987 max - Apr Sun>=1 2:00 1:00 D @@ -940,7 +946,6 @@ Zone America/Nassau -5:09:24 - LMT 1912 Mar 2 # Barbados # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Barb 1932 only - Jan 1 0:00 0 S Rule Barb 1977 only - Jun 12 2:00 1:00 D Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D @@ -954,7 +959,6 @@ Zone America/Barbados -3:58:28 - LMT 1924 # Bridgetown # Belize # Whitman entirely disagrees with Shanks; go with Shanks. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Belize 1912 only - Apr 1 0:00 0 S Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 HD Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 S Rule Belize 1973 only - Dec 5 0:00 1:00 D @@ -984,7 +988,6 @@ Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown # Shanks gives some very odd dates for 1991, and stops there. # For now, we won't guess further. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule CR 1921 only - Jan 15 0:00 0 S Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S Rule CR 1991 only - Jan 19 0:00 1:00 D @@ -1010,7 +1013,6 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Cuba 1925 only - Jul 19 12:00 0 S Rule Cuba 1928 only - Jun 10 0:00 1:00 D Rule Cuba 1928 only - Oct 10 0:00 0 S Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D @@ -1049,7 +1051,6 @@ Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau # Dominican Republic # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule DR 1933 only - Apr 1 12:00 0 S Rule DR 1966 only - Oct 30 0:00 1:00 D Rule DR 1967 only - Feb 28 0:00 0 S Rule DR 1969 1973 - Oct lastSun 0:00 0:30 HD @@ -1064,7 +1065,6 @@ Zone America/Santo_Domingo -4:39:36 - LMT 1890 # El Salvador # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Salv 1921 only - Jan 1 0:00 0 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'. @@ -1084,7 +1084,6 @@ Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre # Guatemala # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Guat 1918 only - Oct 5 0:00 0 S Rule Guat 1973 only - Nov 25 0:00 1:00 D Rule Guat 1974 only - Feb 24 0:00 0 S Rule Guat 1983 only - May 21 0:00 1:00 D @@ -1095,7 +1094,6 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5 # Haiti # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Haiti 1917 only - Jan 24 12:00 0 S Rule Haiti 1983 only - May 8 0:00 1:00 D Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S @@ -1142,7 +1140,6 @@ Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Plymouth # Nicaragua # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Nic 1975 only - Feb 16 0:00 0 S Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] diff --git a/time/private.h b/time/private.h index 69fcca3822..f81bf4867b 100644 --- a/time/private.h +++ b/time/private.h @@ -3,6 +3,11 @@ #define PRIVATE_H /* +** This file is in the public domain, so clarified as of +** June 5, 1996 by Arthur David Olson (arthur_david_olson@nih.gov). +*/ + +/* ** This header is for use ONLY with the time conversion code. ** There is no guarantee that it will remain unchanged, ** or that it will remain at all. @@ -16,7 +21,7 @@ #ifndef lint #ifndef NOID -static char privatehid[] = "@(#)private.h 7.42"; +static char privatehid[] = "@(#)private.h 7.43"; #endif /* !defined NOID */ #endif /* !defined lint */ diff --git a/time/southamerica b/time/southamerica index 893d038908..c3c5c99fbe 100644 --- a/time/southamerica +++ b/time/southamerica @@ -1,4 +1,4 @@ -# @(#)southamerica 7.11 +# @(#)southamerica 7.12 # 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 @@ -164,7 +164,6 @@ Zone America/La_Paz -4:32:36 - LMT 1890 # about time zone changes after 1990 Feb 11. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Brazil 1914 only - Jan 1 0:00 0 S Rule Brazil 1931 only - Oct 3 11:00 1 D Rule Brazil 1932 1933 - Apr 1 0:00 0 S Rule Brazil 1932 only - Oct 3 0:00 1 D @@ -256,7 +255,6 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno # Falklands # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Falk 1912 only - Mar 12 0:00 0 S Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 D Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 S Rule Falk 1939 only - Oct 1 0:00 1:00 D @@ -299,7 +297,6 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Para 1974 only - Apr 1 0:00 0 S Rule Para 1975 1978 - Oct 1 0:00 1:00 D Rule Para 1975 1978 - Mar 1 0:00 0 S # Shanks says 1979 was all DST. @@ -316,7 +313,6 @@ Zone America/Asuncion -3:50:40 - LMT 1890 # Peru # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Peru 1908 only - Jul 28 0:00 0 S Rule Peru 1938 only - Jan 1 0:00 1:00 D Rule Peru 1938 only - Apr 1 0:00 0 S Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 D @@ -356,7 +352,6 @@ Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 # Uruguay wins the prize for the strangest peacetime manipulation of the rules. # From Shanks (1991): # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Uruguay 1920 only - May 1 0:00 0 S # Whitman gives 1923 Oct 1; go with Shanks. Rule Uruguay 1923 only - Oct 2 0:00 0:30 HD Rule Uruguay 1924 1926 - Apr 1 0:00 0 S diff --git a/time/tzfile.h b/time/tzfile.h index f08134c815..cb9b6a1a11 100644 --- a/time/tzfile.h +++ b/time/tzfile.h @@ -3,6 +3,11 @@ #define TZFILE_H /* +** This file is in the public domain, so clarified as of +** June 5, 1996 by Arthur David Olson (arthur_david_olson@nih.gov). +*/ + +/* ** This header is for use ONLY with the time conversion code. ** There is no guarantee that it will remain unchanged, ** or that it will remain at all. @@ -16,7 +21,7 @@ #ifndef lint #ifndef NOID -static char tzfilehid[] = "@(#)tzfile.h 7.7"; +static char tzfilehid[] = "@(#)tzfile.h 7.8"; #endif /* !defined NOID */ #endif /* !defined lint */ diff --git a/time/zdump.c b/time/zdump.c index f56e09d007..1058a840ef 100644 --- a/time/zdump.c +++ b/time/zdump.c @@ -1,6 +1,6 @@ #ifndef lint #ifndef NOID -static char elsieid[] = "@(#)zdump.c 7.23"; +static char elsieid[] = "@(#)zdump.c 7.24"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -208,9 +208,10 @@ _("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"), static char buf[MAX_STRING_LENGTH]; (void) strcpy(&fakeenv[0][3], argv[i]); - show(argv[i], now, FALSE); - if (!vflag) + if (!vflag) { + show(argv[i], now, FALSE); continue; + } /* ** Get lowest value of t. */ diff --git a/time/zic.c b/time/zic.c index 756b7eb84a..0cec89369c 100644 --- a/time/zic.c +++ b/time/zic.c @@ -1,6 +1,6 @@ #ifndef lint #ifndef NOID -static char elsieid[] = "@(#)zic.c 7.62"; +static char elsieid[] = "@(#)zic.c 7.77"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -335,8 +335,10 @@ static const int len_years[2] = { DAYSPERNYEAR, DAYSPERLYEAR }; -static time_t ats[TZ_MAX_TIMES]; -static unsigned char types[TZ_MAX_TIMES]; +static struct attype { + time_t at; + unsigned char type; +} attypes[TZ_MAX_TIMES]; static long gmtoffs[TZ_MAX_TYPES]; static char isdsts[TZ_MAX_TYPES]; static unsigned char abbrinds[TZ_MAX_TYPES]; @@ -427,11 +429,22 @@ const char * const string; } static void +warning(string) +const char * const string; +{ + char * cp; + + cp = ecpyalloc("warning: "); + cp = ecatalloc(cp, string); + error(string); + ifree(cp); + --errors; +} + +static void usage P((void)) { - (void) fprintf(stderr, _("%s: usage is %s \ -[ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n\ -\t[ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), + (void) fprintf(stderr, _("%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n\t[ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), progname, progname); (void) exit(EXIT_FAILURE); } @@ -622,8 +635,7 @@ const char * const tofile; */ #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(time_t) < MAX_BITS_IN_FILE) ? TYPE_BIT(time_t) : MAX_BITS_IN_FILE) static void setboundaries P((void)) @@ -681,11 +693,37 @@ associate P((void)) register struct zone * zp; register struct rule * rp; register int base, out; - register int i; + register int i, j; - if (nrules != 0) + if (nrules != 0) { (void) qsort((void *) rules, (size_t) nrules, (size_t) sizeof *rules, rcomp); + for (i = 0; i < nrules - 1; ++i) { + if (strcmp(rules[i].r_name, + rules[i + 1].r_name) != 0) + continue; + if (strcmp(rules[i].r_filename, + rules[i + 1].r_filename) == 0) + continue; + eat(rules[i].r_filename, rules[i].r_linenum); + warning(_("same rule name in multiple files")); + eat(rules[i + 1].r_filename, rules[i + 1].r_linenum); + warning(_("same rule name in multiple files")); + for (j = i + 2; j < nrules; ++j) { + if (strcmp(rules[i].r_name, + rules[j].r_name) != 0) + break; + if (strcmp(rules[i].r_filename, + rules[j].r_filename) == 0) + continue; + if (strcmp(rules[i + 1].r_filename, + rules[j].r_filename) == 0) + continue; + break; + } + i = j - 1; + } + } for (i = 0; i < nzones; ++i) { zp = &zones[i]; zp->z_rules = NULL; @@ -1010,8 +1048,7 @@ const int iscont; 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; } } @@ -1319,6 +1356,18 @@ FILE * const fp; (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp); } +static int +atcomp(avp, bvp) +void * avp; +void * bvp; +{ + if (((struct attype *) avp)->at < ((struct attype *) bvp)->at) + return -1; + else if (((struct attype *) avp)->at > ((struct attype *) bvp)->at) + return 1; + else return 0; +} + static void writezone(name) const char * const name; @@ -1327,7 +1376,50 @@ const char * const name; register int i, j; static char * fullname; static struct tzhead tzh; + time_t ats[TZ_MAX_TIMES]; + unsigned char types[TZ_MAX_TIMES]; + /* + ** Sort. + */ + if (timecnt > 1) + (void) qsort((void *) attypes, (size_t) timecnt, + (size_t) sizeof *attypes, atcomp); + /* + ** Optimize. + */ + { + int fromi; + int toi; + + toi = 0; + fromi = 0; + if (isdsts[0] == 0) + while (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) + attypes[toi++] = attypes[fromi]; + } + timecnt = toi; + } + /* + ** Transfer. + */ + for (i = 0; i < timecnt; ++i) { + ats[i] = attypes[i].at; + types[i] = attypes[i].type; + } fullname = erealloc(fullname, (int) (strlen(directory) + 1 + strlen(name) + 1)); (void) sprintf(fullname, "%s/%s", directory, name); @@ -1347,8 +1439,7 @@ const char * const name; convert(eitol(timecnt), tzh.tzh_timecnt); convert(eitol(typecnt), tzh.tzh_typecnt); convert(eitol(charcnt), tzh.tzh_charcnt); -#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_reserved); DO(tzh_ttisgmtcnt); DO(tzh_ttisstdcnt); @@ -1440,7 +1531,6 @@ const int zonecount; register long stdoff; register int year; register long startoff; - register int startisdst; register int startttisstd; register int startttisgmt; register int type; @@ -1448,7 +1538,6 @@ const int zonecount; INITIALIZE(untiltime); INITIALIZE(starttime); - INITIALIZE(startoff); /* ** Now. . .finally. . .generate some useful data! */ @@ -1473,7 +1562,8 @@ const int zonecount; continue; gmtoff = zp->z_gmtoff; eat(zp->z_filename, zp->z_linenum); - startisdst = -1; + *startbuf = '\0'; + startoff = zp->z_gmtoff; if (zp->z_nrules == 0) { stdoff = zp->z_stdoff; doabbr(startbuf, zp->z_format, @@ -1481,8 +1571,10 @@ const int zonecount; type = addtype(oadd(zp->z_gmtoff, stdoff), startbuf, stdoff != 0, startttisstd, startttisgmt); - if (usestart) + if (usestart) { addtt(starttime, type); + usestart = FALSE; + } else if (stdoff != 0) addtt(min_time, type); } else for (year = min_year; year <= max_year; ++year) { @@ -1553,36 +1645,25 @@ const int zonecount; rp->r_todo = FALSE; if (useuntil && ktime >= untiltime) break; + stdoff = rp->r_stdoff; + if (usestart && ktime == starttime) + usestart = FALSE; if (usestart) { - if (ktime < starttime) { - stdoff = rp->r_stdoff; - startoff = oadd(zp->z_gmtoff, - rp->r_stdoff); - doabbr(startbuf, zp->z_format, - rp->r_abbrvar, - rp->r_stdoff != 0); - startisdst = rp->r_stdoff != 0; - continue; - } - usestart = FALSE; - if (ktime != starttime) { - if (startisdst < 0 && - zp->z_gmtoff != - (zp - 1)->z_gmtoff) { - type = (timecnt == 0) ? 0 : - types[timecnt - 1]; - startoff = oadd(gmtoffs[type], - -(zp - 1)->z_gmtoff); - startisdst = startoff != 0; - startoff = oadd(startoff, - zp->z_gmtoff); - (void) strcpy(startbuf, - &chars[abbrinds[type]]); + if (ktime < starttime) { + startoff = oadd(zp->z_gmtoff, + stdoff); + doabbr(startbuf, zp->z_format, + rp->r_abbrvar, + rp->r_stdoff != 0); + continue; + } + if (*startbuf == '\0' && + startoff == oadd(zp->z_gmtoff, + stdoff)) { + doabbr(startbuf, zp->z_format, + rp->r_abbrvar, + rp->r_stdoff != 0); } - if (startisdst >= 0) -addtt(starttime, addtype(startoff, startbuf, startisdst, startttisstd, - startttisgmt)); - } } eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum); @@ -1592,18 +1673,34 @@ addtt(starttime, addtype(startoff, startbuf, startisdst, startttisstd, type = addtype(offset, buf, rp->r_stdoff != 0, rp->r_todisstd, rp->r_todisgmt); addtt(ktime, type); - stdoff = rp->r_stdoff; } } + if (usestart) { + if (*startbuf == '\0' && + zp->z_format != NULL && + strchr(zp->z_format, '%') == NULL && + strchr(zp->z_format, '/') == NULL) + (void) strcpy(startbuf, zp->z_format); + eat(zp->z_filename, zp->z_linenum); + if (*startbuf == '\0') +error(_("can't determine time zone abbrevation to use just after until time")); + else addtt(starttime, + addtype(startoff, startbuf, + startoff != zp->z_gmtoff, + startttisstd, + startttisgmt)); + } /* ** Now we may get to set starttime for the next zone line. */ if (useuntil) { - starttime = tadd(zp->z_untiltime, -gmtoff); startttisstd = zp->z_untilrule.r_todisstd; startttisgmt = zp->z_untilrule.r_todisgmt; + starttime = zp->z_untiltime; if (!startttisstd) starttime = tadd(starttime, -stdoff); + if (!startttisgmt) + starttime = tadd(starttime, -gmtoff); } } writezone(zpfirst->z_name); @@ -1614,16 +1711,12 @@ addtt(starttime, type) const time_t starttime; const int type; { - if (timecnt != 0 && type == types[timecnt - 1]) - return; /* easy enough! */ - if (timecnt == 0 && type == 0 && isdsts[0] == 0) - return; /* handled by default rule */ if (timecnt >= TZ_MAX_TIMES) { error(_("too many transitions?!")); (void) exit(EXIT_FAILURE); } - ats[timecnt] = starttime; - types[timecnt] = type; + attypes[timecnt].at = starttime; + attypes[timecnt].type = type; ++timecnt; } @@ -1637,6 +1730,18 @@ const int ttisgmt; { register int i, j; + if (isdst != TRUE && isdst != FALSE) { + error(_("internal error - addtype called with bad isdst")); + (void) exit(EXIT_FAILURE); + } + if (ttisstd != TRUE && ttisstd != FALSE) { + error(_("internal error - addtype called with bad ttisstd")); + (void) exit(EXIT_FAILURE); + } + if (ttisgmt != TRUE && ttisgmt != FALSE) { + error(_("internal error - addtype called with bad ttisgmt")); + (void) exit(EXIT_FAILURE); + } /* ** See if there's already an entry for this zone type. ** If so, just return its index. |