* time/tzfile.h, time/private.h, time/zdump.c, time/zic.c,
authorRoland McGrath <roland@gnu.org>
Wed, 5 Jun 1996 23:25:04 +0000 (23:25 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 5 Jun 1996 23:25:04 +0000 (23:25 +0000)
  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.

16 files changed:
ChangeLog
Make-dist
Makerules
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/alpha/Makefile
sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist [deleted file]
time/africa
time/asia
time/australasia
time/europe
time/northamerica
time/private.h
time/southamerica
time/tzfile.h
time/zdump.c
time/zic.c

index ef3680f..c85d427 100644 (file)
--- 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
index 02bffc4..f0c1620 100644 (file)
--- 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.
index e2878e1..d770957 100644 (file)
--- 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
index 412227a..ec5119e 100644 (file)
@@ -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
index beb8441..e6e421d 100644 (file)
@@ -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 (file)
index 69d16ac..0000000
+++ /dev/null
@@ -1 +0,0 @@
-sys-sig.S
index ddb472d..d55b598 100644 (file)
@@ -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"
index c9cdc7e..a5d0ab5 100644 (file)
--- 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
 #      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*
 
 ###############################################################################
 
+# 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):
index 8c92a5b..960f9e3 100644 (file)
@@ -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.
index 04273d2..b96f235 100644 (file)
@@ -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)*
 # 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
 # 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
 
 ###############################################################################
 
index d142790..1d0342a 100644 (file)
@@ -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]
index 69fcca3..f81bf48 100644 (file)
@@ -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 */
 
index 893d038..c3c5c99 100644 (file)
@@ -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
index f08134c..cb9b6a1 100644 (file)
@@ -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 */
 
index f56e09d..1058a84 100644 (file)
@@ -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.
                */
index 756b7eb..0cec893 100644 (file)
@@ -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.