History log of /netbsd-current/lib/libc/time/ctime.3
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.71 16-Sep-2023 christos

Update tzcode from 2022g to 2023c:

Release 2023c - 2023-03-28 12:42:14 -0700

Release 2023b - 2023-03-23 19:50:38 -0700

Release 2023a - 2023-03-22 12:39:33 -0700

Changes to code

You can now tell tzselect local time, to simplify later choices.
Select the 'time' option in its first prompt.

You can now compile with -DTZNAME_MAXIMUM=N to limit time zone
abbreviations to N bytes (default 255). The reference runtime
library now rejects POSIX-style TZ strings that contain longer
abbreviations, treating them as UTC. Previously the limit was
platform dependent and abbreviations were silently truncated to
16 bytes even when the limit was greater than 16.

The code by default is now designed for C99 or later. To build in
a C89 environment, compile with -DPORT_TO_C89. To support C89
callers of the tzcode library, compile with -DSUPPORT_C89. The
two new macros are transitional aids planned to be removed in a
future version, when C99 or later will be required.

The code now builds again on pre-C99 platforms, if you compile
with -DPORT_TO_C89. This fixes a bug introduced in 2022f.

On C23-compatible platforms tzcode no longer uses syntax like
'static [[noreturn]] void usage(void);'. Instead, it uses
'[[noreturn]] static void usage(void);' as strict C23 requires.
(Problem reported by Houge Langley.)

The code's functions now constrain their arguments with the C
'restrict' keyword consistently with their documentation.
This may allow future optimizations.

zdump again builds standalone with ckdadd and without setenv,
fixing a bug introduced in 2022g. (Problem reported by panic.)

leapseconds.awk can now process a leap seconds file that never
expires; this might be useful if leap seconds are discontinued.

Changes to commentary

tz-link.html has a new section "Coordinating with governments and
distributors". (Thanks to Neil Fuller for some of the text.)

To improve tzselect diagnostics, zone1970.tab's comments column is
now limited to countries that have multiple timezones.

Note that leap seconds are planned to be discontinued by 2035.


# 1.70 12-Sep-2023 dholland

ctime.3: fix merge mistake

The paragraphs about the *_r and *_z/rz functions belong at the end of
the section (or somewhere like that), not affixed to the description of
difftime in the middle of the list of functions.


Revision tags: netbsd-10-base
# 1.69 11-Dec-2022 christos

Merge in 2022g:

Although tzcode still works with C89, bugs found in recent routine
maintenance indicate that bitrot has set in and that in practice
C89 is no longer used to build tzcode. As it is a maintenance
burden, support for C89 is planned to be removed soon. Instead,
please use compilers compatible with C99, C11, C17, or C23.

timegm, which tzcode implemented in 1989, will finally be
standardized 34 years later as part of C23, so timegm is now
supported even if STD_INSPIRED is not defined.

Fix bug in zdump's tzalloc emulation on hosts that lack tm_zone.
(Problem reported by ��o��n Tr���n C��ng Danh.)

Fix bug in zic on hosts where malloc(0) yields NULL on success.
(Problem reported by Tim McBrayer for AIX 6.1.)

Fix zic configuration to avoid linkage failures on some platforms.
(Problems reported by Gilmore Davidson and Igor Ivanov.)

Work around MS-Windows nmake incompatibility with POSIX.
(Problem reported by Manuela Friedrich.)

Port mktime and strftime to debugging platforms where accessing
uninitialized data has undefined behavior (strftime problem
reported by Robert Elz).

Check more carefully for unlikely integer overflows, preferring
C23 <stdckdint.h> to overflow checking by hand, as the latter has
had obscure bugs.


# 1.68 26-Oct-2022 jschauma

rephrase / clarify explanation of struct tm member normalization


# 1.67 21-Oct-2022 uwe

ctime(3): fix unbalanced paren introduced in 1.40


# 1.66 21-Oct-2022 uwe

ctime(3): add missing leading slash in a pathname


# 1.65 21-Oct-2022 jschauma

escape mathematical minus so it doesn't get rendered as a dash


# 1.64 21-Oct-2022 jschauma

Note normalizing behavior of mktime(3) using language from FreeBSD.


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.70 12-Sep-2023 dholland

ctime.3: fix merge mistake

The paragraphs about the *_r and *_z/rz functions belong at the end of
the section (or somewhere like that), not affixed to the description of
difftime in the middle of the list of functions.


Revision tags: netbsd-10-base
# 1.69 11-Dec-2022 christos

Merge in 2022g:

Although tzcode still works with C89, bugs found in recent routine
maintenance indicate that bitrot has set in and that in practice
C89 is no longer used to build tzcode. As it is a maintenance
burden, support for C89 is planned to be removed soon. Instead,
please use compilers compatible with C99, C11, C17, or C23.

timegm, which tzcode implemented in 1989, will finally be
standardized 34 years later as part of C23, so timegm is now
supported even if STD_INSPIRED is not defined.

Fix bug in zdump's tzalloc emulation on hosts that lack tm_zone.
(Problem reported by ��o��n Tr���n C��ng Danh.)

Fix bug in zic on hosts where malloc(0) yields NULL on success.
(Problem reported by Tim McBrayer for AIX 6.1.)

Fix zic configuration to avoid linkage failures on some platforms.
(Problems reported by Gilmore Davidson and Igor Ivanov.)

Work around MS-Windows nmake incompatibility with POSIX.
(Problem reported by Manuela Friedrich.)

Port mktime and strftime to debugging platforms where accessing
uninitialized data has undefined behavior (strftime problem
reported by Robert Elz).

Check more carefully for unlikely integer overflows, preferring
C23 <stdckdint.h> to overflow checking by hand, as the latter has
had obscure bugs.


# 1.68 26-Oct-2022 jschauma

rephrase / clarify explanation of struct tm member normalization


# 1.67 21-Oct-2022 uwe

ctime(3): fix unbalanced paren introduced in 1.40


# 1.66 21-Oct-2022 uwe

ctime(3): add missing leading slash in a pathname


# 1.65 21-Oct-2022 jschauma

escape mathematical minus so it doesn't get rendered as a dash


# 1.64 21-Oct-2022 jschauma

Note normalizing behavior of mktime(3) using language from FreeBSD.


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.69 11-Dec-2022 christos

Merge in 2022g:

Although tzcode still works with C89, bugs found in recent routine
maintenance indicate that bitrot has set in and that in practice
C89 is no longer used to build tzcode. As it is a maintenance
burden, support for C89 is planned to be removed soon. Instead,
please use compilers compatible with C99, C11, C17, or C23.

timegm, which tzcode implemented in 1989, will finally be
standardized 34 years later as part of C23, so timegm is now
supported even if STD_INSPIRED is not defined.

Fix bug in zdump's tzalloc emulation on hosts that lack tm_zone.
(Problem reported by ��o��n Tr���n C��ng Danh.)

Fix bug in zic on hosts where malloc(0) yields NULL on success.
(Problem reported by Tim McBrayer for AIX 6.1.)

Fix zic configuration to avoid linkage failures on some platforms.
(Problems reported by Gilmore Davidson and Igor Ivanov.)

Work around MS-Windows nmake incompatibility with POSIX.
(Problem reported by Manuela Friedrich.)

Port mktime and strftime to debugging platforms where accessing
uninitialized data has undefined behavior (strftime problem
reported by Robert Elz).

Check more carefully for unlikely integer overflows, preferring
C23 <stdckdint.h> to overflow checking by hand, as the latter has
had obscure bugs.


# 1.68 26-Oct-2022 jschauma

rephrase / clarify explanation of struct tm member normalization


# 1.67 21-Oct-2022 uwe

ctime(3): fix unbalanced paren introduced in 1.40


# 1.66 21-Oct-2022 uwe

ctime(3): add missing leading slash in a pathname


# 1.65 21-Oct-2022 jschauma

escape mathematical minus so it doesn't get rendered as a dash


# 1.64 21-Oct-2022 jschauma

Note normalizing behavior of mktime(3) using language from FreeBSD.


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.68 26-Oct-2022 jschauma

rephrase / clarify explanation of struct tm member normalization


# 1.67 21-Oct-2022 uwe

ctime(3): fix unbalanced paren introduced in 1.40


# 1.66 21-Oct-2022 uwe

ctime(3): add missing leading slash in a pathname


# 1.65 21-Oct-2022 jschauma

escape mathematical minus so it doesn't get rendered as a dash


# 1.64 21-Oct-2022 jschauma

Note normalizing behavior of mktime(3) using language from FreeBSD.


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.67 21-Oct-2022 uwe

ctime(3): fix unbalanced paren introduced in 1.40


# 1.66 21-Oct-2022 uwe

ctime(3): add missing leading slash in a pathname


# 1.65 21-Oct-2022 jschauma

escape mathematical minus so it doesn't get rendered as a dash


# 1.64 21-Oct-2022 jschauma

Note normalizing behavior of mktime(3) using language from FreeBSD.


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.67 21-Oct-2022 uwe

ctime(3): fix unbalanced paren introduced in 1.40


# 1.66 21-Oct-2022 uwe

ctime(3): add missing leading slash in a pathname


# 1.65 21-Oct-2022 jschauma

escape mathematical minus so it doesn't get rendered as a dash


# 1.64 21-Oct-2022 jschauma

Note normalizing behavior of mktime(3) using language from FreeBSD.


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.63 16-Aug-2022 christos

Welcome to tzcode-2022c

Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)

Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)

Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.

Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.62 28-Sep-2021 kim

Remove duplicate tm_isdst. Fixes PR misc/56419 for HEAD.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

branches: 1.60.2;
Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.61 02-Sep-2019 sevan

start documenting history


Revision tags: netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

branches: 1.59.2;
Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.60 19-Oct-2018 christos

Update to 2018f:

Changes to code

zic now always generates TZif files where time type 0 is used for
timestamps before the first transition. This simplifies the
reading of TZif files and should not affect behavior of existing
TZif readers because the same set of time types is used; only
their internal indexes may have changed. This affects only the
legacy zones EST5EDT, CST6CDT, MST7MDT, PST8PDT, CET, MET, and
EET, which previously used nonzero types for these timestamps.

Because of the type 0 change, zic no longer outputs a dummy
transition at time -2**59 (before the Big Bang), as clients should
no longer need this to handle historical timestamps correctly.
This reverts a change introduced in 2013d and shrinks most TZif
files by a few bytes.

zic now supports negative time-of-day in Rule and Leap lines, e.g.,
"Rule X min max - Apr lastSun -6:00 1:00 -" means the transition
occurs at 18:00 on the Saturday before the last Sunday in April.
This behavior was documented in 2018a but the code did not
entirely match the documentation.

localtime.c no longer requires at least one time type in TZif
files that lack transitions or have a POSIX-style TZ string. This
future-proofs the code against possible future extensions to the
format that would allow TZif files with POSIX-style TZ strings and
without transitions or time types.

A read-access subscript error in localtime.c has been fixed.
It could occur only in TZif files with timecnt == 0, something that
does not happen in practice now but could happen in future versions.

localtime.c no longer ignores TZif POSIX-style TZ strings that
specify only standard time. Instead, these TZ strings now
override the default time type for timestamps after the last
transition (or for all time stamps if there are no transitions),
just as DST strings specifying DST have always done.

leapseconds.awk now outputs "#updated" and "#expires" comments,
and supports leap seconds at the ends of months other than June
and December. (Inspired by suggestions from Chris Woodbury.)

Changes to documentation

New restrictions: A Rule name must start with a character that
is neither an ASCII digit nor "-" nor "+", and an unquoted name
should not use characters in the set "!$%&'()*,/:;<=>?@[\]^`{|}~".
The latter restriction makes room for future extensions (a
possibility noted by Tom Lane).

tzfile.5 now documents what time types apply before the first and
after the last transition, if any.

Documentation now uses the spelling "timezone" for a TZ setting
that determines timestamp history, and "time zone" for a
geographic region currently sharing the same standard time.

The name "TZif" is now used for the tz binary data format.

tz-link.htm now mentions the A0 TimeZone Migration utilities.
(Thanks to Aldrin Martoq for the link.)


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.59 04-May-2018 christos

Merge 2018e

Changes to code

zic now accepts subsecond precision in expressions like
00:19:32.13, which is approximately the legal time of the
Netherlands from 1835 to 1937. However, because it is
questionable whether the few recorded uses of non-integer offsets
had subsecond precision in practice, there are no plans for tzdata
to use this feature. (Thanks to Steve Allen for pointing out
the limitations of historical data in this area.)

The code is a bit more portable to MS-Windows. Installers can
compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
reserve identifiers like 'localtime'. (Thanks to Manuela
Friedrich).

Changes to documentation and commentary

theory.html now outlines tzdb's extensions to POSIX's model for
civil time, and has a section "POSIX features no longer needed"
that lists POSIX API components that are now vestigial.
(From suggestions by Steve Summit.) It also better distinguishes
time zones from tz regions. (From a suggestion by Guy Harris.)

Commentary is now more consistent about using the phrase "daylight
saving time", to match the C name tm_isdst. Daylight saving time
need not occur in summer, and need not have a positive offset from
standard time.

Commentary about historical transitions in Uruguay has been expanded
with links to many relevant legal documents.
(Thanks to Tim Parenti.)

Commentary now uses some non-ASCII characters with Unicode value
less than U+0100, as they can be useful and should work even with
older editors such as XEmacs.


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.58 11-Feb-2018 wiz

branches: 1.58.2;
Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.58 11-Feb-2018 wiz

Remove Tn. Remove trailing whitespace. Remove useless Pp.


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.57 07-Feb-2018 pgoyette

Fix typos, as reported by Eitan Adler. Update dates.


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.56 25-Jan-2018 christos

Merge tzcode2018c [ changelog with changes to tzdata sections removed ]

Release 2018c - 2018-01-22 23:00:44 -0800

Changes to build procedure

The build procedure now works around mawk 1.3.3's lack of support
for character class expressions. (Problem reported by Ohyama.)


Release 2018b - 2018-01-17 23:24:48 -0800

Changes to build procedure

The distribution now contains the file 'pacificnew' again.
This file was inadvertantly omitted in the 2018a distribution.
(Problem reported by Matias Fonzo.)


Release 2018a - 2018-01-12 22:29:21 -0800

Changes to build procedure

The default installation locations have been changed to mostly
match Debian circa 2017, instead of being designed as an add-on to
4.3BSD circa 1986. This affects the Makefile macros TOPDIR,
TZDIR, MANDIR, and LIBDIR. New Makefile macros TZDEFAULT, USRDIR,
USRSHAREDIR, BINDIR, ZDUMPDIR, and ZICDIR let installers tailor
locations more precisely. (This responds to suggestions from
Brian Inglis and from Steve Summit.)

The default installation procedure no longer creates the
backward-compatibility link US/Pacific-New, which causes
confusion during user setup (e.g., see Debian bug 815200).
Use 'make BACKWARD="backward pacificnew"' to create the link
anyway, for now. Eventually we plan to remove the link entirely.

tzdata.zi now contains a version-number comment.
(Suggested by Tom Lane.)

The Makefile now quotes values like BACKWARD more carefully when
passing them to the shell. (Problem reported by Zefram.)

Builders no longer need to specify -DHAVE_SNPRINTF on platforms
that have snprintf and use pre-C99 compilers. (Problem reported
by Jon Skeet.)

Changes to code

zic has a new option -t FILE that specifies the location of the
file that determines local time when TZ is unset. The default for
this location can be configured via the new TZDEFAULT makefile
macro, which defaults to /etc/localtime.

Diagnostics and commentary now distinguish UT from UTC more
carefully; see theory.html for more information about UT vs UTC.

zic has been ported to GCC 8's -Wstringop-truncation option.
(Problem reported by Martin Sebor.)

Changes to documentation and commentary

The zic man page now documents the longstanding behavior that
times and years can be out of the usual range, with negative times
counting backwards from midnight and with year 0 preceding year 1.
(Problem reported by Michael Deckers.)

The theory.html file now mentions the POSIX limit of six chars
per abbreviation, and lists alphabetic abbreviations used.

The files tz-art.htm and tz-link.htm have been renamed to
tz-art.html and tz-link.html, respectively, for consistency with
other file names and to simplify web server configuration.


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.55 24-Oct-2017 christos

Welcome to 2017c:

zic and the reference runtime now reject multiple leap seconds
within 28 days of each other, or leap seconds before the Epoch.
As a result, support for double leap seconds, which was
obsolescent and undocumented, has been removed. Double leap
seconds were an error in the C89 standard; they have never existed
in civil timekeeping. (Thanks to Robert Elz and Bradley White for
noticing glitches in the code that uncovered this problem.)

zic now warns about use of the obsolescent and undocumented -y
option, and about use of the obsolescent TYPE field of Rule lines.

zic now allows unambiguous abbreviations like "Sa" and "Su" for
weekdays; formerly it rejected them due to a bug. Conversely, zic
no longer considers non-prefixes to be abbreviations; for example,
it no longer accepts "lF" as an abbreviation for "lastFriday".
Also, zic warns about the undocumented usage with a "last-"
prefix, e.g., "last-Fri".

Similarly, zic now accepts the unambiguous abbreviation "L" for
"Link" in ordinary context and for "Leap" in leap-second context.
Conversely, zic no longer accepts non-prefixes such as "La" as
abbreviations for words like "Leap".

zic no longer accepts leap second lines in ordinary input, or
ordinary lines in leap second input. Formerly, zic sometimes
warned about this undocumented usage and handled it incorrectly.

The new macro HAVE_TZNAME governs whether the tzname external
variable is exported, instead of USG_COMPAT. USG_COMPAT now
governs only the external variables "timezone" and "daylight".
This change is needed because the three variables are not in the
same category: although POSIX requires tzname, it specifies the
other two variables as optional. Also, USG_COMPAT is now 1 or 0:
if not defined, the code attempts to guess it from other macros.

localtime.c and difftime.c no longer require stdio.h, and .c files
other than zic.c no longer require sys/wait.h.

zdump.c no longer assumes snprintf. (Reported by Jonathan Leffler.)

Calculation of time_t extrema works around a bug in GCC 4.8.4
(Reported by Stan Shebs and Joseph Myers.)

zic.c no longer mistranslates formats of line numbers in non-English
locales. (Problem reported by Benno Schulenberg.)

Several minor changes have been made to the code to make it a
bit easier to port to MS-Windows and Solaris. (Thanks to Kees
Dekker for reporting the problems.)

Changes to documentation and commentary

The two new files 'theory.html' and 'calendars' contain the
contents of the removed file 'Theory'. The goal is to document
tzdb theory more accessibly.

The zic man page now documents abbreviation rules.

tz-link.htm now covers how to apply tzdata changes to clients.
(Thanks to Jorge F��bregas for the AIX link.) It also mentions MySQL.

The leap-seconds.list URL has been updated to something that is
more reliable for tzdb. (Thanks to Tim Parenti and Brian Inglis.)


Revision tags: matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107
# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

branches: 1.51.2;
Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision


# 1.54 29-Dec-2016 wiz

Fix asctime_r prototype.


# 1.53 22-Dec-2016 abhinav

Remove trailing comma at the end of the last .Nm entry in the NAME section


# 1.52 22-Dec-2016 abhinav

Grammar fixes at few places
Also, don't use .D1 inside .Bd (mandoc -Tlint was complaining)
Remove whitespace at the end of a sentence


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.51 07-Oct-2014 christos

Sync with tzcode2014h


# 1.50 15-Aug-2014 christos

merge tzcode2014f via patch


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.49 26-Dec-2013 christos

branches: 1.49.4;
update from tzcode 2013e to tzcode2013i
i:
The compile-time flag NOSOLAR has been removed, as nowadays the
benefit of slightly shrinking runtime table size is outweighed by the
cost of disallowing potential future updates that exceed old limits.
h:
Fix localtime overflow bugs with 32-bit unsigned time_t.

zdump no longer assumes sscanf returns maximal values on overflow.
g:
'zic' now runs on platforms that lack both hard links and symlinks.
(Thanks to Theo Veenker for reporting the problem, for MinGW.)
Also, fix some bugs on platforms that lack hard links but have symlinks.

'zic -v' again warns that Asia/Tehran has no POSIX environment variable
to predict the far future, fixing a bug introduced in 2013e.
f:
The types of the global variables 'timezone' and 'altzone' (if present)
have been changed back to 'long'. This is required for 'timezone'
by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
These variables were originally 'long' in the tz code, but were
mistakenly changed to 'time_t' in 1987; nobody reported the
incompatibility until now. The difference matters on x32, where
'long' is 32 bits and 'time_t' is 64. (Thanks to Elliott Hughes.)


# 1.48 20-Sep-2013 christos

Welcome to tzcode 2013e:

Changes affecting API

The 'zic' command now outputs a dummy transition when far-future
data can't be summarized using a TZ string, and uses a 402-year
window rather than a 400-year window. For the current data, this
affects only the Asia/Tehran file. It does not affect any of the
time stamps that this file represents, so zdump outputs the same
information as before. (Thanks to Andrew Main (Zefram).)

The 'date' command has a new '-r' option, which lets you specify
the integer time to display, a la FreeBSD.

The 'tzselect' command has two new options '-c' and '-n', which lets you
select a zone based on latitude and longitude.

The 'zic' command's '-v' option now warns about constructs that
require the new version-3 binary file format. (Thanks to Arthur
David Olson for the suggestion.)

Support for floating-point time_t has been removed.
It was always dicey, and POSIX no longer requires it.
(Thanks to Eric Blake for suggesting to the POSIX committee to
remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
Heninger, Arthur David Olson, and Alois Treindl, for reporting
bugs and elucidating some of the corners of the old floating-point
implementation.)

The signatures of 'offtime', 'timeoff', and 'gtime' have been
changed back to the old practice of using 'long' to represent UT
offsets. This had been inadvertently and mistakenly changed to
'int_fast32_t'. (Thanks to Christos Zoulos.)

The code avoids undefined behavior on integer overflow in some
more places, including gmtime, localtime, mktime and zdump.

Changes affecting the zdump utility

zdump now outputs "UT" when referring to Universal Time, not "UTC".
"UTC" does not make sense for time stamps that predate the introduction
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
for clarifying UT vs UTC.)

Data changes affecting behavior of tzselect and similar programs

Country code BQ is now called the more-common name "Caribbean Netherlands"
rather than the more-official "Bonaire, St Eustatius & Saba".

Remove from zone.tab the names America/Montreal, America/Shiprock,
and Antarctica/South_Pole, as they are equivalent to existing
same-country-code zones for post-1970 time stamps. The data for
these names are unchanged, so the names continue to work as before.

Changes affecting code internals

zic -c now runs way faster on 64-bit hosts when given large numbers.

zic now uses vfprintf to avoid allocating and freeing some memory.

tzselect now computes the list of continents from the data,
rather than have it hard-coded.

Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

Changes affecting the build procedure

The 'leapseconds' file is now generated automatically from a
new file 'leap-seconds.list', which is a copy of
<ftp://time.nist.gov/pub/leap-seconds.list>.
A new source file 'leapseconds.awk' implements this.
The goal is simplification of the future maintenance of 'leapseconds'.

When building the 'posix' or 'right' subdirectories, if the
subdirectory would be a copy of the default subdirectory, it is
now made a symbolic link if that is supported. This saves about
2 MB of file system space.

The links America/Shiprock and Antarctica/South_Pole have been
moved to the 'backward' file. This affects only nondefault builds
that omit 'backward'.

Changes affecting documentation and commentary

Changes to the 'tzfile' man page

It now mentions that the binary file format may be extended in
future versions by appending data.

It now refers to the 'zdump' and 'zic' man pages.

Changes to the 'zic' man page

It lists conditions that elicit a warning with '-v'.

It says that the behavior is unspecified when duplicate names
are given, or if the source of one link is the target of another.

Its examples are updated to match the latest data.

The definition of white space has been clarified slightly.
(Thanks to Michael Deckers.)

Changes to the 'Theory' file

There is a new section about the accuracy of the tz database,
describing the many ways that errors can creep in, and
explaining why so many of the pre-1970 time stamps are wrong or
misleading (thanks to Steve Allen, Lester Caine, and Garrett
Wollman for discussions that contributed to this).

The 'Theory' file describes LMT better (this follows a
suggestion by Guy Harris).

It refers to the 2013 edition of POSIX rather than the 2004 edition.

It's mentioned that excluding 'backward' should not affect the
other data, and it suggests at least one zone.tab name per
inhabited country (thanks to Stephen Colebourne).

Some longstanding restrictions on names are documented, e.g.,
'America/New_York' precludes 'America/New_York/Bronx'.

It gives more reasons for the 1970 cutoff.

It now mentions which time_t variants are supported, such as
signed integer time_t. (Thanks to Paul Goyette for reporting
typos in an experimental version of this change.)

(Thanks to Philip Newton for correcting typos in these changes.)

Documentation and commentary is more careful to distinguish UT in
general from UTC in particular. (Thanks to Steve Allen.)

Add a better source for the Zurich 1894 transition.
(Thanks to Pierre-Yves Berger.)

Update shapefile citations in tz-link.htm. (Thanks to Guy Harris.)


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.47 19-Jan-2013 apb

Document the fact that ctime_rz, localtime_rz, and mktime_z,
accept a NULL timezone_t pointer as a reference to UTC,
and the fact that tzalloc accepts a NULL zone name.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2
# 1.46 02-Nov-2011 christos

branches: 1.46.6;
document where tm_zone comes from in the _z calls.


# 1.45 02-Nov-2011 apb

Use double quotes to prevent multiple adjacent spaces from
being squashed to a single space on output.


Revision tags: yamt-pagecache-base
# 1.44 27-Oct-2011 christos

branches: 1.44.2;
Change mktime*(3) so that it does not always return EOVERFLOW when it cannot
perform the conversion, but returns EINVAL when the time requested would fall
in the DST gap, or is not representable in the timezone requested, and document
this.


# 1.43 16-Oct-2011 christos

Add code (not enabled) that allows mktime() to return a value for times
in the DST gap when tm_isdst == -1, like glibc does. Document both behaviors.


# 1.42 09-Jul-2011 plunky

don't indent this bullet list either, it is not required
(the text is indented anyway)


# 1.41 09-Jun-2011 njoly

Do not indent RETURN VALUES section (which was ignored because of
missing dash).


Revision tags: cherry-xenmp-base
# 1.40 12-Apr-2011 jruoho

branches: 1.40.2;
Split out FUNCTIONS to make this tolerable to read. Also improve readability
with lists. Describe the functions in the order of appearance in SYNOPSIS.
Use CAVEATS instead of NOTES. Remove "man page spam". Etc.


# 1.39 12-Apr-2011 jruoho

Move some of the discussion from the messy ctime(3) to tm(3).


Revision tags: bouyer-quota2-nbase bouyer-quota2-base
# 1.38 24-Jan-2011 njoly

Redo Vt macro fixes (from r1.35) which were lost.


Revision tags: matt-mips64-premerge-20101231
# 1.37 17-Dec-2010 wiz

branches: 1.37.2;
Sort ERRORS. Fix a typo. Readd macro usage lost in previous.
Remove trailing whitespace.


# 1.36 16-Dec-2010 christos

Provide a re-entrant and thread-safe set of timezone API's that
don't require locking and can operate on user-specified timezones
as opposed to having to alter the environment to change a timezone.
This work was presented to the tzcode folks and it was generally
accepted, but there seems to be a lot of inertia.


# 1.35 09-Dec-2010 njoly

Convert a few macros to Vt (variable type).


# 1.34 27-Oct-2010 wiz

Fix a typo and remove trailing whitespace.


# 1.33 27-Oct-2010 christos

markup improvements, document ctype_r, time_t is not a "long integer"


# 1.32 15-May-2010 pgoyette

Remove repeated text "After filling..."

XXX Someone else can decide whether we should refer to "U.S.A." or to
XXX "the United States" in the parenthetical.


# 1.31 03-Feb-2010 wiz

Remove trailing whitespace. Use Fn when referencing functions. Sort sections.
New sentence, new line.


# 1.30 02-Feb-2010 christos

According to TOG:
- asctime{,_r}, ctime{,_r} may return NULL; document that, and avoid coredumps.
- gmtime{,_r}, localtime{,_r} may return NULL and set EOVERFLOW, document and
set errno.
- when mktime returns (time_t)-1, make it set EOVERFLOW and document it.

XXX: Should be pulled up to 5.x


# 1.29 08-Jan-2010 joerg

Try to fixup the mess of mdoc(7)/man(7) mixture as created by the merge.


# 1.28 31-Dec-2009 mlelstv

Import tzcode2009k.
- now understands 64bit time_t and 64bit data in timezone files.
- localtime(), gmtime(), asctime() and ctime() may now fail with
a NULL result if time_t cannot be represented by struct tm.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.27 16-Apr-2003 wiz

Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.


Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
# 1.26 01-Oct-2002 wiz

New sentence, new line. From Robert Elz.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.25 07-Feb-2002 ross

Generate <>& symbolically.


# 1.24 16-Sep-2001 wiz

Sort SEE ALSO.


# 1.23 02-Apr-2001 wiz

mdoc'ify. With a tip of the hat to kleink.


# 1.22 29-Mar-2001 kleink

Sprinkle some restrict.


# 1.21 25-Jan-2001 jdolecek

branches: 1.21.2;
add forgotten argument name to actime_r() prototype


# 1.20 10-Jul-2000 kleink

* Use standard interval notation for struct tm members.
* Document tm_isdst as DST flag, not summer time.


# 1.19 06-Jul-2000 kleink

Note that localtime_r() does not imply tzset(); inspired by a conversation
with Hal Murray in the trail of PR lib/10282.


# 1.18 06-Jul-2000 hubertf

Improve description for tm_year and some other fields.
May prevent PRs like 10521 in the future.


Revision tags: netbsd-1-5-base
# 1.17 05-Jun-2000 kleink

branches: 1.17.2;
Pasto in previous.


# 1.16 05-Jun-2000 kleink

Move orphaned information to tzset(3).


Revision tags: minoura-xpg4dl-base wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.15 04-May-1999 kleink

branches: 1.15.6;
Add documentation for asctime_r(), ctime_r(), gmtime_r() and localtime_r().


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.14 19-Mar-1998 tv

Correct doc for tm.tm_sec to document range 0..61, not 0..60 (strptime(3)
legally assigns 61 here if specified by the user)


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.13 14-Jul-1997 kleink

Add standards conformance statement.


# 1.12 18-Jun-1997 jtc

Sync with tzcode1997e


# 1.11 18-Apr-1997 is

The protoypes for ctime() and tzset() are in <time.h>. Move #include <time.h>
to the start of the SYNOPSIS so that people won't need to search them.


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.10 30-Jan-1996 jtc

Changed manpages to reflect fact that localtime file is in /etc


# 1.9 20-Jan-1996 jtc

sync with tzcode96c


# 1.8 08-Jan-1996 jtc

sync with tzcode96a


# 1.7 28-Nov-1995 jtc

merge in changes from 1.1 release branch


Revision tags: netbsd-1-1-base
# 1.6 22-Aug-1995 jtc

branches: 1.6.2;
/usr/local/etc/zoneinfo -> /usr/share/zoneinfo; PR #1398


# 1.5 10-Mar-1995 jtc

branches: 1.5.2;
Removed "new" from references to newctime(3).
Removed -lz from SYNOPSIS.


# 1.4 10-Mar-1995 jtc

Change long to time_t as appropriate.
Add const qualifier to function argument descriptions as appropriate.


# 1.3 10-Mar-1995 jtc

Get rid of NEW (as in NEWCTIME and NEWTZSET).


# 1.2 09-Mar-1995 jtc

Add NetBSD ID's


# 1.1 09-Mar-1995 jtc

branches: 1.1.1;
Initial revision