| Index: UPDATING |
| =================================================================== |
| --- UPDATING (revision 333371) |
| +++ UPDATING (revision 337395) |
| @@ -16,6 +16,10 @@ |
| stable/10, and then rebuild without this option. The bootstrap process from |
| older version of current is a bit fragile. |
| |
| +20180806 p10 FreeBSD-SA-18:08.tcp |
| + |
| + Fix resource exhaustion in TCP reassembly. |
| + |
| 20180508 p9 FreeBSD-SA-18:06.debugreg |
| FreeBSD-EN-18:05.mem |
| FreeBSD-EN-18:06.tzdata |
| Index: sys/conf/newvers.sh |
| =================================================================== |
| --- sys/conf/newvers.sh (revision 333371) |
| +++ sys/conf/newvers.sh (revision 337395) |
| @@ -32,7 +32,7 @@ |
| |
| TYPE="FreeBSD" |
| REVISION="10.4" |
| -BRANCH="RELEASE-p9" |
| +BRANCH="RELEASE-p10" |
| if [ "X${BRANCH_OVERRIDE}" != "X" ]; then |
| BRANCH=${BRANCH_OVERRIDE} |
| fi |
| Index: sys/netinet/tcp_reass.c |
| =================================================================== |
| --- sys/netinet/tcp_reass.c (revision 333371) |
| +++ sys/netinet/tcp_reass.c (revision 337395) |
| @@ -96,6 +96,11 @@ |
| |
| static uma_zone_t tcp_reass_zone; |
| |
| +static u_int tcp_reass_maxqueuelen = 100; |
| +SYSCTL_UINT(_net_inet_tcp_reass, OID_AUTO, maxqueuelen, CTLFLAG_RWTUN, |
| + &tcp_reass_maxqueuelen, 0, |
| + "Maximum number of TCP Segments per Reassembly Queue"); |
| + |
| /* Initialize TCP reassembly queue */ |
| static void |
| tcp_reass_zone_change(void *tag) |
| @@ -184,6 +189,10 @@ |
| * socket receive buffer determines our advertised window and grows |
| * automatically when socket buffer autotuning is enabled. Use it as the |
| * basis for our queue limit. |
| + * |
| + * However, allow the user to specify a ceiling for the number of |
| + * segments in each queue. |
| + * |
| * Always let the missing segment through which caused this queue. |
| * NB: Access to the socket buffer is left intentionally unlocked as we |
| * can tolerate stale information here. |
| @@ -194,7 +203,8 @@ |
| * is understood. |
| */ |
| if ((th->th_seq != tp->rcv_nxt || !TCPS_HAVEESTABLISHED(tp->t_state)) && |
| - tp->t_segqlen >= (so->so_rcv.sb_hiwat / tp->t_maxseg) + 1) { |
| + tp->t_segqlen >= min((so->so_rcv.sb_hiwat / tp->t_maxseg) + 1, |
| + tcp_reass_maxqueuelen)) { |
| tcp_reass_overflows++; |
| TCPSTAT_INC(tcps_rcvmemdrop); |
| m_freem(m); |
| Index: sys/compat/linux/linux_ioctl.c |
| =================================================================== |
| --- sys/compat/linux/linux_ioctl.c (revision 333371) |
| +++ sys/compat/linux/linux_ioctl.c (revision 337395) |
| @@ -246,6 +246,7 @@ |
| } else if ((args->cmd & 0xffff) == LINUX_HDIO_GET_GEO_BIG) { |
| struct linux_hd_big_geometry hdbg; |
| |
| + memset(&hdbg, 0, sizeof(hdbg)); |
| hdbg.cylinders = fwcylinders; |
| hdbg.heads = fwheads; |
| hdbg.sectors = fwsectors; |
| @@ -2426,6 +2427,7 @@ |
| printf("%s(): ioctl %d on %.*s\n", __func__, |
| args->cmd & 0xffff, LINUX_IFNAMSIZ, lifname); |
| #endif |
| + memset(ifname, 0, sizeof(ifname)); |
| ifp = ifname_linux_to_bsd(td, lifname, ifname); |
| if (ifp == NULL) |
| return (EINVAL); |
| Index: sys/compat/linux/linux_ipc.c |
| =================================================================== |
| --- sys/compat/linux/linux_ipc.c (revision 333371) |
| +++ sys/compat/linux/linux_ipc.c (revision 337395) |
| @@ -516,6 +516,9 @@ |
| register_t rval; |
| int cmd, error; |
| |
| + memset(&linux_seminfo, 0, sizeof(linux_seminfo)); |
| + memset(&linux_semid, 0, sizeof(linux_semid)); |
| + |
| switch (args->cmd & ~LINUX_IPC_64) { |
| case LINUX_IPC_RMID: |
| cmd = IPC_RMID; |
| @@ -661,6 +664,8 @@ |
| struct l_msqid_ds linux_msqid; |
| struct msqid_ds bsd_msqid; |
| |
| + memset(&linux_msqid, 0, sizeof(linux_msqid)); |
| + |
| bsd_cmd = args->cmd & ~LINUX_IPC_64; |
| switch (bsd_cmd) { |
| case LINUX_IPC_INFO: |
| @@ -667,6 +672,7 @@ |
| case LINUX_MSG_INFO: { |
| struct l_msginfo linux_msginfo; |
| |
| + memset(&linux_msginfo, 0, sizeof(linux_msginfo)); |
| /* |
| * XXX MSG_INFO uses the same data structure but returns different |
| * dynamic counters in msgpool, msgmap, and msgtql fields. |
| @@ -789,6 +795,10 @@ |
| struct shmid_ds bsd_shmid; |
| int error; |
| |
| + memset(&linux_shm_info, 0, sizeof(linux_shm_info)); |
| + memset(&linux_shmid, 0, sizeof(linux_shmid)); |
| + memset(&linux_shminfo, 0, sizeof(linux_shminfo)); |
| + |
| switch (args->cmd & ~LINUX_IPC_64) { |
| |
| case LINUX_IPC_INFO: { |
| Index: sys/dev/ath/if_ath_btcoex.c |
| =================================================================== |
| --- sys/dev/ath/if_ath_btcoex.c (revision 333371) |
| +++ sys/dev/ath/if_ath_btcoex.c (revision 337395) |
| @@ -321,7 +321,7 @@ |
| * pointer for us to use below in reclaiming the buffer; |
| * may want to be more defensive. |
| */ |
| - outdata = malloc(outsize, M_TEMP, M_NOWAIT); |
| + outdata = malloc(outsize, M_TEMP, M_NOWAIT | M_ZERO); |
| if (outdata == NULL) { |
| error = ENOMEM; |
| goto bad; |
| @@ -330,6 +330,7 @@ |
| switch (id) { |
| default: |
| error = EINVAL; |
| + goto bad; |
| } |
| if (outsize < ad->ad_out_size) |
| ad->ad_out_size = outsize; |
| Index: sys/dev/ath/if_ath_lna_div.c |
| =================================================================== |
| --- sys/dev/ath/if_ath_lna_div.c (revision 333371) |
| +++ sys/dev/ath/if_ath_lna_div.c (revision 337395) |
| @@ -185,7 +185,7 @@ |
| * pointer for us to use below in reclaiming the buffer; |
| * may want to be more defensive. |
| */ |
| - outdata = malloc(outsize, M_TEMP, M_NOWAIT); |
| + outdata = malloc(outsize, M_TEMP, M_NOWAIT | M_ZERO); |
| if (outdata == NULL) { |
| error = ENOMEM; |
| goto bad; |
| @@ -194,6 +194,7 @@ |
| switch (id) { |
| default: |
| error = EINVAL; |
| + goto bad; |
| } |
| if (outsize < ad->ad_out_size) |
| ad->ad_out_size = outsize; |
| Index: sys/dev/ath/if_ath_spectral.c |
| =================================================================== |
| --- sys/dev/ath/if_ath_spectral.c (revision 333371) |
| +++ sys/dev/ath/if_ath_spectral.c (revision 337395) |
| @@ -210,7 +210,7 @@ |
| * pointer for us to use below in reclaiming the buffer; |
| * may want to be more defensive. |
| */ |
| - outdata = malloc(outsize, M_TEMP, M_NOWAIT); |
| + outdata = malloc(outsize, M_TEMP, M_NOWAIT | M_ZERO); |
| if (outdata == NULL) { |
| error = ENOMEM; |
| goto bad; |
| @@ -273,6 +273,7 @@ |
| break; |
| default: |
| error = EINVAL; |
| + goto bad; |
| } |
| if (outsize < ad->ad_out_size) |
| ad->ad_out_size = outsize; |
| Index: share/man/man4/tcp.4 |
| =================================================================== |
| --- share/man/man4/tcp.4 (revision 333371) |
| +++ share/man/man4/tcp.4 (revision 337395) |
| @@ -436,6 +436,20 @@ |
| Reseeding should not be necessary, and will break |
| .Dv TIME_WAIT |
| recycling for a few minutes. |
| +.It Va reass.cursegments |
| +The current total number of segments present in all reassembly queues. |
| +.It Va reass.maxsegments |
| +The maximum limit on the total number of segments across all reassembly |
| +queues. |
| +The limit can be adjusted as a tunable. |
| +.It Va reass.maxqueuelen |
| +The maximum number of segments allowed in each reassembly queue. |
| +By default, the system chooses a limit based on each TCP connection's |
| +receive buffer size and maximum segment size (MSS). |
| +The actual limit applied to a session's reassembly queue will be the lower of |
| +the system-calculated automatic limit and the user-specified |
| +.Va reass.maxqueuelen |
| +limit. |
| .It Va rexmit_min , rexmit_slop |
| Adjust the retransmit timer calculation for |
| .Tn TCP . |
| Index: contrib/tzdata/Makefile |
| =================================================================== |
| --- contrib/tzdata/Makefile (revision 333371) |
| +++ contrib/tzdata/Makefile (revision 337395) |
| @@ -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) \ |
| - >$@.out |
| + $(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \ |
| + $(TDATA) $(PACKRATDATA) >$@.out |
| mv $@.out $@ |
| 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) >$@.out |
| mv $@.out $@ |
| |
| +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)) >$@.out |
| + mv $@.out $@ |
| + |
| tzdb-$(VERSION).tar.lz: set-timestamps.out |
| rm -fr tzdb-$(VERSION) |
| mkdir tzdb-$(VERSION) |
| @@ -937,12 +968,10 @@ |
| mv $@.out $@ |
| |
| 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: |
| Index: contrib/tzdata/NEWS |
| =================================================================== |
| --- contrib/tzdata/NEWS (revision 333371) |
| +++ contrib/tzdata/NEWS (revision 337395) |
| @@ -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 |
| Index: contrib/tzdata/africa |
| =================================================================== |
| --- contrib/tzdata/africa (revision 333371) |
| +++ contrib/tzdata/africa (revision 337395) |
| @@ -6,7 +6,7 @@ |
| # tz@iana.org 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,10 +996,26 @@ |
| # 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 |
| @@ -1002,9 +1022,16 @@ |
| 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. |
| Index: contrib/tzdata/asia |
| =================================================================== |
| --- contrib/tzdata/asia (revision 333371) |
| +++ contrib/tzdata/asia (revision 337395) |
| @@ -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 |
| # |
| Index: contrib/tzdata/australasia |
| =================================================================== |
| --- contrib/tzdata/australasia (revision 333371) |
| +++ contrib/tzdata/australasia (revision 337395) |
| @@ -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): |
| Index: contrib/tzdata/europe |
| =================================================================== |
| --- contrib/tzdata/europe (revision 333371) |
| +++ contrib/tzdata/europe (revision 337395) |
| @@ -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 |
| Index: contrib/tzdata/theory.html |
| =================================================================== |
| --- contrib/tzdata/theory.html (revision 333371) |
| +++ contrib/tzdata/theory.html (revision 337395) |
| @@ -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,7 +197,7 @@ |
| </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> |
| @@ -200,8 +204,9 @@ |
| <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. |
| @@ -208,35 +213,40 @@ |
| 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 – 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 – directly or |
| - indirectly – and there's no <code>TZ</code> environment |
| + indirectly – 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–A21. |
| </li> |
| <li> |
| Tom Chmielewski, |
| Index: contrib/tzdata/version |
| =================================================================== |
| --- contrib/tzdata/version (revision 333371) |
| +++ contrib/tzdata/version (revision 337395) |
| @@ -1 +1 @@ |
| -2018d |
| +2018e |
| Index: contrib/tzdata/ziguard.awk |
| =================================================================== |
| --- contrib/tzdata/ziguard.awk (revision 333371) |
| +++ contrib/tzdata/ziguard.awk (revision 337395) |
| @@ -13,20 +13,31 @@ |
| # rearguard format. |
| |
| BEGIN { |
| - dst_type["vanguard.zi"] = 1 |
| - dst_type["main.zi"] = 1 |
| - dst_type["rearguard.zi"] = 1 |
| + dataform_type["vanguard"] = 1 |
| + dataform_type["main"] = 1 |
| + dataform_type["rearguard"] = 1 |
| |
| - # The command line should set OUTFILE to the name of the output file. |
| - if (!dst_type[outfile]) exit 1 |
| - vanguard = outfile == "vanguard.zi" |
| + # 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. |
| Rule_Eire = /^#?Rule[\t ]+Eire[\t ]/ |
| @@ -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 |