Hello community,

here is the log from the commit of package timezone for openSUSE:Factory 
checked in at 2018-05-10 15:43:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/timezone (Old)
 and      /work/SRC/openSUSE:Factory/.timezone.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "timezone"

Thu May 10 15:43:48 2018 rev:120 rq:603922 version:2018e

Changes:
--------
--- /work/SRC/openSUSE:Factory/timezone/timezone-java.changes   2018-03-30 
11:55:46.874992122 +0200
+++ /work/SRC/openSUSE:Factory/.timezone.new/timezone-java.changes      
2018-05-10 15:43:51.085465001 +0200
@@ -1,0 +2,8 @@
+Fri May  4 05:57:53 UTC 2018 - [email protected]
+
+- timezone update 2018e:
+  * North Korea switches back from +0830 to +09 on 2018-05-05.
+  * Ireland's standard time is in the summer, with negative DST
+    offset to standard time used in Winter (bsc#1073299)
+
+-------------------------------------------------------------------
timezone.changes: same change

Old:
----
  tzcode2018d.tar.gz
  tzcode2018d.tar.gz.asc
  tzdata2018d.tar.gz
  tzdata2018d.tar.gz.asc

New:
----
  tzcode2018e.tar.gz
  tzcode2018e.tar.gz.asc
  tzdata2018e.tar.gz
  tzdata2018e.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ timezone-java.spec ++++++
--- /var/tmp/diff_new_pack.I1CCf4/_old  2018-05-10 15:43:52.029430405 +0200
+++ /var/tmp/diff_new_pack.I1CCf4/_new  2018-05-10 15:43:52.033430258 +0200
@@ -25,7 +25,7 @@
 # COMMON-BEGIN
 License:        BSD-3-Clause and SUSE-Public-Domain
 Group:          System/Base
-Version:        2018d
+Version:        2018e
 Release:        0
 Source:         
https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz
 Source1:        
https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz

++++++ timezone.spec ++++++
--- /var/tmp/diff_new_pack.I1CCf4/_old  2018-05-10 15:43:52.069428939 +0200
+++ /var/tmp/diff_new_pack.I1CCf4/_new  2018-05-10 15:43:52.077428646 +0200
@@ -23,7 +23,7 @@
 Url:            http://www.iana.org/time-zones
 PreReq:         filesystem, coreutils
 # COMMON-BEGIN
-Version:        2018d
+Version:        2018e
 Release:        0
 Source:         
https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz
 Source1:        
https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz



++++++ tzcode2018d.tar.gz -> tzcode2018e.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Makefile new/Makefile
--- old/Makefile        2018-03-21 00:10:33.000000000 +0100
+++ new/Makefile        2018-04-30 21:46:32.000000000 +0200
@@ -21,7 +21,7 @@
 
 # Change the line below for your time zone (after finding the zone you want in
 # the time zone files, or adding it to a time zone file).
-# Alternately, if you discover you've got the wrong time zone, you can just
+# Alternatively, if you discover you've got the wrong time zone, you can just
 #      zic -l rightzone
 # to correct things.
 # Use the command
@@ -38,7 +38,7 @@
 # template file are used to determine "spring forward" and "fall back" days and
 # times; the environment variable itself specifies UT offsets of standard and
 # daylight saving time.
-# Alternately, if you discover you've got the wrong time zone, you can just
+# Alternatively, if you discover you've got the wrong time zone, you can just
 #      zic -p rightzone
 # to correct things.
 # Use the command
@@ -236,14 +236,16 @@
   $(GCC_INSTRUMENT) \
   -Wall -Wextra \
   -Walloc-size-larger-than=100000 -Warray-bounds=2 \
-  -Wbad-function-cast -Wcast-align -Wdate-time \
+  -Wbad-function-cast -Wcast-align=strict -Wdate-time \
   -Wdeclaration-after-statement -Wdouble-promotion \
   -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
   -Winit-self -Wjump-misses-init -Wlogical-op \
   -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
   -Wold-style-definition -Woverlength-strings -Wpointer-arith \
-  -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=5 \
+  -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=4 \
+  -Wstringop-truncation -Wsuggest-attribute=cold \
   -Wsuggest-attribute=const -Wsuggest-attribute=format \
+  -Wsuggest-attribute=malloc \
   -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
   -Wtrampolines -Wundef -Wuninitialized -Wunused \
   -Wvariadic-macros -Wvla -Wwrite-strings \
@@ -514,6 +516,7 @@
                tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
                workman.sh yearistype.sh \
                zdump.8 zdump.c zic.8 zic.c \
+               ziguard.awk zishrink.awk \
                zone.tab zone1970.tab zoneinfo2tdf.pl
 
 # And for the benefit of csh users on systems that assume the user
@@ -559,8 +562,8 @@
 
 # These files can be tailored by setting BACKWARD, PACKRATDATA, etc.
 vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS)
-               $(AWK) -v outfile='$@' -f ziguard.awk $(TDATA) $(PACKRATDATA) \
-                 >[email protected]
+               $(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \
+                 $(TDATA) $(PACKRATDATA) >[email protected]
                mv [email protected] $@
 tzdata.zi:     $(DATAFORM).zi version
                version=`sed 1q version` && \
@@ -900,6 +903,13 @@
                done
                rm -fr time_t.dir
 
+TRADITIONAL_ASC = \
+  tzcode$(VERSION).tar.gz.asc \
+  tzdata$(VERSION).tar.gz.asc
+ALL_ASC = $(TRADITIONAL_ASC) \
+  tzdata$(VERSION)-rearguard.tar.gz.asc \
+  tzdb-$(VERSION).tar.lz.asc
+
 tarballs traditional_tarballs signatures traditional_signatures: version
                VERSION=`cat version` && \
                $(MAKE) VERSION="$$VERSION" $@_version
@@ -907,12 +917,13 @@
 # These *_version rules are intended for use if VERSION is set by some
 # other means.  Ordinarily these rules are used only by the above
 # non-_version rules, which set VERSION on the 'make' command line.
-tarballs_version: traditional_tarballs_version tzdb-$(VERSION).tar.lz
+tarballs_version: traditional_tarballs_version \
+  tzdata$(VERSION)-rearguard.tar.gz \
+  tzdb-$(VERSION).tar.lz
 traditional_tarballs_version: \
   tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
-signatures_version: traditional_signatures_version tzdb-$(VERSION).tar.lz.asc
-traditional_signatures_version: \
-  tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc \
+signatures_version: $(ALL_ASC)
+traditional_signatures_version: $(TRADITIONAL_ASC)
 
 tzcode$(VERSION).tar.gz: set-timestamps.out
                LC_ALL=C && export LC_ALL && \
@@ -927,6 +938,26 @@
                  gzip $(GZIPFLAGS) >[email protected]
                mv [email protected] $@
 
+tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
+               rm -fr tzdata$(VERSION)-rearguard.dir
+               mkdir tzdata$(VERSION)-rearguard.dir
+               ln $(COMMON) $(DATA) $(MISC) tzdata$(VERSION)-rearguard.dir
+               cd tzdata$(VERSION)-rearguard.dir && \
+                 rm -f $(TDATA) $(PACKRATDATA) version
+               for f in $(TDATA) $(PACKRATDATA); do \
+                 rearf=tzdata$(VERSION)-rearguard.dir/$$f; \
+                 $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
+                 touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \
+               done
+               sed '1s/$$/-rearguard/' \
+                 <version >tzdata$(VERSION)-rearguard.dir/version
+               touch -cmr version tzdata$(VERSION)-rearguard.dir/version
+               LC_ALL=C && export LC_ALL && \
+                 (cd tzdata$(VERSION)-rearguard.dir && \
+                  tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \
+                    gzip $(GZIPFLAGS)) >[email protected]
+               mv [email protected] $@
+
 tzdb-$(VERSION).tar.lz: set-timestamps.out
                rm -fr tzdb-$(VERSION)
                mkdir tzdb-$(VERSION)
@@ -937,12 +968,10 @@
                mv [email protected] $@
 
 tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz
-               gpg --armor --detach-sign $?
-
 tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz
-               gpg --armor --detach-sign $?
-
+tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz
 tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz
+$(ALL_ASC):
                gpg --armor --detach-sign $?
 
 typecheck:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/NEWS new/NEWS
--- old/NEWS    2018-03-22 15:08:41.000000000 +0100
+++ new/NEWS    2018-05-02 08:44:22.000000000 +0200
@@ -1,5 +1,69 @@
 News for the tz database
 
+Release 2018e - 2018-05-01 23:42:51 -0700
+
+  Briefly:
+
+    North Korea switches back to +09 on 2018-05-05.
+    The main format uses negative DST again, for Ireland etc.
+    'make tarballs' now also builds a rearguard tarball.
+    New 's' and 'd' suffixes in SAVE columns of Rule and Zone lines.
+
+  Changes to past and future time stamps
+
+    North Korea switches back from +0830 to +09 on 2018-05-05.
+    (Thanks to Kang Seonghoon, Arthur David Olson, Seo Sanghyeon,
+    and Tim Parenti.)
+
+    Bring back the negative-DST changes of 2018a, except be more
+    compatible with data parsers that do not support negative DST.
+    Also, this now affects historical time stamps in Namibia and the
+    former Czechoslovakia, not just Ireland.  The main format now uses
+    negative DST to model time stamps in Europe/Dublin (from 1971 on),
+    Europe/Prague (1946/7), and Africa/Windhoek (1994/2017).  This
+    does not affect UT offsets, only time zone abbreviations and the
+    tm_isdst flag.  Also, this does not affect rearguard or vanguard
+    formats; effectively the main format now uses vanguard instead of
+    rearguard format.  Data parsers that do not support negative DST
+    can still use data from the rearguard tarball described below.
+
+  Changes to build procedure
+
+    The command 'make tarballs' now also builds the tarball
+    tzdataVERSION-rearguard.tar.gz, which is like tzdataVERSION.tar.gz
+    except that it uses rearguard format intended for trailing-edge
+    data parsers.
+
+  Changes to data format and to code
+
+    The SAVE column of Rule and Zone lines can now have an 's' or 'd'
+    suffix, which specifies whether the adjusted time is standard time
+    or daylight saving time.  If no suffix is given, daylight saving
+    time is used if and only if the SAVE column is nonzero; this is
+    the longstanding behavior.  Although this new feature is not used
+    in tzdata, it could be used to specify the legal time in Namibia
+    1994-2017, as opposed to the popular time (see below).
+
+  Changes to past time stamps
+
+    From 1994 through 2017 Namibia observed DST in winter, not summer.
+    That is, it used negative DST, as Ireland still does.  This change
+    does not affect UTC offsets; it affects only the tm_isdst flag and
+    the abbreviation used during summer, which is now CAT, not WAST.
+    Although (as noted by Michael Deckers) summer and winter time were
+    both simply called "standard time" in Namibian law, in common
+    practice winter time was considered to be DST (as noted by Stephen
+    Colebourne).  The full effect of this change is only in vanguard
+    format; in rearguard and main format, the tm_isdst flag is still
+    zero in winter and nonzero in summer.
+
+    In 1946/7 Czechoslovakia also observed negative DST in winter.
+    The full effect of this change is only in vanguard format; in
+    rearguard and main formats, it is modeled as plain GMT without
+    daylight saving.  Also, the dates of some 1944/5 DST transitions
+    in Czechoslovakia have been changed.
+
+
 Release 2018d - 2018-03-22 07:05:46 -0700
 
   Briefly:
@@ -39,7 +103,7 @@
     Enderbury and Kiritimati skipped New Year's Eve 1994, not
     New Year's Day 1995.  (Thanks to Kerry Shetline.)
 
-    Fix the 1912-01-01 transition for Portugual and its colonies.
+    Fix the 1912-01-01 transition for Portugal and its colonies.
     This transition was at 00:00 according to the new UT offset, not
     according to the old one.  Also assume that Cape Verde switched on
     the same date as the rest, not in 1907.  This affects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asctime.c new/asctime.c
--- old/asctime.c       2017-06-13 07:14:22.000000000 +0200
+++ new/asctime.c       2018-04-15 20:02:54.000000000 +0200
@@ -1,3 +1,5 @@
+/* asctime and asctime_r a la POSIX and ISO C, except pad years before 1000.  
*/
+
 /*
 ** This file is in the public domain, so clarified as of
 ** 1996-06-05 by Arthur David Olson.
@@ -29,7 +31,7 @@
 ** leading zeroes to get the newline in the traditional place.
 ** The -4 ensures that we get four characters of output even if
 ** we call a strftime variant that produces fewer characters for some years.
-** The ISO C 1999 and POSIX 1003.1-2004 standards prohibit padding the year,
+** The ISO C and POSIX standards prohibit padding the year,
 ** but many implementations pad anyway; most likely the standards are buggy.
 */
 #ifdef __GNUC__
@@ -64,10 +66,6 @@
 
 static char    buf_asctime[MAX_ASCTIME_BUF_SIZE];
 
-/*
-** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, 2004 Edition.
-*/
-
 char *
 asctime_r(register const struct tm *timeptr, char *buf)
 {
@@ -117,10 +115,6 @@
        }
 }
 
-/*
-** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, 2004 Edition.
-*/
-
 char *
 asctime(register const struct tm *timeptr)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/localtime.c new/localtime.c
--- old/localtime.c     2018-02-15 09:02:19.000000000 +0100
+++ new/localtime.c     2018-04-15 20:02:54.000000000 +0200
@@ -88,9 +88,8 @@
 /*
 ** The DST rules to use if TZ has no rules and we can't load TZDEFRULES.
 ** Default to US rules as of 2017-05-07.
-** POSIX 1003.1 section 8.1.1 says that the default DST rules are
-** implementation dependent; for historical reasons, US rules are a
-** common default.
+** POSIX does not specify the default DST rules;
+** for historical reasons, US rules are a common default.
 */
 #ifndef TZDEFRULESTRING
 #define TZDEFRULESTRING ",M3.2.0,M11.1.0"
@@ -2211,7 +2210,7 @@
 #ifdef STD_INSPIRED
 
 /*
-** IEEE Std 1003.1-1988 (POSIX) legislates that 536457599
+** IEEE Std 1003.1 (POSIX) says that 536457599
 ** shall correspond to "Wed Dec 31 23:59:59 UTC 1986", which
 ** is not the case if we are accounting for leap seconds.
 ** So, we provide the following conversion routines for use
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/private.h new/private.h
--- old/private.h       2018-02-15 00:57:41.000000000 +0100
+++ new/private.h       2018-05-01 18:42:31.000000000 +0200
@@ -342,12 +342,14 @@
 #define SIZE_MAX ((size_t) -1)
 #endif
 
-#if 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#if 3 <= __GNUC__
 # define ATTRIBUTE_CONST __attribute__ ((const))
+# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
 # define ATTRIBUTE_PURE __attribute__ ((__pure__))
 # define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
 #else
 # define ATTRIBUTE_CONST /* empty */
+# define ATTRIBUTE_MALLOC /* empty */
 # define ATTRIBUTE_PURE /* empty */
 # define ATTRIBUTE_FORMAT(spec) /* empty */
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/strftime.c new/strftime.c
--- old/strftime.c      2017-09-24 03:21:34.000000000 +0200
+++ new/strftime.c      2018-04-09 02:56:56.000000000 +0200
@@ -224,7 +224,7 @@
                                **      %Ec %EC %Ex %EX %Ey %EY
                                **      %Od %oe %OH %OI %Om %OM
                                **      %OS %Ou %OU %OV %Ow %OW %Oy
-                               ** are supposed to provide alternate
+                               ** are supposed to provide alternative
                                ** representations.
                                */
                                goto label;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/theory.html new/theory.html
--- old/theory.html     2018-03-18 23:19:29.000000000 +0100
+++ new/theory.html     2018-04-15 20:02:54.000000000 +0200
@@ -32,7 +32,7 @@
 It organizes <a href="tz-link.html">time zone and daylight saving time
 data</a> by partitioning the world into <a
 href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones";>regions</a>
-whose clocks all agree about timestamps that occur after the of the <a
+whose clocks all agree about timestamps that occur after the <a
 href="https://en.wikipedia.org/wiki/Unix_time";>POSIX Epoch</a>
 (1970-01-01 00:00:00 <a
 href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time";><abbr
@@ -53,7 +53,7 @@
 applications requiring accurate handling of all past times everywhere,
 as it would take far too much effort and guesswork to record all
 details of pre-1970 civil timekeeping.
-Athough some information outside the scope of the database is
+Although some information outside the scope of the database is
 collected in a file <code>backzone</code> that is distributed along
 with the database proper, this file is less reliable and does not
 necessarily follow database guidelines.
@@ -68,7 +68,7 @@
 href="https://en.wikipedia.org/wiki/Unix";>UNIX</a>-like systems.
 As of this writing, the current edition of POSIX is: <a
 href="http://pubs.opengroup.org/onlinepubs/9699919799/";> The Open
-Group Base Specifications Issue 7</a>, IEEE Std 1003.1-2008, 2016
+Group Base Specifications Issue 7</a>, IEEE Std 1003.1-2017, 2018
 Edition.
 Because the database's scope encompasses real-world changes to civil
 timekeeping, its model for describing time is more complex than the
@@ -79,7 +79,7 @@
 can change at times.
 Whether and when a <code><abbr>tz</abbr></code> region changes its
 clock, and even the region's notional base offset from UTC, are variable.
-It doesn't even really make sense to talk about a region's
+It does not always make sense to talk about a region's
 "base offset", since it is not necessarily a single number.
 </p>
 
@@ -92,8 +92,8 @@
 corresponds to a set of time zone rules.
 Inexperienced users are not expected to select these names unaided.
 Distributors should provide documentation and/or a simple selection
-interface that explains the names; for one example, see the 'tzselect'
-program in the <code><abbr>tz</abbr></code> code.
+interface that explains the names; for one example, see the
+<code>tzselect</code> program in the <code><abbr>tz</abbr></code> code.
 The <a href="http://cldr.unicode.org/";>Unicode Common Locale Data
 Repository</a> contains data that may be useful for other selection
 interfaces.
@@ -137,6 +137,9 @@
 North and South America share the same area, '<code>America</code>'.
 Typical names are '<code>Africa/Cairo</code>',
 '<code>America/New_York</code>', and '<code>Pacific/Honolulu</code>'.
+Some names are further qualified to help avoid confusion; for example,
+'<code>America/Indiana/Petersburg</code>' distinguishes Petersburg,
+Indiana from other Petersburgs in America.
 </p>
 
 <p>
@@ -159,7 +162,8 @@
     <code>TZ</code> strings</a>.
     A file name component must not exceed 14 characters or start with
     '<code>-</code>'.
-    E.g., prefer '<code>Brunei</code>' to '<code>Bandar_Seri_Begawan</code>'.
+    E.g., prefer <code>Asia/Brunei</code> to
+    <code>Asia/Bandar_Seri_Begawan</code>.
     Exceptions: see the discussion of legacy names below.
   </li>
   <li>
@@ -177,8 +181,8 @@
     name <var>AB</var> (ignoring case), then <var>B</var> must not
     start with '<code>/</code>', as a regular file cannot have the
     same name as a directory in POSIX.
-    For example, '<code>America/New_York</code>' precludes
-    '<code>America/New_York/Bronx</code>'.
+    For example, <code>America/New_York</code> precludes
+    <code>America/New_York/Bronx</code>.
   </li>
   <li>
     Uninhabited regions like the North Pole and Bouvet Island
@@ -193,50 +197,56 @@
   </li>
   <li>
     If all the clocks in a region have agreed since 1970,
-    don't bother to include more than one location
+    do not bother to include more than one location
     even if subregions' clocks disagreed before 1970.
     Otherwise these tables would become annoyingly large.
   </li>
   <li>
     If a name is ambiguous, use a less ambiguous alternative;
     e.g., many cities are named San José and Georgetown, so
-    prefer '<code>Costa_Rica</code>' to '<code>San_Jose</code>' and
-    '<code>Guyana</code>' to '<code>Georgetown</code>'.
+    prefer <code>America/Costa_Rica</code> to
+    <code>America/San_Jose</code> and <code>America/Guyana</code>
+    to <code>America/Georgetown</code>.
   </li>
   <li>
     Keep locations compact.
     Use cities or small islands, not countries or regions, so that any
     future changes do not split individual locations into different
     <code><abbr>tz</abbr></code> regions.
-    E.g., prefer '<code>Paris</code>' to '<code>France</code>', since
+    E.g., prefer <code>Europe/Paris</code> to <code>Europe/France</code>,
+    since
     <a href="https://en.wikipedia.org/wiki/Time_in_France#History";>France
     has had multiple time zones</a>.
   </li>
   <li>
-    Use mainstream English spelling, e.g., prefer '<code>Rome</code>'
-    to '<code>Roma</code>', and prefer '<code>Athens</code>' to the
-    Greek '<code>Αθήνα</code>' or the Romanized '<code>Athína</code>'.
+    Use mainstream English spelling, e.g., prefer
+    <code>Europe/Rome</code> to <code>Europe/Roma</code>, and
+    prefer <code>Europe/Athens</code> to the Greek
+    <code>Europe/Αθήνα</code> or the Romanized
+    <code>Europe/Athína</code>.
     The POSIX file name restrictions encourage this guideline.
   </li>
   <li>
     Use the most populous among locations in a region,
-    e.g., prefer '<code>Shanghai</code>' to
-    '<code>Beijing</code>'.
+    e.g., prefer <code>Asia/Shanghai</code> to
+    <code>Asia/Beijing</code>.
     Among locations with similar populations, pick the best-known
-    location, e.g., prefer '<code>Rome</code>' to
-    '<code>Milan</code>'.
+    location, e.g., prefer <code>Europe/Rome</code> to
+    <code>Europe/Milan</code>.
   </li>
   <li>
-    Use the singular form, e.g., prefer '<code>Canary</code>' to
-    '<code>Canaries</code>'.
+    Use the singular form, e.g., prefer <code>Atlantic/Canary</code> to
+    <code>Atlantic/Canaries</code>.
   </li>
   <li>
     Omit common suffixes like '<code>_Islands</code>' and
     '<code>_City</code>', unless that would lead to ambiguity.
-    E.g., prefer '<code>Cayman</code>' to
-    '<code>Cayman_Islands</code>' and '<code>Guatemala</code>' to
-    '<code>Guatemala_City</code>', but prefer
-    '<code>Mexico_City</code>' to '<code>Mexico</code>'
+    E.g., prefer <code>America/Cayman</code> to
+    <code>America/Cayman_Islands</code> and
+    <code>America/Guatemala</code> to
+    <code>America/Guatemala_City</code>, but prefer
+    <code>America/Mexico_City</code> to
+    <code>America/Mexico</code>
     because <a href="https://en.wikipedia.org/wiki/Time_in_Mexico";>the
     country of Mexico has several time zones</a>.
   </li>
@@ -245,13 +255,14 @@
   </li>
   <li>
     Omit '<code>.</code>' from abbreviations in names.
-    E.g., prefer '<code>St_Helena</code>' to '<code>St._Helena</code>'.
+    E.g., prefer <code>Atlantic/St_Helena</code> to
+    <code>Atlantic/St._Helena</code>.
   </li>
   <li>
     Do not change established names if they only marginally violate
     the above guidelines.
-    For example, don't change the existing name '<code>Rome</code>' to
-    '<code>Milan</code>' merely because Milan's population has grown
+    For example, do not change the existing name <code>Europe/Rome</code> to
+    <code>Europe/Milan</code> merely because Milan's population has grown
     to be somewhat greater than Rome's.
   </li>
   <li>
@@ -318,8 +329,10 @@
     Use three to six characters that are ASCII alphanumerics or
     '<code>+</code>' or '<code>-</code>'.
     Previous editions of this database also used characters like
-    '<code> </code>' and '<code>?</code>', but these characters have a
-    special meaning to the shell and cause commands like
+    space and '<code>?</code>', but these characters have a
+    special meaning to the
+    <a href="https://en.wikipedia.org/wiki/Unix_shell";>UNIX shell</a>
+    and cause commands like
     '<code><a 
href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set";>set</a>
     `<a 
href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html";>date</a>`</code>'
     to have unexpected effects.
@@ -688,7 +701,7 @@
     subsecond accuracy is needed.
   </li>
   <li>
-    Civil time was not based on atomic time before 1972, and we don't
+    Civil time was not based on atomic time before 1972, and we do not
     know the history of
     <a href="https://en.wikipedia.org/wiki/Earth's_rotation">earth's
     rotation</a> accurately enough to map <a
@@ -720,7 +733,7 @@
     Ideally it would contain information about when data entries are
     incomplete or dicey.
     Partial temporal knowledge is a field of active research, though,
-    and it's not clear how to apply it here.
+    and it is not clear how to apply it here.
   </li>
 </ul>
 
@@ -764,7 +777,7 @@
     Unfortunately, the POSIX
     <code>TZ</code> string takes a form that is hard to describe and
     is error-prone in practice.
-    Also, POSIX <code>TZ</code> strings can't deal with daylight
+    Also, POSIX <code>TZ</code> strings cannot deal with daylight
     saving time rules not based on the Gregorian calendar (as in
     Iran), or with situations where more than two time zone
     abbreviations or <abbr>UT</abbr> offsets are used in an area.
@@ -874,7 +887,7 @@
     need access to multiple time zone rulesets.
   </li>
   <li>
-    In POSIX, there's no tamper-proof way for a process to learn the
+    In POSIX, there is no tamper-proof way for a process to learn the
     system's best idea of local wall clock.
     (This is important for applications that an administrator wants
     used only at certain times &ndash; without regard to whether the
@@ -973,14 +986,16 @@
     by subsequent calls to <code>localtime</code>.
     Source code for portable applications that "must" run on local wall
     clock time should call <code>tzsetwall</code>;
-    if such code is moved to "old" systems that don't
-    provide <code>tzsetwall</code>, you won't be able to generate an
+    if such code is moved to "old" systems that do not
+    provide <code>tzsetwall</code>, you will not be able to generate an
     executable program.
     (These functions also arrange for local wall clock time to
     be used if <code>tzset</code> is called &ndash; directly or
-    indirectly &ndash; and there's no <code>TZ</code> environment
+    indirectly &ndash; and there is no <code>TZ</code> environment
     variable; portable applications should not, however, rely on this
-    behavior since it's not the way SVR2 systems behave.)
+    behavior since it is not the way <a
+    
href="https://en.wikipedia.org/wiki/UNIX_System_V#SVR2";><abbr>SVR2</abbr></a>
+    systems behave.)
   </li>
   <li>
     Negative <code>time_t</code> values are supported, on systems
@@ -1040,7 +1055,7 @@
   <li>
     The <a href="https://en.wikipedia.org/wiki/Version_7_Unix";>7th Edition
     UNIX</a> <code>timezone</code> function is not present in this
-    package; it's impossible to reliably map <code>timezone</code>'s
+    package; it is impossible to reliably map <code>timezone</code>'s
     arguments (a "minutes west of <abbr>GMT</abbr>" value and a
     "daylight saving time in effect" flag) to a time zone
     abbreviation, and we refuse to guess.
@@ -1052,7 +1067,9 @@
     zone abbreviation to use.
   </li>
   <li>
-    The <abbr>4.2BSD</abbr> <code>gettimeofday</code> function is not
+    The <a
+    
href="https://en.wikipedia.org/wiki/History_of_the_Berkeley_Software_Distribution#4.2BSD";><abbr>4.2BSD</abbr></a>
+    <code>gettimeofday</code> function is not
     used in this package.
     This formerly let users obtain the current <abbr>UTC</abbr> offset
     and <abbr>DST</abbr> flag, but this functionality was removed in
@@ -1061,7 +1078,7 @@
   <li>
     In <abbr>SVR2</abbr>, time conversion fails for near-minimum or
     near-maximum <code>time_t</code> values when doing conversions
-    for places that don't use <abbr>UT</abbr>.
+    for places that do not use <abbr>UT</abbr>.
     This package takes care to do these conversions correctly.
     A comment in the source code tells how to get compatibly wrong
     results.
@@ -1155,10 +1172,10 @@
 Calendrical issues are a bit out of scope for a time zone database,
 but they indicate the sort of problems that we would run into if we
 extended the time zone database further into the past.
-An excellent resource in this area is Nachum Dershowitz and Edward M.
-Reingold, <cite><a
-href="https://www.cs.tau.ac.il/~nachum/calendar-book/third-edition/";>Calendrical
-Calculations: Third Edition</a></cite>, Cambridge University Press (2008).
+An excellent resource in this area is Edward M. Reingold
+and Nachum Dershowitz, <cite><a
+href="https://www.cambridge.org/fr/academic/subjects/computer-science/computing-general-interest/calendrical-calculations-ultimate-edition-4th-edition";>Calendrical
+Calculations: The Ultimate Edition</a></cite>, Cambridge University Press 
(2018).
 Other information and sources are given in the file '<code>calendars</code>'
 in the <code><abbr>tz</abbr></code> distribution.
 They sometimes disagree.
@@ -1170,11 +1187,11 @@
 <p>
 Some people's work schedules
 use <a href="https://en.wikipedia.org/wiki/Timekeeping on Mars">Mars time</a>.
-Jet Propulsion Laboratory (JPL) coordinators have kept Mars time on
-and off at least since 1997 for the
+Jet Propulsion Laboratory (JPL) coordinators kept Mars time on
+and off during the
 <a href="https://en.wikipedia.org/wiki/Mars_Pathfinder#End_of_mission";>Mars
 Pathfinder</a> mission.
-Some of their family members have also adapted to Mars time.
+Some of their family members also adapted to Mars time.
 Dozens of special Mars watches were built for JPL workers who kept
 Mars time during the Mars Exploration Rovers mission (2004).
 These timepieces look like normal Seikos and Citizens but use Mars
@@ -1262,7 +1279,7 @@
     Jia-Rui Chong,
     "<a 
href="http://articles.latimes.com/2004/jan/14/science/sci-marstime14";>Workdays
     Fit for a Martian</a>", <cite>Los Angeles Times</cite>
-    (2004-01-14), pp A1, A20-A21.
+    (2004-01-14), pp A1, A20&ndash;A21.
   </li>
   <li>
     Tom Chmielewski,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tz-link.html new/tz-link.html
--- old/tz-link.html    2018-03-22 15:05:31.000000000 +0100
+++ new/tz-link.html    2018-04-15 00:59:53.000000000 +0200
@@ -239,8 +239,9 @@
 <ul>
 <li><a href="https://time.is";>Time.is</a> shows locations'
 time and zones.</li>
-<li><a href="https://www.timejones.com";>TimeJones.com</a>
-and <a href="https://timezoneconverterapp.com";>Time Zone Converter</a>
+<li><a href="https://www.timejones.com";>TimeJones.com</a>,
+<a href="https://timezoneconverterapp.com";>Time Zone Converter</a> and
+<a href="http://worldclock.com";>The World Clock</a>
 are time zone converters.</li>
 <li><a
 href="http://twiki.org/cgi-bin/xtra/tzdatepick.html";>Date and Time Gateway</a>
@@ -727,6 +728,10 @@
 <dd>The Hydrographic and Oceanographic Service of the Chilean Navy publishes a
 <a href="http://www.horaoficial.cl/historia_hora.html"; hreflang="es">history of
 Chile's official time (in Spanish)</a>.</dd>
+<dt>Czech Republic</dt>
+<dd><a href="https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas";
+hreflang="cs">When daylight saving time starts and ends (in Czech)</a>
+summarizes and cites historical DST regulations.</dd>
 <dt>Germany</dt>
 <dd>The National Institute for Science and Technology maintains the <a
 
href="https://www.ptb.de/cms/en/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in-germany.html";>Realisation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/version new/version
--- old/version 2018-03-22 15:08:41.000000000 +0100
+++ new/version 2018-05-02 08:44:22.000000000 +0200
@@ -1 +1 @@
-2018d
+2018e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zdump.c new/zdump.c
--- old/zdump.c 2018-02-15 00:57:41.000000000 +0100
+++ new/zdump.c 2018-05-01 18:42:31.000000000 +0200
@@ -136,7 +136,7 @@
 
 /* Return a pointer to a newly allocated buffer of size SIZE, exiting
    on failure.  SIZE should be nonzero.  */
-static void *
+static void * ATTRIBUTE_MALLOC
 xmalloc(size_t size)
 {
   void *p = malloc(size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zic.8 new/zic.8
--- old/zic.8   2018-02-10 04:07:22.000000000 +0100
+++ new/zic.8   2018-04-09 04:08:51.000000000 +0200
@@ -165,14 +165,14 @@
 A rule line has the form
 .nf
 .ti +.5i
-.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u 
+\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
+.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u 
+\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00s\0\0'u +\w'1:00d\0\0'u
 .sp
 Rule   NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 .sp
 For example:
 .ti +.5i
 .sp
-Rule   US      1967    1973    \*-     Apr     lastSun 2:00    1:00    D
+Rule   US      1967    1973    \*-     Apr     lastSun 2:00s   1:00d   D
 .sp
 .fi
 The fields that make up a rule line are:
@@ -295,16 +295,24 @@
 .TP
 .B SAVE
 Gives the amount of time to be added to local standard time when the rule is in
-effect.
+effect, and whether the resulting time is standard or daylight saving.
 This field has the same format as the
 .B AT
 field
-(although, of course, the
-suffixes are not used).
+except with a different set of suffix letters:
+.B s
+for standard time and
+.B d
+for daylight saving time.
+The suffix letter is typically omitted, and defaults to
+.B s
+if the offset is zero and to
+.B d
+otherwise.
 Negative offsets are allowed; in Ireland, for example, daylight saving
 time is observed in winter and has a negative offset relative to
 Irish Standard Time.
-Only the sum of standard time and this amount matters; for example,
+The offset is merely added to standard time; for example,
 .I zic
 does not distinguish a 10:30 standard time plus an 0:30
 .B SAVE
@@ -364,7 +372,9 @@
 .TP
 .B RULES
 The name of the rules that apply in the time zone or,
-alternately, an amount of time to add to local standard time.
+alternatively, a field in the same format as a rule-line SAVE column,
+giving of the amount of time to be added to local standard time
+effect, and whether the resulting time is standard or daylight saving.
 If this field is
 .B \*-
 then standard time always applies in the time zone.
@@ -378,7 +388,7 @@
 is used to show where the
 .q "variable part"
 of the time zone abbreviation goes.
-Alternately, a format can use the pair of characters
+Alternatively, a format can use the pair of characters
 .B %z
 to stand for the UT offset in the form
 .RI \(+- hh ,
@@ -391,7 +401,7 @@
 and
 .I ss
 are the hours, minutes, and seconds east (+) or west (\(mi) of UT.
-Alternately,
+Alternatively,
 a slash (/)
 separates standard and daylight abbreviations.
 To conform to POSIX, a time zone abbreviation should contain only
@@ -447,7 +457,7 @@
 field in some zone line.
 The
 .B LINK-NAME
-field is used as an alternate name for that zone;
+field is used as an alternative name for that zone;
 it has the same syntax as a zone line's
 .B NAME
 field.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zic.8.txt new/zic.8.txt
--- old/zic.8.txt       2018-02-10 04:07:22.000000000 +0100
+++ new/zic.8.txt       2018-04-09 04:08:51.000000000 +0200
@@ -111,11 +111,11 @@
 
        A rule line has the form
 
-            Rule  NAME  FROM  TO    TYPE  IN   ON       AT    SAVE  LETTER/S
+            Rule  NAME  FROM  TO    TYPE  IN   ON       AT     SAVE   LETTER/S
 
        For example:
 
-            Rule  US    1967  1973  -     Apr  lastSun  2:00  1:00  D
+            Rule  US    1967  1973  -     Apr  lastSun  2:00s  1:00d  D
 
        The fields that make up a rule line are:
 
@@ -182,14 +182,17 @@
                the specified date and time of day.
 
        SAVE    Gives the amount of time to be added to local standard time
-               when the rule is in effect.  This field has the same format as
-               the AT field (although, of course, the suffixes are not used).
-               Negative offsets are allowed; in Ireland, for example, daylight
-               saving time is observed in winter and has a negative offset
-               relative to Irish Standard Time.  Only the sum of standard time
-               and this amount matters; for example, zic does not distinguish
-               a 10:30 standard time plus an 0:30 SAVE from a 10:00 standard
-               time plus a 1:00 SAVE.
+               when the rule is in effect, and whether the resulting time is
+               standard or daylight saving.  This field has the same format as
+               the AT field except with a different set of suffix letters: s
+               for standard time and d for daylight saving time.  The suffix
+               letter is typically omitted, and defaults to s if the offset is
+               zero and to d otherwise.  Negative offsets are allowed; in
+               Ireland, for example, daylight saving time is observed in
+               winter and has a negative offset relative to Irish Standard
+               Time.  The offset is merely added to standard time; for
+               example, zic does not distinguish a 10:30 standard time plus an
+               0:30 SAVE from a 10:00 standard time plus a 1:00 SAVE.
 
        LETTER/S
                Gives the "variable part" (for example, the "S" or "D" in "EST"
@@ -218,20 +221,22 @@
              subtracted from UT.
 
        RULES The name of the rules that apply in the time zone or,
-             alternately, an amount of time to add to local standard time.  If
-             this field is - then standard time always applies in the time
-             zone.  When an amount of time is given, only the sum of standard
-             time and this amount matters.
+             alternatively, a field in the same format as a rule-line SAVE
+             column, giving of the amount of time to be added to local
+             standard time effect, and whether the resulting time is standard
+             or daylight saving.  If this field is - then standard time always
+             applies in the time zone.  When an amount of time is given, only
+             the sum of standard time and this amount matters.
 
        FORMAT
              The format for time zone abbreviations in this time zone.  The
              pair of characters %s is used to show where the "variable part"
-             of the time zone abbreviation goes.  Alternately, a format can
+             of the time zone abbreviation goes.  Alternatively, a format can
              use the pair of characters %z to stand for the UT offset in the
              form +-hh, +-hhmm, or +-hhmmss, using the shortest form that does
              not lose information, where hh, mm, and ss are the hours,
-             minutes, and seconds east (+) or west (-) of UT.  Alternately, a
-             slash (/) separates standard and daylight abbreviations.  To
+             minutes, and seconds east (+) or west (-) of UT.  Alternatively,
+             a slash (/) separates standard and daylight abbreviations.  To
              conform to POSIX, a time zone abbreviation should contain only
              alphanumeric ASCII characters, "+" and "-".
 
@@ -268,8 +273,8 @@
             Link  Europe/Istanbul  Asia/Istanbul
 
        The TARGET field should appear as the NAME field in some zone line.
-       The LINK-NAME field is used as an alternate name for that zone; it has
-       the same syntax as a zone line's NAME field.
+       The LINK-NAME field is used as an alternative name for that zone; it
+       has the same syntax as a zone line's NAME field.
 
        Except for continuation lines, lines may appear in any order in the
        input.  However, the behavior is unspecified if multiple zone or link
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zic.c new/zic.c
--- old/zic.c   2018-02-05 06:10:31.000000000 +0100
+++ new/zic.c   2018-05-01 18:42:31.000000000 +0200
@@ -89,7 +89,9 @@
                                        /* or wall clock time if 0 */
        bool            r_todisgmt;     /* above is GMT if 1 */
                                        /* or local time if 0 */
-       zic_t           r_stdoff;       /* offset from standard time */
+       bool            r_isdst;        /* is this daylight saving time? */
+       zic_t           r_stdoff;       /* offset from default time (which is
+                                          usually standard time) */
        const char *    r_abbrvar;      /* variable part of abbreviation */
 
        bool            r_todo;         /* a rule to do (used in outzone) */
@@ -110,10 +112,11 @@
 
        const char *    z_name;
        zic_t           z_gmtoff;
-       const char *    z_rule;
+       char *          z_rule;
        const char *    z_format;
        char            z_format_specifier;
 
+       bool            z_isdst;
        zic_t           z_stdoff;
 
        struct rule *   z_rules;
@@ -153,6 +156,7 @@
 static char ** getfields(char * buf);
 static zic_t   gethms(const char * string, const char * errstring,
                       bool);
+static zic_t   getstdoff(char *, bool *);
 static void    infile(const char * filename);
 static void    inleap(char ** fields, int nfields);
 static void    inlink(char ** fields, int nfields);
@@ -443,7 +447,7 @@
        return ptr;
 }
 
-static void *
+static void * ATTRIBUTE_MALLOC
 emalloc(size_t size)
 {
   return memcheck(malloc(size));
@@ -455,7 +459,7 @@
   return memcheck(realloc(ptr, size));
 }
 
-static char *
+static char * ATTRIBUTE_MALLOC
 ecpyalloc (char const *str)
 {
   return memcheck(strdup(str));
@@ -1088,8 +1092,7 @@
                        ** Maybe we have a local standard time offset.
                        */
                        eat(zp->z_filename, zp->z_linenum);
-                       zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"),
-                               true);
+                       zp->z_stdoff = getstdoff(zp->z_rule, &zp->z_isdst);
                        /*
                        ** Note, though, that if there's no rule,
                        ** a '%s' in the format is a bad thing.
@@ -1248,6 +1251,24 @@
                    sign * (mm * SECSPERMIN + ss));
 }
 
+static zic_t
+getstdoff(char *field, bool *isdst)
+{
+  int dst = -1;
+  zic_t stdoff;
+  size_t fieldlen = strlen(field);
+  if (fieldlen != 0) {
+    char *ep = field + fieldlen - 1;
+    switch (*ep) {
+      case 'd': dst = 1; *ep = '\0'; break;
+      case 's': dst = 0; *ep = '\0'; break;
+    }
+  }
+  stdoff = gethms(field, _("invalid saved time"), true);
+  *isdst = dst < 0 ? stdoff != 0 : dst;
+  return stdoff;
+}
+
 static void
 inrule(char **fields, int nfields)
 {
@@ -1263,7 +1284,7 @@
        }
        r.r_filename = filename;
        r.r_linenum = linenum;
-       r.r_stdoff = gethms(fields[RF_STDOFF], _("invalid saved time"), true);
+       r.r_stdoff = getstdoff(fields[RF_STDOFF], &r.r_isdst);
        rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR], fields[RF_COMMAND],
                fields[RF_MONTH], fields[RF_DAY], fields[RF_TOD]);
        r.r_name = ecpyalloc(fields[RF_NAME]);
@@ -2111,7 +2132,7 @@
 
 static size_t
 doabbr(char *abbr, struct zone const *zp, char const *letters,
-       zic_t stdoff, bool doquotes)
+       bool isdst, zic_t stdoff, bool doquotes)
 {
        register char * cp;
        register char * slashp;
@@ -2126,7 +2147,7 @@
          else if (!letters)
            letters = "%s";
          sprintf(abbr, format, letters);
-       } else if (stdoff != 0) {
+       } else if (isdst) {
                strcpy(abbr, slashp + 1);
        } else {
                memcpy(abbr, format, slashp - format);
@@ -2237,7 +2258,7 @@
        }
        if (rp->r_todisgmt)
                tod += gmtoff;
-       if (rp->r_todisstd && rp->r_stdoff == 0)
+       if (rp->r_todisstd && !rp->r_isdst)
                tod += dstoff;
        if (tod != 2 * SECSPERMIN * MINSPERHOUR) {
                *result++ = '/';
@@ -2294,7 +2315,7 @@
                        continue;
                if (rp->r_yrtype != NULL)
                        continue;
-               if (rp->r_stdoff == 0) {
+               if (!rp->r_isdst) {
                        if (stdrp == NULL)
                                stdrp = rp;
                        else    return -1;
@@ -2313,7 +2334,7 @@
                register struct rule *stdabbrrp = NULL;
                for (i = 0; i < zp->z_nrules; ++i) {
                        rp = &zp->z_rules[i];
-                       if (rp->r_stdoff == 0 && rule_cmp(stdabbrrp, rp) < 0)
+                       if (!rp->r_isdst && rule_cmp(stdabbrrp, rp) < 0)
                                stdabbrrp = rp;
                        if (rule_cmp(stdrp, rp) < 0)
                                stdrp = rp;
@@ -2326,13 +2347,14 @@
                if (stdrp != NULL && stdrp->r_hiyear == 2037)
                        return YEAR_BY_YEAR_ZONE;
 
-               if (stdrp != NULL && stdrp->r_stdoff != 0) {
+               if (stdrp != NULL && stdrp->r_isdst) {
                        /* Perpetual DST.  */
                        dstr.r_month = TM_JANUARY;
                        dstr.r_dycode = DC_DOM;
                        dstr.r_dayofmonth = 1;
                        dstr.r_tod = 0;
                        dstr.r_todisstd = dstr.r_todisgmt = false;
+                       dstr.r_isdst = stdrp->r_isdst;
                        dstr.r_stdoff = stdrp->r_stdoff;
                        dstr.r_abbrvar = stdrp->r_abbrvar;
                        stdr.r_month = TM_DECEMBER;
@@ -2340,6 +2362,7 @@
                        stdr.r_dayofmonth = 31;
                        stdr.r_tod = SECSPERDAY + stdrp->r_stdoff;
                        stdr.r_todisstd = stdr.r_todisgmt = false;
+                       stdr.r_isdst = false;
                        stdr.r_stdoff = 0;
                        stdr.r_abbrvar
                          = (stdabbrrp ? stdabbrrp->r_abbrvar : "");
@@ -2347,10 +2370,10 @@
                        stdrp = &stdr;
                }
        }
-       if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0))
+       if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_isdst))
                return -1;
        abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar;
-       len = doabbr(result, zp, abbrvar, 0, true);
+       len = doabbr(result, zp, abbrvar, false, 0, true);
        offsetlen = stringoffset(result + len, -zp->z_gmtoff);
        if (! offsetlen) {
                result[0] = '\0';
@@ -2359,7 +2382,8 @@
        len += offsetlen;
        if (dstrp == NULL)
                return compat;
-       len += doabbr(result + len, zp, dstrp->r_abbrvar, dstrp->r_stdoff, 
true);
+       len += doabbr(result + len, zp, dstrp->r_abbrvar,
+                     dstrp->r_isdst, dstrp->r_stdoff, true);
        if (dstrp->r_stdoff != SECSPERMIN * MINSPERHOUR) {
          offsetlen = stringoffset(result + len,
                                   -(zp->z_gmtoff + dstrp->r_stdoff));
@@ -2535,9 +2559,9 @@
                startoff = zp->z_gmtoff;
                if (zp->z_nrules == 0) {
                        stdoff = zp->z_stdoff;
-                       doabbr(startbuf, zp, NULL, stdoff, false);
+                       doabbr(startbuf, zp, NULL, zp->z_isdst, stdoff, false);
                        type = addtype(oadd(zp->z_gmtoff, stdoff),
-                               startbuf, stdoff != 0, startttisstd,
+                               startbuf, zp->z_isdst, startttisstd,
                                startttisgmt);
                        if (usestart) {
                                addtt(starttime, type);
@@ -2633,6 +2657,7 @@
                                                        stdoff);
                                                doabbr(startbuf, zp,
                                                        rp->r_abbrvar,
+                                                       rp->r_isdst,
                                                        rp->r_stdoff,
                                                        false);
                                                continue;
@@ -2643,6 +2668,7 @@
                                                        doabbr(startbuf,
                                                                zp,
                                                                rp->r_abbrvar,
+                                                               rp->r_isdst,
                                                                rp->r_stdoff,
                                                                false);
                                        }
@@ -2650,9 +2676,9 @@
                                eats(zp->z_filename, zp->z_linenum,
                                        rp->r_filename, rp->r_linenum);
                                doabbr(ab, zp, rp->r_abbrvar,
-                                      rp->r_stdoff, false);
+                                      rp->r_isdst, rp->r_stdoff, false);
                                offset = oadd(zp->z_gmtoff, rp->r_stdoff);
-                               type = addtype(offset, ab, rp->r_stdoff != 0,
+                               type = addtype(offset, ab, rp->r_isdst,
                                        rp->r_todisstd, rp->r_todisgmt);
                                if (rp->r_hiyear == ZIC_MAX
                                    && ! (0 <= lastatmax

++++++ tzdata2018d.tar.gz -> tzdata2018e.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Makefile new/Makefile
--- old/Makefile        2018-03-21 00:10:33.000000000 +0100
+++ new/Makefile        2018-04-30 21:46:32.000000000 +0200
@@ -21,7 +21,7 @@
 
 # Change the line below for your time zone (after finding the zone you want in
 # the time zone files, or adding it to a time zone file).
-# Alternately, if you discover you've got the wrong time zone, you can just
+# Alternatively, if you discover you've got the wrong time zone, you can just
 #      zic -l rightzone
 # to correct things.
 # Use the command
@@ -38,7 +38,7 @@
 # template file are used to determine "spring forward" and "fall back" days and
 # times; the environment variable itself specifies UT offsets of standard and
 # daylight saving time.
-# Alternately, if you discover you've got the wrong time zone, you can just
+# Alternatively, if you discover you've got the wrong time zone, you can just
 #      zic -p rightzone
 # to correct things.
 # Use the command
@@ -236,14 +236,16 @@
   $(GCC_INSTRUMENT) \
   -Wall -Wextra \
   -Walloc-size-larger-than=100000 -Warray-bounds=2 \
-  -Wbad-function-cast -Wcast-align -Wdate-time \
+  -Wbad-function-cast -Wcast-align=strict -Wdate-time \
   -Wdeclaration-after-statement -Wdouble-promotion \
   -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
   -Winit-self -Wjump-misses-init -Wlogical-op \
   -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
   -Wold-style-definition -Woverlength-strings -Wpointer-arith \
-  -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=5 \
+  -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=4 \
+  -Wstringop-truncation -Wsuggest-attribute=cold \
   -Wsuggest-attribute=const -Wsuggest-attribute=format \
+  -Wsuggest-attribute=malloc \
   -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
   -Wtrampolines -Wundef -Wuninitialized -Wunused \
   -Wvariadic-macros -Wvla -Wwrite-strings \
@@ -514,6 +516,7 @@
                tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
                workman.sh yearistype.sh \
                zdump.8 zdump.c zic.8 zic.c \
+               ziguard.awk zishrink.awk \
                zone.tab zone1970.tab zoneinfo2tdf.pl
 
 # And for the benefit of csh users on systems that assume the user
@@ -559,8 +562,8 @@
 
 # These files can be tailored by setting BACKWARD, PACKRATDATA, etc.
 vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS)
-               $(AWK) -v outfile='$@' -f ziguard.awk $(TDATA) $(PACKRATDATA) \
-                 >[email protected]
+               $(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \
+                 $(TDATA) $(PACKRATDATA) >[email protected]
                mv [email protected] $@
 tzdata.zi:     $(DATAFORM).zi version
                version=`sed 1q version` && \
@@ -900,6 +903,13 @@
                done
                rm -fr time_t.dir
 
+TRADITIONAL_ASC = \
+  tzcode$(VERSION).tar.gz.asc \
+  tzdata$(VERSION).tar.gz.asc
+ALL_ASC = $(TRADITIONAL_ASC) \
+  tzdata$(VERSION)-rearguard.tar.gz.asc \
+  tzdb-$(VERSION).tar.lz.asc
+
 tarballs traditional_tarballs signatures traditional_signatures: version
                VERSION=`cat version` && \
                $(MAKE) VERSION="$$VERSION" $@_version
@@ -907,12 +917,13 @@
 # These *_version rules are intended for use if VERSION is set by some
 # other means.  Ordinarily these rules are used only by the above
 # non-_version rules, which set VERSION on the 'make' command line.
-tarballs_version: traditional_tarballs_version tzdb-$(VERSION).tar.lz
+tarballs_version: traditional_tarballs_version \
+  tzdata$(VERSION)-rearguard.tar.gz \
+  tzdb-$(VERSION).tar.lz
 traditional_tarballs_version: \
   tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
-signatures_version: traditional_signatures_version tzdb-$(VERSION).tar.lz.asc
-traditional_signatures_version: \
-  tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc \
+signatures_version: $(ALL_ASC)
+traditional_signatures_version: $(TRADITIONAL_ASC)
 
 tzcode$(VERSION).tar.gz: set-timestamps.out
                LC_ALL=C && export LC_ALL && \
@@ -927,6 +938,26 @@
                  gzip $(GZIPFLAGS) >[email protected]
                mv [email protected] $@
 
+tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
+               rm -fr tzdata$(VERSION)-rearguard.dir
+               mkdir tzdata$(VERSION)-rearguard.dir
+               ln $(COMMON) $(DATA) $(MISC) tzdata$(VERSION)-rearguard.dir
+               cd tzdata$(VERSION)-rearguard.dir && \
+                 rm -f $(TDATA) $(PACKRATDATA) version
+               for f in $(TDATA) $(PACKRATDATA); do \
+                 rearf=tzdata$(VERSION)-rearguard.dir/$$f; \
+                 $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
+                 touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \
+               done
+               sed '1s/$$/-rearguard/' \
+                 <version >tzdata$(VERSION)-rearguard.dir/version
+               touch -cmr version tzdata$(VERSION)-rearguard.dir/version
+               LC_ALL=C && export LC_ALL && \
+                 (cd tzdata$(VERSION)-rearguard.dir && \
+                  tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \
+                    gzip $(GZIPFLAGS)) >[email protected]
+               mv [email protected] $@
+
 tzdb-$(VERSION).tar.lz: set-timestamps.out
                rm -fr tzdb-$(VERSION)
                mkdir tzdb-$(VERSION)
@@ -937,12 +968,10 @@
                mv [email protected] $@
 
 tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz
-               gpg --armor --detach-sign $?
-
 tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz
-               gpg --armor --detach-sign $?
-
+tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz
 tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz
+$(ALL_ASC):
                gpg --armor --detach-sign $?
 
 typecheck:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/NEWS new/NEWS
--- old/NEWS    2018-03-22 15:08:41.000000000 +0100
+++ new/NEWS    2018-05-02 08:44:22.000000000 +0200
@@ -1,5 +1,69 @@
 News for the tz database
 
+Release 2018e - 2018-05-01 23:42:51 -0700
+
+  Briefly:
+
+    North Korea switches back to +09 on 2018-05-05.
+    The main format uses negative DST again, for Ireland etc.
+    'make tarballs' now also builds a rearguard tarball.
+    New 's' and 'd' suffixes in SAVE columns of Rule and Zone lines.
+
+  Changes to past and future time stamps
+
+    North Korea switches back from +0830 to +09 on 2018-05-05.
+    (Thanks to Kang Seonghoon, Arthur David Olson, Seo Sanghyeon,
+    and Tim Parenti.)
+
+    Bring back the negative-DST changes of 2018a, except be more
+    compatible with data parsers that do not support negative DST.
+    Also, this now affects historical time stamps in Namibia and the
+    former Czechoslovakia, not just Ireland.  The main format now uses
+    negative DST to model time stamps in Europe/Dublin (from 1971 on),
+    Europe/Prague (1946/7), and Africa/Windhoek (1994/2017).  This
+    does not affect UT offsets, only time zone abbreviations and the
+    tm_isdst flag.  Also, this does not affect rearguard or vanguard
+    formats; effectively the main format now uses vanguard instead of
+    rearguard format.  Data parsers that do not support negative DST
+    can still use data from the rearguard tarball described below.
+
+  Changes to build procedure
+
+    The command 'make tarballs' now also builds the tarball
+    tzdataVERSION-rearguard.tar.gz, which is like tzdataVERSION.tar.gz
+    except that it uses rearguard format intended for trailing-edge
+    data parsers.
+
+  Changes to data format and to code
+
+    The SAVE column of Rule and Zone lines can now have an 's' or 'd'
+    suffix, which specifies whether the adjusted time is standard time
+    or daylight saving time.  If no suffix is given, daylight saving
+    time is used if and only if the SAVE column is nonzero; this is
+    the longstanding behavior.  Although this new feature is not used
+    in tzdata, it could be used to specify the legal time in Namibia
+    1994-2017, as opposed to the popular time (see below).
+
+  Changes to past time stamps
+
+    From 1994 through 2017 Namibia observed DST in winter, not summer.
+    That is, it used negative DST, as Ireland still does.  This change
+    does not affect UTC offsets; it affects only the tm_isdst flag and
+    the abbreviation used during summer, which is now CAT, not WAST.
+    Although (as noted by Michael Deckers) summer and winter time were
+    both simply called "standard time" in Namibian law, in common
+    practice winter time was considered to be DST (as noted by Stephen
+    Colebourne).  The full effect of this change is only in vanguard
+    format; in rearguard and main format, the tm_isdst flag is still
+    zero in winter and nonzero in summer.
+
+    In 1946/7 Czechoslovakia also observed negative DST in winter.
+    The full effect of this change is only in vanguard format; in
+    rearguard and main formats, it is modeled as plain GMT without
+    daylight saving.  Also, the dates of some 1944/5 DST transitions
+    in Czechoslovakia have been changed.
+
+
 Release 2018d - 2018-03-22 07:05:46 -0700
 
   Briefly:
@@ -39,7 +103,7 @@
     Enderbury and Kiritimati skipped New Year's Eve 1994, not
     New Year's Day 1995.  (Thanks to Kerry Shetline.)
 
-    Fix the 1912-01-01 transition for Portugual and its colonies.
+    Fix the 1912-01-01 transition for Portugal and its colonies.
     This transition was at 00:00 according to the new UT offset, not
     according to the old one.  Also assume that Cape Verde switched on
     the same date as the rest, not in 1907.  This affects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/africa new/africa
--- old/africa  2018-02-17 01:11:42.000000000 +0100
+++ new/africa  2018-04-23 01:52:45.000000000 +0200
@@ -6,7 +6,7 @@
 # [email protected] for general use in the future).  For more, please see
 # the file CONTRIBUTING in the tz distribution.
 
-# From Paul Eggert (2017-02-20):
+# From Paul Eggert (2017-04-09):
 #
 # Unless otherwise specified, the source for data through 1990 is:
 # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -52,7 +52,7 @@
 # cannot now come up with solid citations.
 #
 # I invented the following abbreviations; corrections are welcome!
-#       +02    WAST    West Africa Summer Time
+#       +02    WAST    West Africa Summer Time (no longer used)
 #       +03    CAST    Central Africa Summer Time (no longer used)
 #       +03    SAST    South Africa Summer Time (no longer used)
 #       +03    EAT     East Africa Time
@@ -967,6 +967,10 @@
 # commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on
 # Sunday 4 September 1994.
 
+# From Michael Deckers (2017-04-06):
+# ... both summer and winter time are called "standard"
+# (which differs from the use in Ireland) ...
+
 # From Petronella Sibeene (2007-03-30):
 # http://allafrica.com/stories/200703300178.html
 # While the entire country changes its time, Katima Mulilo and other
@@ -992,19 +996,42 @@
 # the same time they would normally start DST, the first Sunday in September:
 # https://www.timeanddate.com/news/time/namibia-new-time-zone.html
 
+# From Paul Eggert (2017-04-09):
+# Before the change, summer and winter time were both standard time legally.
+# However in common parlance, winter time was considered to be DST.  See, e.g.:
+# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706
+# https://zone.my.na/news/times-are-changing-in-namibia
+# https://www.newera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/
+# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
+# with Namibia's neighbors.
+
 # RULE NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
-Rule   Namibia 1994    only    -       Mar     21      0:00    0       -
-Rule   Namibia 1994    2016    -       Sep     Sun>=1  2:00    1:00    S
-Rule   Namibia 1995    2017    -       Apr     Sun>=1  2:00    0       -
+# Vanguard section, for zic and other parsers that support negative DST.
+Rule   Namibia 1994    only    -       Mar     21      0:00    -1:00   WAT
+Rule   Namibia 1994    2017    -       Sep     Sun>=1  2:00    0       CAT
+Rule   Namibia 1995    2017    -       Apr     Sun>=1  2:00    -1:00   WAT
+# Rearguard section, for parsers that do not support negative DST.
+#Rule  Namibia 1994    only    -       Mar     21      0:00    0       WAT
+#Rule  Namibia 1994    2017    -       Sep     Sun>=1  2:00    1:00    CAT
+#Rule  Namibia 1995    2017    -       Apr     Sun>=1  2:00    0       WAT
+# End of rearguard section.
+
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Africa/Windhoek 1:08:24 -       LMT     1892 Feb 8
                        1:30    -       +0130   1903 Mar
                        2:00    -       SAST    1942 Sep 20  2:00
                        2:00    1:00    SAST    1943 Mar 21  2:00
                        2:00    -       SAST    1990 Mar 21 # independence
-                       2:00    -       CAT     1994 Mar 21  0:00
-                       1:00    Namibia WA%sT   2017 Sep  3  2:00
-                       2:00    -       CAT
+# Vanguard section, for zic and other parsers that support negative DST.
+                       2:00    Namibia %s
+# Rearguard section, for parsers that do not support negative DST.
+#                      2:00    -       CAT     1994 Mar 21  0:00
+# From Paul Eggert (2017-04-07):
+# The official date of the 2017 rule change was 2017-10-24.  See:
+# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf
+#                      1:00    Namibia %s      2017 Oct 24
+#                      2:00    -       CAT
+# End of rearguard section.
 
 # Niger
 # See Africa/Lagos.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asia new/asia
--- old/asia    2018-03-16 19:37:50.000000000 +0100
+++ new/asia    2018-04-30 21:28:09.000000000 +0200
@@ -1983,6 +1983,19 @@
 # There is no common English-language abbreviation for this time zone.
 # Use KST, as that's what we already use for 1954-1961 in ROK.
 
+# From Kang Seonghoon (2018-04-29):
+# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang
+# Time) back to UTC+9 (KST; Korea Standard Time).
+#
+# From Seo Sanghyeon (2018-04-30):
+# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan.
+# 
https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf
+# ... the transition date is 2018-05-05 ...  Citation should be Decree
+# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's
+# Assembly, as published in Rodong Sinmun.
+# From Tim Parenti (2018-04-29):
+# It appears to be the front page story at the top in the right-most column.
+
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Asia/Seoul      8:27:52 -       LMT     1908 Apr  1
                        8:30    -       KST     1912 Jan  1
@@ -1994,7 +2007,8 @@
                        8:30    -       KST     1912 Jan  1
                        9:00    -       JST     1945 Aug 24
                        9:00    -       KST     2015 Aug 15 00:00
-                       8:30    -       KST
+                       8:30    -       KST     2018 May  5
+                       9:00    -       KST
 
 ###############################################################################
 
@@ -2658,7 +2672,7 @@
 # From Sharef Mustafa (2018-03-16):
 # Palestine summer time will start on Mar 24th 2018 by advancing the
 # clock by 60 minutes as per Palestinian cabinet decision published on
-# the offical website, though the decree did not specify the exact
+# the official website, though the decree did not specify the exact
 # time of the time shift.
 # 
http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/australasia new/australasia
--- old/australasia     2018-02-27 04:37:05.000000000 +0100
+++ new/australasia     2018-04-01 18:27:29.000000000 +0200
@@ -1085,6 +1085,15 @@
 # (1999-09-27) writes that Giles Meteorological Station uses
 # South Australian time even though it's located in Western Australia.
 
+# From Paul Eggert (2018-04-01):
+# The Guardian Express of Perth, Australia reported today that the
+# government decided to advance the clocks permanently on January 1,
+# 2019, from UT +08 to UT +09.  The article noted that an exemption
+# would be made for people aged 61 and over, who "can apply in writing
+# to have the extra hour of sunshine removed from their area."  See:
+# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01.
+# 
https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
+
 # Queensland
 
 # From Paul Eggert (2018-02-26):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/europe new/europe
--- old/europe  2018-02-17 23:02:12.000000000 +0100
+++ new/europe  2018-04-23 01:52:45.000000000 +0200
@@ -528,13 +528,13 @@
 # summer and negative daylight saving time in winter.  It is for when
 # negative SAVE values are used.
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
-#Rule  Eire    1971    only    -       Oct     31       2:00u  -1:00   GMT
-#Rule  Eire    1972    1980    -       Mar     Sun>=16  2:00u  0       IST
-#Rule  Eire    1972    1980    -       Oct     Sun>=23  2:00u  -1:00   GMT
-#Rule  Eire    1981    max     -       Mar     lastSun  1:00u  0       IST
-#Rule  Eire    1981    1989    -       Oct     Sun>=23  1:00u  -1:00   GMT
-#Rule  Eire    1990    1995    -       Oct     Sun>=22  1:00u  -1:00   GMT
-#Rule  Eire    1996    max     -       Oct     lastSun  1:00u  -1:00   GMT
+Rule   Eire    1971    only    -       Oct     31       2:00u  -1:00   -
+Rule   Eire    1972    1980    -       Mar     Sun>=16  2:00u  0       -
+Rule   Eire    1972    1980    -       Oct     Sun>=23  2:00u  -1:00   -
+Rule   Eire    1981    max     -       Mar     lastSun  1:00u  0       -
+Rule   Eire    1981    1989    -       Oct     Sun>=23  1:00u  -1:00   -
+Rule   Eire    1990    1995    -       Oct     Sun>=22  1:00u  -1:00   -
+Rule   Eire    1996    max     -       Oct     lastSun  1:00u  -1:00   -
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Europe/Dublin   -0:25:00 -      LMT     1880 Aug  2
@@ -548,11 +548,11 @@
                         0:00   -       GMT     1948 Apr 18  2:00s
                         0:00   GB-Eire GMT/IST 1968 Oct 27
 # The next line is for when negative SAVE values are used.
-#                       1:00   Eire    IST/GMT
+                        1:00   Eire    IST/GMT
 # These three lines are for when SAVE values are always nonnegative.
-                        1:00   -       IST     1971 Oct 31  2:00u
-                        0:00   GB-Eire GMT/IST 1996
-                        0:00   EU      GMT/IST
+#                       1:00   -       IST     1971 Oct 31  2:00u
+#                       0:00   GB-Eire GMT/IST 1996
+#                       0:00   EU      GMT/IST
 
 
 ###############################################################################
@@ -970,18 +970,30 @@
 # Please see the 'asia' file for Asia/Nicosia.
 
 # Czech Republic / Czechia
+#
+# From Paul Eggert (2018-04-15):
+# The source for Czech data is: Kdy začíná a končí letní čas. 2018-04-15.
+# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas
+# We know of no English-language name for historical Czech winter time;
+# abbreviate it as "GMT", as it happened to be GMT.
+#
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
-Rule   Czech   1945    only    -       Apr      8      2:00s   1:00    S
-Rule   Czech   1945    only    -       Nov     18      2:00s   0       -
+Rule   Czech   1945    only    -       Apr     Mon>=1  2:00s   1:00    S
+Rule   Czech   1945    only    -       Oct      1      2:00s   0       -
 Rule   Czech   1946    only    -       May      6      2:00s   1:00    S
 Rule   Czech   1946    1949    -       Oct     Sun>=1  2:00s   0       -
-Rule   Czech   1947    only    -       Apr     20      2:00s   1:00    S
-Rule   Czech   1948    only    -       Apr     18      2:00s   1:00    S
+Rule   Czech   1947    1948    -       Apr     Sun>=15 2:00s   1:00    S
 Rule   Czech   1949    only    -       Apr      9      2:00s   1:00    S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Europe/Prague   0:57:44 -       LMT     1850
                        0:57:44 -       PMT     1891 Oct    # Prague Mean Time
-                       1:00    C-Eur   CE%sT   1944 Sep 17  2:00s
+                       1:00    C-Eur   CE%sT   1945 May  9
+                       1:00    Czech   CE%sT   1946 Dec  1  3:00
+# Vanguard section, for zic and other parsers that support negative DST.
+                       1:00    -1:00   GMT     1947 Feb 23  2:00
+# Rearguard section, for parsers that do not support negative DST.
+#                      0:00    -       GMT     1947 Feb 23  2:00
+# End of rearguard section.
                        1:00    Czech   CE%sT   1979
                        1:00    EU      CE%sT
 # Use Europe/Prague also for Slovakia.
@@ -2016,7 +2028,7 @@
 Rule   Neth    1945    only    -       Apr      2      2:00s   1:00    S
 Rule   Neth    1945    only    -       Sep     16      2:00s   0       -
 #
-# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
+# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted
 # below because the current format requires GMTOFF to be an integer.
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Europe/Amsterdam  0:19:32 -       LMT     1835
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/theory.html new/theory.html
--- old/theory.html     2018-03-18 23:19:29.000000000 +0100
+++ new/theory.html     2018-04-15 20:02:54.000000000 +0200
@@ -32,7 +32,7 @@
 It organizes <a href="tz-link.html">time zone and daylight saving time
 data</a> by partitioning the world into <a
 href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones";>regions</a>
-whose clocks all agree about timestamps that occur after the of the <a
+whose clocks all agree about timestamps that occur after the <a
 href="https://en.wikipedia.org/wiki/Unix_time";>POSIX Epoch</a>
 (1970-01-01 00:00:00 <a
 href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time";><abbr
@@ -53,7 +53,7 @@
 applications requiring accurate handling of all past times everywhere,
 as it would take far too much effort and guesswork to record all
 details of pre-1970 civil timekeeping.
-Athough some information outside the scope of the database is
+Although some information outside the scope of the database is
 collected in a file <code>backzone</code> that is distributed along
 with the database proper, this file is less reliable and does not
 necessarily follow database guidelines.
@@ -68,7 +68,7 @@
 href="https://en.wikipedia.org/wiki/Unix";>UNIX</a>-like systems.
 As of this writing, the current edition of POSIX is: <a
 href="http://pubs.opengroup.org/onlinepubs/9699919799/";> The Open
-Group Base Specifications Issue 7</a>, IEEE Std 1003.1-2008, 2016
+Group Base Specifications Issue 7</a>, IEEE Std 1003.1-2017, 2018
 Edition.
 Because the database's scope encompasses real-world changes to civil
 timekeeping, its model for describing time is more complex than the
@@ -79,7 +79,7 @@
 can change at times.
 Whether and when a <code><abbr>tz</abbr></code> region changes its
 clock, and even the region's notional base offset from UTC, are variable.
-It doesn't even really make sense to talk about a region's
+It does not always make sense to talk about a region's
 "base offset", since it is not necessarily a single number.
 </p>
 
@@ -92,8 +92,8 @@
 corresponds to a set of time zone rules.
 Inexperienced users are not expected to select these names unaided.
 Distributors should provide documentation and/or a simple selection
-interface that explains the names; for one example, see the 'tzselect'
-program in the <code><abbr>tz</abbr></code> code.
+interface that explains the names; for one example, see the
+<code>tzselect</code> program in the <code><abbr>tz</abbr></code> code.
 The <a href="http://cldr.unicode.org/";>Unicode Common Locale Data
 Repository</a> contains data that may be useful for other selection
 interfaces.
@@ -137,6 +137,9 @@
 North and South America share the same area, '<code>America</code>'.
 Typical names are '<code>Africa/Cairo</code>',
 '<code>America/New_York</code>', and '<code>Pacific/Honolulu</code>'.
+Some names are further qualified to help avoid confusion; for example,
+'<code>America/Indiana/Petersburg</code>' distinguishes Petersburg,
+Indiana from other Petersburgs in America.
 </p>
 
 <p>
@@ -159,7 +162,8 @@
     <code>TZ</code> strings</a>.
     A file name component must not exceed 14 characters or start with
     '<code>-</code>'.
-    E.g., prefer '<code>Brunei</code>' to '<code>Bandar_Seri_Begawan</code>'.
+    E.g., prefer <code>Asia/Brunei</code> to
+    <code>Asia/Bandar_Seri_Begawan</code>.
     Exceptions: see the discussion of legacy names below.
   </li>
   <li>
@@ -177,8 +181,8 @@
     name <var>AB</var> (ignoring case), then <var>B</var> must not
     start with '<code>/</code>', as a regular file cannot have the
     same name as a directory in POSIX.
-    For example, '<code>America/New_York</code>' precludes
-    '<code>America/New_York/Bronx</code>'.
+    For example, <code>America/New_York</code> precludes
+    <code>America/New_York/Bronx</code>.
   </li>
   <li>
     Uninhabited regions like the North Pole and Bouvet Island
@@ -193,50 +197,56 @@
   </li>
   <li>
     If all the clocks in a region have agreed since 1970,
-    don't bother to include more than one location
+    do not bother to include more than one location
     even if subregions' clocks disagreed before 1970.
     Otherwise these tables would become annoyingly large.
   </li>
   <li>
     If a name is ambiguous, use a less ambiguous alternative;
     e.g., many cities are named San José and Georgetown, so
-    prefer '<code>Costa_Rica</code>' to '<code>San_Jose</code>' and
-    '<code>Guyana</code>' to '<code>Georgetown</code>'.
+    prefer <code>America/Costa_Rica</code> to
+    <code>America/San_Jose</code> and <code>America/Guyana</code>
+    to <code>America/Georgetown</code>.
   </li>
   <li>
     Keep locations compact.
     Use cities or small islands, not countries or regions, so that any
     future changes do not split individual locations into different
     <code><abbr>tz</abbr></code> regions.
-    E.g., prefer '<code>Paris</code>' to '<code>France</code>', since
+    E.g., prefer <code>Europe/Paris</code> to <code>Europe/France</code>,
+    since
     <a href="https://en.wikipedia.org/wiki/Time_in_France#History";>France
     has had multiple time zones</a>.
   </li>
   <li>
-    Use mainstream English spelling, e.g., prefer '<code>Rome</code>'
-    to '<code>Roma</code>', and prefer '<code>Athens</code>' to the
-    Greek '<code>Αθήνα</code>' or the Romanized '<code>Athína</code>'.
+    Use mainstream English spelling, e.g., prefer
+    <code>Europe/Rome</code> to <code>Europe/Roma</code>, and
+    prefer <code>Europe/Athens</code> to the Greek
+    <code>Europe/Αθήνα</code> or the Romanized
+    <code>Europe/Athína</code>.
     The POSIX file name restrictions encourage this guideline.
   </li>
   <li>
     Use the most populous among locations in a region,
-    e.g., prefer '<code>Shanghai</code>' to
-    '<code>Beijing</code>'.
+    e.g., prefer <code>Asia/Shanghai</code> to
+    <code>Asia/Beijing</code>.
     Among locations with similar populations, pick the best-known
-    location, e.g., prefer '<code>Rome</code>' to
-    '<code>Milan</code>'.
+    location, e.g., prefer <code>Europe/Rome</code> to
+    <code>Europe/Milan</code>.
   </li>
   <li>
-    Use the singular form, e.g., prefer '<code>Canary</code>' to
-    '<code>Canaries</code>'.
+    Use the singular form, e.g., prefer <code>Atlantic/Canary</code> to
+    <code>Atlantic/Canaries</code>.
   </li>
   <li>
     Omit common suffixes like '<code>_Islands</code>' and
     '<code>_City</code>', unless that would lead to ambiguity.
-    E.g., prefer '<code>Cayman</code>' to
-    '<code>Cayman_Islands</code>' and '<code>Guatemala</code>' to
-    '<code>Guatemala_City</code>', but prefer
-    '<code>Mexico_City</code>' to '<code>Mexico</code>'
+    E.g., prefer <code>America/Cayman</code> to
+    <code>America/Cayman_Islands</code> and
+    <code>America/Guatemala</code> to
+    <code>America/Guatemala_City</code>, but prefer
+    <code>America/Mexico_City</code> to
+    <code>America/Mexico</code>
     because <a href="https://en.wikipedia.org/wiki/Time_in_Mexico";>the
     country of Mexico has several time zones</a>.
   </li>
@@ -245,13 +255,14 @@
   </li>
   <li>
     Omit '<code>.</code>' from abbreviations in names.
-    E.g., prefer '<code>St_Helena</code>' to '<code>St._Helena</code>'.
+    E.g., prefer <code>Atlantic/St_Helena</code> to
+    <code>Atlantic/St._Helena</code>.
   </li>
   <li>
     Do not change established names if they only marginally violate
     the above guidelines.
-    For example, don't change the existing name '<code>Rome</code>' to
-    '<code>Milan</code>' merely because Milan's population has grown
+    For example, do not change the existing name <code>Europe/Rome</code> to
+    <code>Europe/Milan</code> merely because Milan's population has grown
     to be somewhat greater than Rome's.
   </li>
   <li>
@@ -318,8 +329,10 @@
     Use three to six characters that are ASCII alphanumerics or
     '<code>+</code>' or '<code>-</code>'.
     Previous editions of this database also used characters like
-    '<code> </code>' and '<code>?</code>', but these characters have a
-    special meaning to the shell and cause commands like
+    space and '<code>?</code>', but these characters have a
+    special meaning to the
+    <a href="https://en.wikipedia.org/wiki/Unix_shell";>UNIX shell</a>
+    and cause commands like
     '<code><a 
href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set";>set</a>
     `<a 
href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html";>date</a>`</code>'
     to have unexpected effects.
@@ -688,7 +701,7 @@
     subsecond accuracy is needed.
   </li>
   <li>
-    Civil time was not based on atomic time before 1972, and we don't
+    Civil time was not based on atomic time before 1972, and we do not
     know the history of
     <a href="https://en.wikipedia.org/wiki/Earth's_rotation">earth's
     rotation</a> accurately enough to map <a
@@ -720,7 +733,7 @@
     Ideally it would contain information about when data entries are
     incomplete or dicey.
     Partial temporal knowledge is a field of active research, though,
-    and it's not clear how to apply it here.
+    and it is not clear how to apply it here.
   </li>
 </ul>
 
@@ -764,7 +777,7 @@
     Unfortunately, the POSIX
     <code>TZ</code> string takes a form that is hard to describe and
     is error-prone in practice.
-    Also, POSIX <code>TZ</code> strings can't deal with daylight
+    Also, POSIX <code>TZ</code> strings cannot deal with daylight
     saving time rules not based on the Gregorian calendar (as in
     Iran), or with situations where more than two time zone
     abbreviations or <abbr>UT</abbr> offsets are used in an area.
@@ -874,7 +887,7 @@
     need access to multiple time zone rulesets.
   </li>
   <li>
-    In POSIX, there's no tamper-proof way for a process to learn the
+    In POSIX, there is no tamper-proof way for a process to learn the
     system's best idea of local wall clock.
     (This is important for applications that an administrator wants
     used only at certain times &ndash; without regard to whether the
@@ -973,14 +986,16 @@
     by subsequent calls to <code>localtime</code>.
     Source code for portable applications that "must" run on local wall
     clock time should call <code>tzsetwall</code>;
-    if such code is moved to "old" systems that don't
-    provide <code>tzsetwall</code>, you won't be able to generate an
+    if such code is moved to "old" systems that do not
+    provide <code>tzsetwall</code>, you will not be able to generate an
     executable program.
     (These functions also arrange for local wall clock time to
     be used if <code>tzset</code> is called &ndash; directly or
-    indirectly &ndash; and there's no <code>TZ</code> environment
+    indirectly &ndash; and there is no <code>TZ</code> environment
     variable; portable applications should not, however, rely on this
-    behavior since it's not the way SVR2 systems behave.)
+    behavior since it is not the way <a
+    
href="https://en.wikipedia.org/wiki/UNIX_System_V#SVR2";><abbr>SVR2</abbr></a>
+    systems behave.)
   </li>
   <li>
     Negative <code>time_t</code> values are supported, on systems
@@ -1040,7 +1055,7 @@
   <li>
     The <a href="https://en.wikipedia.org/wiki/Version_7_Unix";>7th Edition
     UNIX</a> <code>timezone</code> function is not present in this
-    package; it's impossible to reliably map <code>timezone</code>'s
+    package; it is impossible to reliably map <code>timezone</code>'s
     arguments (a "minutes west of <abbr>GMT</abbr>" value and a
     "daylight saving time in effect" flag) to a time zone
     abbreviation, and we refuse to guess.
@@ -1052,7 +1067,9 @@
     zone abbreviation to use.
   </li>
   <li>
-    The <abbr>4.2BSD</abbr> <code>gettimeofday</code> function is not
+    The <a
+    
href="https://en.wikipedia.org/wiki/History_of_the_Berkeley_Software_Distribution#4.2BSD";><abbr>4.2BSD</abbr></a>
+    <code>gettimeofday</code> function is not
     used in this package.
     This formerly let users obtain the current <abbr>UTC</abbr> offset
     and <abbr>DST</abbr> flag, but this functionality was removed in
@@ -1061,7 +1078,7 @@
   <li>
     In <abbr>SVR2</abbr>, time conversion fails for near-minimum or
     near-maximum <code>time_t</code> values when doing conversions
-    for places that don't use <abbr>UT</abbr>.
+    for places that do not use <abbr>UT</abbr>.
     This package takes care to do these conversions correctly.
     A comment in the source code tells how to get compatibly wrong
     results.
@@ -1155,10 +1172,10 @@
 Calendrical issues are a bit out of scope for a time zone database,
 but they indicate the sort of problems that we would run into if we
 extended the time zone database further into the past.
-An excellent resource in this area is Nachum Dershowitz and Edward M.
-Reingold, <cite><a
-href="https://www.cs.tau.ac.il/~nachum/calendar-book/third-edition/";>Calendrical
-Calculations: Third Edition</a></cite>, Cambridge University Press (2008).
+An excellent resource in this area is Edward M. Reingold
+and Nachum Dershowitz, <cite><a
+href="https://www.cambridge.org/fr/academic/subjects/computer-science/computing-general-interest/calendrical-calculations-ultimate-edition-4th-edition";>Calendrical
+Calculations: The Ultimate Edition</a></cite>, Cambridge University Press 
(2018).
 Other information and sources are given in the file '<code>calendars</code>'
 in the <code><abbr>tz</abbr></code> distribution.
 They sometimes disagree.
@@ -1170,11 +1187,11 @@
 <p>
 Some people's work schedules
 use <a href="https://en.wikipedia.org/wiki/Timekeeping on Mars">Mars time</a>.
-Jet Propulsion Laboratory (JPL) coordinators have kept Mars time on
-and off at least since 1997 for the
+Jet Propulsion Laboratory (JPL) coordinators kept Mars time on
+and off during the
 <a href="https://en.wikipedia.org/wiki/Mars_Pathfinder#End_of_mission";>Mars
 Pathfinder</a> mission.
-Some of their family members have also adapted to Mars time.
+Some of their family members also adapted to Mars time.
 Dozens of special Mars watches were built for JPL workers who kept
 Mars time during the Mars Exploration Rovers mission (2004).
 These timepieces look like normal Seikos and Citizens but use Mars
@@ -1262,7 +1279,7 @@
     Jia-Rui Chong,
     "<a 
href="http://articles.latimes.com/2004/jan/14/science/sci-marstime14";>Workdays
     Fit for a Martian</a>", <cite>Los Angeles Times</cite>
-    (2004-01-14), pp A1, A20-A21.
+    (2004-01-14), pp A1, A20&ndash;A21.
   </li>
   <li>
     Tom Chmielewski,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/version new/version
--- old/version 2018-03-22 15:08:41.000000000 +0100
+++ new/version 2018-05-02 08:44:22.000000000 +0200
@@ -1 +1 @@
-2018d
+2018e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ziguard.awk new/ziguard.awk
--- old/ziguard.awk     2018-02-17 23:02:12.000000000 +0100
+++ new/ziguard.awk     2018-04-23 01:52:45.000000000 +0200
@@ -13,19 +13,30 @@
 # rearguard format.
 
 BEGIN {
-  dst_type["vanguard.zi"] = 1
-  dst_type["main.zi"] = 1
-  dst_type["rearguard.zi"] = 1
-
-  # The command line should set OUTFILE to the name of the output file.
-  if (!dst_type[outfile]) exit 1
-  vanguard = outfile == "vanguard.zi"
+  dataform_type["vanguard"] = 1
+  dataform_type["main"] = 1
+  dataform_type["rearguard"] = 1
+
+  # The command line should set DATAFORM.
+  if (!dataform_type[DATAFORM]) exit 1
+  vanguard = DATAFORM == "vanguard"
 }
 
 /^Zone/ { zone = $2 }
 
-outfile != "main.zi" {
+DATAFORM != "main" {
   in_comment = /^#/
+  uncomment = comment_out = 0
+
+  # If the line should differ due to Czechoslovakia using negative SAVE values,
+  # uncomment the desired version and comment out the undesired one.
+  if (zone == "Europe/Prague" && /1947 Feb 23/) {
+    if (($(in_comment + 2) != "-") == vanguard) {
+      uncomment = in_comment
+    } else {
+      comment_out = !in_comment
+    }
+  }
 
   # If this line should differ due to Ireland using negative SAVE values,
   # uncomment the desired version and comment out the undesired one.
@@ -37,11 +48,38 @@
     if ((Rule_Eire \
         || (Zone_Dublin_post_1968 && $(in_comment + 3) == "IST/GMT"))  \
        == vanguard) {
-      sub(/^#/, "")
-    } else if (/^[^#]/) {
-      sub(/^/, "#")
+      uncomment = in_comment
+    } else {
+      comment_out = !in_comment
     }
   }
+
+  # If this line should differ due to Namibia using Rule SAVE suffixes,
+  # uncomment the desired version and comment out the undesired one.
+  Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/
+  Zone_using_Namibia_rule \
+    = (zone == "Africa/Windhoek" \
+       && ($(in_comment + 2) == "Namibia" \
+          || (1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \
+          || in_comment + 3 == NF))
+  if (Rule_Namibia || Zone_using_Namibia_rule) {
+      if ((Rule_Namibia \
+          ? ($(in_comment + 9) ~ /^-/ \
+             || ($(in_comment + 9) == 0 && $(in_comment + 10) == "CAT")) \
+          : $(in_comment + 1) == "2:00" && $(in_comment + 2) == "Namibia") \
+         == vanguard) {
+      uncomment = in_comment
+    } else {
+      comment_out = !in_comment
+    }
+  }
+
+  if (uncomment) {
+    sub(/^#/, "")
+  }
+  if (comment_out) {
+    sub(/^/, "#")
+  }
 }
 
 # If a Link line is followed by a Zone line for the same data, comment


Reply via email to