Paul, On 06/27/2018 09:52 PM, Paul Eggert wrote: > Make tzfile.5 a copy of the upstream tzdb version, except that > the tzdb version's first line is replaced by man-pages > boilerplate. > > This has the following effect: > > Do some minor spec fixes, notably about time type 0 > and empty TZ strings. Omit some changes that were made on the > man-pages side, notably by changing some "timezone"s back to the > preferred-upstream "time zone" when talking about traditional > time zones as opposed to POSIX timezone settings. > Also, fix some formatting glitches. My apologies for the long delay in following up. Patch applied. Cheers, Michael > --- > man5/tzfile.5 | 49 ++++++++++++++++++++++++++++--------------------- > 1 file changed, 28 insertions(+), 21 deletions(-) > > diff --git a/man5/tzfile.5 b/man5/tzfile.5 > index 46e083930..7c129e200 100644 > --- a/man5/tzfile.5 > +++ b/man5/tzfile.5 > @@ -3,8 +3,6 @@ > .\" 1996-06-05 by Arthur David Olson <arthur_david_olson@xxxxxxx>. > .\" %%%LICENSE_END > .\" > -.\" @(#)tzfile.5 7.11 > -.\" > .TH TZFILE 5 2017-08-04 "" "Linux Programmer's Manual" > .SH NAME > tzfile \- timezone information > @@ -59,12 +57,12 @@ The number of local time types for which data entries are stored > in the file (must not be zero). > .TP > .I tzh_charcnt > -The number of bytes of timezone abbreviation strings > +The number of bytes of time zone abbreviation strings > stored in the file. > .RE > .PP > The above header is followed by the following fields, whose lengths > -vary depend on the contents of the header: > +depend on the contents of the header: > .IP * 2 > .I tzh_timecnt > four-byte signed integer values sorted in ascending order. > @@ -75,25 +73,29 @@ at which the rules for computing local time change. > .IP * > .I tzh_timecnt > one-byte unsigned integer values; > -each one tells which of the different types of local time types > +each one but the last tells which of the different types of local time types > described in the file is associated with the time period > -starting with the same-indexed transition time. > +starting with the same-indexed transition time > +and continuing up to but not including the next transition time. > +(The last time type is present only for consistency checking with the > +POSIX-style TZ string described below.) > These values serve as indices into the next field. > .IP * > .I tzh_typecnt > .I ttinfo > entries, each defined as follows: > -.PP > -.in +4n > -.EX > +.in +.5i > +.sp > +.nf > +.ta .5i +\w'unsigned char\0\0'u > struct ttinfo { > - int32_t tt_gmtoff; > - unsigned char tt_isdst; > - unsigned char tt_abbrind; > + int32_t tt_gmtoff; > + unsigned char tt_isdst; > + unsigned char tt_abbrind; > }; > -.EE > -.in > -.PP > +.in -.5i > +.fi > +.sp > Each structure is written as a four-byte signed integer value for > .IR tt_gmtoff , > in a standard byte order, followed by a one-byte value for > @@ -110,7 +112,7 @@ should be set by > .BR localtime (3) > and > .I tt_abbrind > -serves as an index into the array of timezone abbreviation bytes > +serves as an index into the array of time zone abbreviation bytes > that follow the > .I ttinfo > structure(s) in the file. > @@ -165,21 +167,26 @@ eight bytes are used for each transition time or leap second time. > After the second header and data comes a newline-enclosed, > POSIX-TZ-environment-variable-style string for use in handling instants > after the last transition time stored in the file > -(with nothing between the newlines if there is no POSIX representation for > -such instants). > -The POSIX-style string must agree with the local time type after > -both data's last transition times; for example, given the string > +or for all instants if the file has no transitions. > +The POSIX-style TZ string is empty (i.e., nothing between the newlines) > +if there is no POSIX representation for such instants. > +If nonempty, the POSIX-style TZ string must agree with the local time > +type after the last transition time if present in the eight-byte data; > +for example, given the string > .q "WET0WEST,M3.5.0,M10.5.0/3" > then if a last transition time is in July, the transition's local time > type must specify a daylight-saving time abbreviated > .q "WEST" > that is one hour east of UT. > +Also, if there is at least one transition, time type 0 is associated > +with the time period from the indefinite past up to but not including > +the earliest transition time. > .SS Version 3 format > For version-3-format timezone files, the POSIX-TZ-style string may > use two minor extensions to the POSIX TZ format, as described in > .BR newtzset (3). > First, the hours part of its transition times may be signed and range from > -\-167 through 167 instead of the POSIX-required unsigned values > +\*-167 through 167 instead of the POSIX-required unsigned values > from 0 through 24. > Second, DST is in effect all year if it starts > January 1 at 00:00 and ends December 31 at 24:00 plus the difference > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/