Merge tzcode-2021a

- No comments in the changelog about the code changes.
This commit is contained in:
christos 2021-03-01 04:42:14 +00:00
parent 55daaba23c
commit 234ed2b238
8 changed files with 236 additions and 76 deletions

View File

@ -583,11 +583,19 @@ INSTALL: ALL install date.1
cp date '$(DESTDIR)$(BINDIR)/.'
cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.'
# Calculate version number from git, if available.
# Otherwise, use $(VERSION) unless it is "unknown" and there is already
# a 'version' file, in which case reuse the existing 'version' contents
# and append "-dirty" if the contents do not already end in "-dirty".
version: $(VERSION_DEPS)
{ (type git) >/dev/null 2>&1 && \
V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \
--abbrev=7 --dirty` || \
V='$(VERSION)'; } && \
if test '$(VERSION)' = unknown && V=`cat $@`; then \
case $$V in *-dirty);; *) V=$$V-dirty;; esac; \
else \
V='$(VERSION)'; \
fi; } && \
printf '%s\n' "$$V" >$@.out
mv $@.out $@
@ -872,11 +880,34 @@ $(MANTXTS): workman.sh
LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@.out
mv $@.out $@
# Set file timestamps deterministically if possible,
# so that tarballs containing the timestamps are reproducible.
#
# '$(SET_TIMESTAMP_N) N DEST A B C ...' sets the timestamp of the
# file DEST to the maximum of the timestamps of the files A B C ...,
# plus N if GNU ls and touch are available.
SET_TIMESTAMP_N = sh -c '\
n=$$0 dest=$$1; shift; \
touch -cmr `ls -t "$$@" | sed 1q` "$$dest" && \
if test $$n != 0 && \
lsout=`ls -n --time-style="+%s" "$$dest" 2>/dev/null`; then \
set x $$lsout && \
touch -cmd @`expr $$7 + $$n` "$$dest"; \
else :; fi'
# If DEST depends on A B C ... in this Makefile, callers should use
# $(SET_TIMESTAMP_DEP) DEST A B C ..., for the benefit of any
# downstream 'make' that considers equal timestamps to be out of date.
# POSIX allows this 'make' behavior, and HP-UX 'make' does it.
# If all that matters is that the timestamp be reproducible
# and plausible, use $(SET_TIMESTAMP).
SET_TIMESTAMP = $(SET_TIMESTAMP_N) 0
SET_TIMESTAMP_DEP = $(SET_TIMESTAMP_N) 1
# Set the timestamps to those of the git repository, if available,
# and if the files have not changed since then.
# This uses GNU 'touch' syntax 'touch -d@N FILE',
# where N is the number of seconds since 1970.
# If git or GNU 'touch' is absent, don't bother to sync with git timestamps.
# This uses GNU 'ls --time-style=+%s', which outputs the seconds count,
# and GNU 'touch -d@N FILE', where N is the number of seconds since 1970.
# If git or GNU is absent, don't bother to sync with git timestamps.
# Also, set the timestamp of each prebuilt file like 'leapseconds'
# to be the maximum of the files it depends on.
set-timestamps.out: $(EIGHT_YARDS)
@ -894,16 +925,16 @@ set-timestamps.out: $(EIGHT_YARDS)
fi || exit; \
done; \
fi
touch -cmr `ls -t $(LEAP_DEPS) | sed 1q` leapseconds
$(SET_TIMESTAMP_DEP) leapseconds $(LEAP_DEPS)
for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \
touch -cmr `ls -t $$file workman.sh | sed 1q` $$file.txt || \
$(SET_TIMESTAMP_DEP) $$file.txt $$file workman.sh || \
exit; \
done
touch -cmr `ls -t $(TZDATA_ZI_DEPS) | sed 1q` tzdata.zi
touch -cmr `ls -t $(VERSION_DEPS) | sed 1q` version
$(SET_TIMESTAMP_DEP) version $(VERSION_DEPS)
$(SET_TIMESTAMP_DEP) tzdata.zi $(TZDATA_ZI_DEPS)
touch $@
set-tzs-timestamp.out: $(TZS)
touch -cmr `ls -t $(TZS_DEPS) | sed 1q` $(TZS)
$(SET_TIMESTAMP_DEP) $(TZS) $(TZS_DEPS)
touch $@
# The zics below ensure that each data file can stand on its own.
@ -914,7 +945,10 @@ check_public: $(VERSION_DEPS)
mkdir public.dir
ln $(VERSION_DEPS) public.dir
cd public.dir && $(MAKE) CFLAGS='$(GCC_DEBUG_FLAGS)' ALL
for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi; do \
for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi \
public.dir/vanguard.zi public.dir/main.zi \
public.dir/rearguard.zi; \
do \
public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \
done
public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK)
@ -981,7 +1015,7 @@ tarballs rearguard_tarballs traditional_tarballs \
signatures rearguard_signatures traditional_signatures: \
version set-timestamps.out rearguard.zi
VERSION=`cat version` && \
$(MAKE) VERSION="$$VERSION" $@_version
$(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
# These *_version rules are intended for use if VERSION is set by some
# other means. Ordinarily these rules are used only by the above
@ -1018,12 +1052,12 @@ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
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; \
$(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
done
sed '1s/$$/-rearguard/' \
<version >tzdata$(VERSION)-rearguard.dir/version
: The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
touch -md 2020-10-12T22:53:00Z \
TZ=UTC0 touch -mt 202010122253.00 \
tzdata$(VERSION)-rearguard.dir/pacificnew
touch -cmr version tzdata$(VERSION)-rearguard.dir/version
LC_ALL=C && export LC_ALL && \
@ -1037,7 +1071,7 @@ tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out
rm -fr tzdb-$(VERSION)
mkdir tzdb-$(VERSION)
ln $(ENCHILADA) tzdb-$(VERSION)
touch -cmr `ls -t tzdb-$(VERSION)/* | sed 1q` tzdb-$(VERSION)
$(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/*
LC_ALL=C && export LC_ALL && \
tar $(TARFLAGS) -cf - tzdb-$(VERSION) | lzip -9 >$@.out
mv $@.out $@
@ -1079,8 +1113,6 @@ strftime.o: private.h tzfile.h
zdump.o: version.h
zic.o: private.h tzfile.h version.h
.KEEP_STATE:
.PHONY: ALL INSTALL all
.PHONY: check check_time_t_alternatives
.PHONY: check_web check_zishrink

View File

@ -1,5 +1,85 @@
News for the tz database
Release 2021a - 2021-01-24 10:54:57 -0800
Changes to future timestamps
South Sudan changes from +03 to +02 on 2021-02-01 at 00:00.
(Thanks to Steffen Thorsen.)
Release 2020f - 2020-12-29 00:17:46 -0800
Change to build procedure
'make rearguard_tarballs' no longer generates a bad rearguard.zi,
fixing a 2020e bug. (Problem reported by Deborah Goldsmith.)
Release 2020e - 2020-12-22 15:14:34 -0800
Briefly:
Volgograd switches to Moscow time on 2020-12-27 at 02:00.
Changes to future timestamps
Volgograd changes time zone from +04 to +03 on 2020-12-27 at 02:00.
(Thanks to Alexander Krivenyshev and Stepan Golosunov.)
Changes to past timestamps
Correct many pre-1986 transitions, fixing entries originally
derived from Shanks. The fixes include:
- Australia: several 1917 through 1971 transitions
- Bahamas: several 1941 through 1945 transitions
- Bermuda: several 1917 through 1956 transitions
- Belize: several 1942 through 1968 transitions
- Ghana: several 1915 through 1956 transitions
- Israel and Palestine: several 1940 through 1985 transitions
- Kenya and adjacent: several 1908 through 1960 transitions
- Nigeria and adjacent: correcting LMT in Lagos, and several 1905
through 1919 transitions
- Seychelles: the introduction of standard time in 1907, not 1906
- Vanuatu: DST in 1973-1974, and a corrected 1984 transition
(Thanks to P Chan.)
Because of the Australia change, Australia/Currie (King Island) is
no longer needed, as it is identical to Australia/Hobart for all
timestamps since 1970 and was therefore created by mistake.
Australia/Currie has been moved to the 'backward' file and its
corrected data moved to the 'backzone' file.
Changes to past time zone abbreviations and DST flags
To better match legislation in Turks and Caicos, the 2015 shift to
year-round observance of -04 is now modeled as AST throughout before
returning to Eastern Time with US DST in 2018, rather than as
maintaining EDT until 2015-11-01. (Thanks to P Chan.)
Changes to documentation
The zic man page now documents zic's coalescing of transitions
when a zone falls back just before DST springs forward.
Release 2020d - 2020-10-21 11:24:13 -0700
Briefly:
Palestine ends DST earlier than predicted, on 2020-10-24.
Changes to past and future timestamps
Palestine ends DST on 2020-10-24 at 01:00, instead of 2020-10-31
as previously predicted (thanks to Sharef Mustafa.) Its
2019-10-26 fall-back was at 00:00, not 01:00 (thanks to Steffen
Thorsen.) Its 2015-10-23 transition was at 01:00 not 00:00, and
its spring 2020 transition was on March 28 at 00:00, not March 27
(thanks to Pierre Cashon.) This affects Asia/Gaza and
Asia/Hebron. Assume future spring and fall transitions will be on
the Saturday preceding the last Sunday of March and October,
respectively.
Release 2020c - 2020-10-16 11:15:53 -0700
Briefly:

View File

@ -474,8 +474,8 @@ in decreasing order of importance:
<p>
<small>These abbreviations are:
AMT Amsterdam, Asunción, Athens;
BMT Baghdad, Bangkok, Batavia, Bern, Bogotá, Bridgetown, Brussels,
Bucharest;
BMT Baghdad, Bangkok, Batavia, Bermuda, Bern, Bogotá, Bridgetown,
Brussels, Bucharest;
CMT Calamarca, Caracas, Chisinau, Colón, Copenhagen, Córdoba;
DMT Dublin/Dunsink;
EMT Easter;
@ -506,6 +506,7 @@ in decreasing order of importance:
<small>A few abbreviations also follow the pattern that
<abbr>GMT</abbr>/<abbr>BST</abbr> established for time in the UK.
They are:
BMT/BST for Bermuda 1890&ndash;1930,
CMT/BST for Calamarca Mean Time and Bolivian Summer Time
1890&ndash;1932,
DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time

View File

@ -22,6 +22,10 @@ into problems that programmers have with timekeeping.</li>
Explaining The Mysteries Of Time Zones</a>" (2017; 2:15)
briefly says why France has more time zones than Russia.
<li>
"<a href="https://www.youtube.com/watch?v=yRz-Dl60Lfc">Why Denmark is
.17 Seconds Behind The World</a>" (2019; 6:29) explains why Denmark and
the United Kingdom don't exactly follow their own law about civil time.
<li>
"About Time" (1962; 59 minutes) is part of the
Bell Science extravaganza, with Frank Baxter, Richard Deacon, and Les Tremayne.
Its advisor was Richard Feynman, and it was voiced by Mel Blanc.

View File

@ -245,13 +245,12 @@ href="https://play.google.com/store/apps/details?id=com.google.android.timezone.
<a
href="http://userguide.icu-project.org/datetime/timezone"><abbr
title="International Components for Unicode">ICU</abbr></a>,
<a href="https://developer.ibm.com/javasdk/support/dst/jtzu/"><abbr>IBM</abbr></a>
and <a
href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">Oracle</a>
Java, <a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a
<a href="https://developer.ibm.com/javasdk/support/dst/jtzu/"><abbr>IBM</abbr>
JDK</a>,
<a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a
href="https://dev.mysql.com/doc/refman/en/time-zone-support.html">MySQL</a>,
and <a
href="https://nodatime.org/userguide/tzdb">Noda Time</a> (see below).
<a href="https://nodatime.org/userguide/tzdb">Noda Time</a>, and <a
href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html#usage">OpenJDK/Oracle JDK</a>.
</p>
<p>Sources for the <code><abbr>tz</abbr></code> database are
<a href="https://en.wikipedia.org/wiki/UTF-8"><abbr
@ -353,12 +352,7 @@ transferring time zone data by reference.
<a href="https://devguide.calconnect.org/Time-Zones/TZDS/">TZDIST
implementations</a> are available.
The <a href="https://www.ietf.org/mailman/listinfo/tzdist-bis">tzdist-bis
mailing list</a> discussed the Internet draft <a
id="TZDIST-Geolocate"
href="https://tools.ietf.org/html/draft-murchison-tzdist-geolocate">TZDIST
Geolocate Extension</a> (now expired), which let a client determine its timezone
from its geographic location using a <a
href="https://tools.ietf.org/html/rfc5870">'geo' URI</a>.</li>
mailing list</a> discusses possible extensions.</li>
<li>The <a href="https://tools.ietf.org/html/rfc5545">
Internet Calendaring and Scheduling Core Object Specification
(iCalendar)</a> (Internet <abbr>RFC</abbr> 5445)
@ -411,11 +405,11 @@ transition in the <code><abbr>tz</abbr></code> database.</li>
<li>The <a href="https://howardhinnant.github.io/date/tz.html">Time Zone
Database Parser</a> is a
<a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> parser and
runtime library with API <a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html">adopted
into the draft standard</a> for
runtime library with <a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html">API</a>
adopted by
<a href="https://en.wikipedia.org/wiki/C++20">C++20</a>,
the next iteration of the C++ standard.
the current iteration of the C++ standard.
It is freely available under the
<abbr title="Massachusetts Institute of Technology">MIT</abbr> license.</li>
<li><a id="ICU" href="http://site.icu-project.org">International Components for
@ -436,9 +430,13 @@ freely available under the <abbr>MIT</abbr> license.</li>
<li>Java-based compilers and libraries include:
<ul>
<li>The <a
href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">TZUpdater
href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html">TZUpdater
tool</a> compiles <code><abbr>tz</abbr></code> source into the format used by
Oracle Java.</li>
<a href="https://openjdk.java.net/">OpenJDK</a> and
<a href="https://jdk.java.net/">Oracle JDK</a>.
Although its source code is proprietary, its executable is available under the
<a href="https://www.oracle.com/a/tech/docs/tzupdater-lic.html">Java SE
Timezone Updater License Agreement</a>.</li>
<li>The <a
href="https://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html">Java
SE 8 Date and Time</a> <abbr>API</abbr> can be supplemented by <a
@ -451,11 +449,10 @@ and time <abbr>API</abbr></a> contains a class
Java 8 <code>java.time</code>, which its users should migrate to once
they can assume Java 8 or later. It is available under the <a
href="https://www.apache.org/licenses/LICENSE-2.0">Apache License</a>.</li>
<li><a href="https://bell-sw.com/pages/iana-updater/">IANA Updater</a>,
<a href="https://github.com/akashche/tzdbgen">tzdbgen</a>, and <a
<li><a href="https://bell-sw.com/pages/iana-updater/">IANA Updater</a> and <a
href="https://www.azul.com/products/open-source-tools/ziupdater-time-zone-tool/">ZIUpdater</a>
are other alternatives to TZUpdater. IANA Updater's license is unclear;
the others are licensed under the <abbr>GPL</abbr>.</li>
are alternatives to TZUpdater. IANA Updater's license is unclear;
ZIUpdater is licensed under the <abbr>GPL</abbr>.</li>
<li><a href="https://github.com/MenoData/Time4A">Time4A: Advanced date and
time library for Android</a> and
<a href="https://github.com/MenoData/Time4J/">Time4J: Advanced date,
@ -515,7 +512,10 @@ It is freely available under a <abbr>BSD</abbr>-style license.</li>
<li><a href="http://pytz.sourceforge.net">pytz &ndash; World Timezone
Definitions for Python</a> compiles <code><abbr>tz</abbr></code> source into
<a href="https://www.python.org">Python</a>.
It is freely available under a <abbr>BSD</abbr>-style license.</li>
It is freely available under a <abbr>BSD</abbr>-style license.
In code that can assume Python 3.9 or later it is superseded by
<a href="#python-zoneinfo"><code>zoneinfo.ZoneInfo</code></a>
and the <a href="#pypi-tzdata"><code>tzdata</code> Python package</a>.</li>
<li><a href="https://tzinfo.github.io">TZInfo &ndash;
Ruby Timezone Library</a>
compiles <code><abbr>tz</abbr></code> source into
@ -579,14 +579,14 @@ DateTime::TimeZone::Tzfile</a>
is a <abbr>TZif</abbr> file reader written in Perl.
It is freely available under the same terms as Perl
(dual <abbr>GPL</abbr> and Artistic license).</li>
<li>Python has a <a
<li>Python has a <a id="python-zoneinfo"
href="https://docs.python.org/3.9/library/zoneinfo.html"><code>zoneinfo.ZoneInfo</code>
class</a> that reads <abbr>TZif</abbr> data and creates objects
that represent <code><abbr>tzdb</abbr></code> timezones.
Python is freely available under the
<a href="https://docs.python.org/3.9/license.html">Python Software Foundation
License</a>.
A companion <a href="https://pypi.org/">PyPI</a> module
A companion <a id="pypi-tzdata" href="https://pypi.org/">PyPI</a> module
<a href="https://pypi.org/project/tzdata/"><code>tzdata</code></a>
supplies TZif data if the underlying system data cannot be found;
it is freely available under the Apache License.</li>
@ -622,11 +622,6 @@ It is freely available under the <abbr>GPL</abbr>.</li>
implementations contain a copy of a 32-bit subset of a recent
<code><abbr>tz</abbr></code> database in a
Go-specific format.</li>
<li><a
href="http://users.skynet.be/Peter.Verthez/projects/intclock/">International
clock (intclock)</a> is a clock that displays multiple time zones on
<abbr>GNU</abbr>/Linux and similar systems. It is freely available
under the <abbr>GPL</abbr>.</li>
<li>Microsoft Windows 8.1
and later has <code><abbr>tz</abbr></code> data and <abbr>CLDR</abbr>
data (mentioned <a href="#CLDR">below</a>) used by the
@ -672,10 +667,7 @@ licenses</a> to <code><abbr>tz</abbr></code> contributors.</li>
is Astrodienst's Web version of Shanks and Pottenger's out-of-print
time zone history atlases
<a href="https://www.worldcat.org/oclc/468828649">for the US</a> and
<a href="https://www.worldcat.org/oclc/76950459">for the world</a>,
now published in <a
href="https://astrocom.com/astrology-products/software/acs-atlas-software">software</a>
form by <a href="https://astrocom.com">ACS-Starcrafts</a>.
<a href="https://www.worldcat.org/oclc/76950459">for the world</a>.
Although these extensive atlases
<a href="https://astrologynewsservice.com/opinion/how-astrologers-contributed-to-the-information-age-a-brief-history-of-time/">were
sources for much of the older <code><abbr>tz</abbr></code> data</a>,
@ -699,11 +691,13 @@ gives current time zone rules for airports served by commercial aviation.</li>
<section>
<h2 id="maps">Maps</h2>
<ul>
<li>The <a href="https://www.cia.gov/index.html">United States Central
Intelligence Agency (<abbr
title="Central Intelligence Agency">CIA</abbr>)</a> publishes a <a
href="https://www.cia.gov/library/publications/the-world-factbook/graphics/ref_maps/physical/pdf/standard_time_zones_of_the_world.pdf">time
zone map</a>; the
<li>The <a
href="https://www.cia.gov/the-world-factbook/maps/world-regional/">World
and Regional Maps section</a> of <em>The World Factbook</em>, published by the
<a href="https://www.cia.gov">US Central Intelligence
Agency (<abbr
title="Central Intelligence Agency">CIA</abbr>)</a>, contains a time
zone map; the
<a
href="https://legacy.lib.utexas.edu/maps/world.html">Perry&ndash;Casta&ntilde;eda
Library Map Collection</a>
@ -729,7 +723,9 @@ where the two differ greatly. It's a bit out of date, unfortunately.</li>
<section>
<h2 id="boundaries">Time zone boundaries</h2>
<p>Geographical boundaries between timezones are available
from several <a href="https://en.wikipedia.org/wiki/Geolocation">geolocation</a>
from several <a
href="https://en.wikipedia.org/wiki/Internet_geolocation">Internet
geolocation</a>
services and other sources.</p>
<ul>
<li><a href="https://github.com/evansiroky/timezone-boundary-builder">Timezone
@ -878,10 +874,6 @@ of Legal Time in Germany</a>.</dd>
<dd>The Interior Ministry periodically issues <a
href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements"
hreflang="he">announcements (in Hebrew)</a>.</dd>
<dt>Italy</dt>
<dd>The National Institute of Metrological Research publishes a
<a href="http://oldsite.inrim.it/res/tf/ora_legale_i.shtml" hreflang="it">table
of civil time (in Italian)</a>.</dd>
<dt>Malaysia</dt>
<dd>See Singapore <a href="#Singapore">below</a>.</dd>
<dt>Mexico</dt>
@ -1029,8 +1021,21 @@ title="International Earth Rotation and Reference Systems Service">IERS</abbr>
Bulletins</a> contains official publications of the International
Earth Rotation and Reference Systems Service, which decides when leap
seconds occur. The <code><abbr>tz</abbr></code> code and data support leap seconds
via an optional "<code>right</code>" configuration, as opposed to the
default "<code>posix</code>" configuration.</li>
via an optional "<code>right</code>" configuration where a computer's internal
<code>time_t</code> integer clock counts every <abbr>TAI</abbr> second,
as opposed to the default "<code>posix</code>" configuration
where the internal clock ignores leap seconds.
The two configurations agree for timestamps starting with 1972-01-01 00:00:00
<abbr>UTC</abbr> (<code>time_t</code> 63&thinsp;072&thinsp;000) and diverge for
timestamps starting with <code>time_t</code> 78&thinsp;796&thinsp;800,
which corresponds to the first leap second
1972-06-30 23:59:60 <abbr>UTC</abbr> in the "<code>right</code>" configuration,
and to
1972-07-01 00:00:00 <abbr>UTC</abbr> in the "<code>posix</code>" configuration.
In practice the two configurations also agree for timestamps before
1972 even though the historical situation is messy, partly because
neither <abbr>UTC</abbr> nor <abbr>TAI</abbr>
is well-defined for sufficiently-old timestamps.</li>
<li><a href="https://developers.google.com/time/smear">Leap Smear</a>
discusses how to gradually adjust <abbr>POSIX</abbr> clocks near a
leap second so that they disagree with <abbr>UTC</abbr> by at most a
@ -1043,7 +1048,7 @@ cloud service providers. However, according to
<a href="https://tools.ietf.org/html/rfc8633#section-3.7.1">&sect;3.7.1 of
Network Time Protocol Best Current Practices</a>
(Internet <abbr>RFC</abbr> 8633), leap smearing is not suitable for
applications requiring accurate UTC or civil time,
applications requiring accurate <abbr>UTC</abbr> or civil time,
and is intended for use only in single, well-controlled environments.</li>
<li>The <a
href="https://pairlist6.pair.net/mailman/listinfo/leapsecs">Leap

View File

@ -1 +1 @@
2020c
2021a

View File

@ -1,5 +1,5 @@
.\" $NetBSD: zic.8,v 1.35 2020/10/09 18:38:48 christos Exp $
.Dd October 9, 2020
.\" $NetBSD: zic.8,v 1.36 2021/03/01 04:42:14 christos Exp $
.Dd Fabruary 28, 2021
.Dt ZIC 8
.Os
.Sh NAME
@ -71,7 +71,7 @@ will act as if the input contained a link line of the form
If
.Ar timezone
is
.Dv \*- ,
.Dv \&- ,
any already-existing link is removed.
.It Fl L Ar leapsecondfilename
Read leap second information from the file with the given name.
@ -82,7 +82,7 @@ Use
.Ar timezone's
rules when handling POSIX-format
TZ strings like
.Qq EET\*-2EEST
.Qq EET\&-2EEST
that lack transition rules.
.Nm
will act as if the input contained a link line of the form
@ -98,7 +98,7 @@ transitions are at standard time or Universal Time (UT) instead of local time.
If
.Ar timezone
is
.Dv \*- ,
.Dv \&- ,
any already-existing link is removed.
.It Fl r Op Ar @lo / Op Ar @hi
Reduce the size of output files by limiting their applicability
@ -573,6 +573,36 @@ first transition into standard time.
In a single zone it is an error if two rules take effect at the same
instant, or if two zone changes take effect at the same instant.
.Pp
If a continuation line subtracts
.Dv N
seconds from the UT offset after a transition that would be
interpreted to be later if using the continuation line's UT offset and
rules, the
.Em until
time of the previous zone or continuation line is interpreted
according to the continuation line's UT offset and rules, and any rule
that would otherwise take effect in the next
.Dv N
seconds is instead assumed to take effect simultaneously.
For example:
.Pp
.Bl -column -compact -offset indent "# Rule" "Swiss" "FROM" "1995" "\&*" "Oct" "lastSun" "1:00u" "SAVE" "LETTER/S"
.It # Rule NAME FROM TO \&- IN ON AT SAVE LETTER/S
.It Rule US 1967 2006 \&- Oct lastSun 2:00 0 S
.It Rule US 1967 1973 \&- Apr lastSun 2:00 1:00 D
.It # Zone NAME STDOFF RULES FORMAT [UNTIL]
.It Zone America/Menominee \&-5:00 \&- EST 1973 Apr 29 2:00
.It \&-6:00 US C%sT
.El
.Pp
Here, an incorrect reading would be there were two clock changes on 1973-04-29,
the first from 02:00 EST (\&-05) to 01:00 CST (\&-06),
and the second an hour later from 02:00 CST (\&-06) to 03:00 CDT (\&-05).
However,
.Nm
interprets this more sensibly as a single transition from 02:00 CST (\&-05) to
02:00 CDT (\&-05).
.Pp
A link line has the form
.Pp
.Dl Link TARGET LINK-NAME

View File

@ -1,4 +1,4 @@
/* $NetBSD: zic.c,v 1.77 2020/10/09 18:38:48 christos Exp $ */
/* $NetBSD: zic.c,v 1.78 2021/03/01 04:42:14 christos Exp $ */
/*
** This file is in the public domain, so clarified as of
** 2006-07-17 by Arthur David Olson.
@ -11,7 +11,7 @@
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: zic.c,v 1.77 2020/10/09 18:38:48 christos Exp $");
__RCSID("$NetBSD: zic.c,v 1.78 2021/03/01 04:42:14 christos Exp $");
#endif /* !defined lint */
#include "private.h"
@ -669,7 +669,8 @@ static const char * leapsec;
static const char * tzdefault;
/* -1 if the TZif output file should be slim, 0 if default, 1 if the
output should be fat for backward compatibility. The default is slim. */
output should be fat for backward compatibility. ZIC_BLOAT_DEFAULT
determines the default. */
static int bloat;
static bool
@ -806,8 +807,15 @@ _("%s: invalid time range: %s\n"),
}
if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
usage(stderr, EXIT_FAILURE); /* usage message by request */
if (bloat == 0)
bloat = strcmp(ZIC_BLOAT_DEFAULT, "slim") == 0 ? -1 : 1;
if (bloat == 0) {
static char const bloat_default[] = ZIC_BLOAT_DEFAULT;
if (strcmp(bloat_default, "slim") == 0)
bloat = -1;
else if (strcmp(bloat_default, "fat") == 0)
bloat = 1;
else
abort(); /* Configuration error. */
}
if (directory == NULL)
directory = TZDIR;
if (tzdefault == NULL)