]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
tzfile.5, tzselect.8, zdump.8, zic.8: Refresh pages
authorAlejandro Colomar <alx@kernel.org>
Sat, 16 Mar 2024 22:04:46 +0000 (23:04 +0100)
committerAlejandro Colomar <alx@kernel.org>
Sat, 16 Mar 2024 22:05:18 +0000 (23:05 +0100)
Refreshed from tzdb-2024a.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
man5/tzfile.5
man8/tzselect.8
man8/zdump.8
man8/zic.8

index 45afecc105b2dd43864b765fc6136b9ef4a26b93..867348d6726d2a05cb7f53b419ed2ce2fadf34f8 100644 (file)
@@ -26,23 +26,24 @@ a signed binary integer is represented using two's complement,
 and a boolean is represented by a one-byte binary integer that is
 either 0 (false) or 1 (true).
 The format begins with a 44-byte header containing the following fields:
-.IP * 2
+.RS "\w'  'u"
+.IP \(bu "\w'\(bu  'u"
 The magic four-byte ASCII sequence
 .q "TZif"
 identifies the file as a timezone information file.
-.IP *
+.IP \(bu
 A byte identifying the version of the file's format
 (as of 2021, either an ASCII NUL,
 .q "2",
 .q "3",
 or
 .q "4" ).
-.IP *
+.IP \(bu
 Fifteen bytes containing zeros reserved for future use.
-.IP *
+.IP \(bu
 Six four-byte integer values, in the following order:
-.RS
-.TP
+.RS "\w'  \(bu    'u"
+.TP "\w'  'u"
 .B tzh_ttisutcnt
 The number of UT/local indicators stored in the file.
 (UT is Universal Time.)
@@ -65,17 +66,18 @@ in the file (must not be zero).
 The number of bytes of time zone abbreviation strings
 stored in the file.
 .RE
-.P
+.PP
 The above header is followed by the following fields, whose lengths
 depend on the contents of the header:
-.IP * 2
+.RS "\w'  'u"
+.IP \(bu "\w'\(bu  'u"
 .B tzh_timecnt
 four-byte signed integer values sorted in ascending order.
 These values are written in network byte order.
 Each is used as a transition time (as returned by
 .BR time (2))
 at which the rules for computing local time change.
-.IP *
+.IP \(bu
 .B tzh_timecnt
 one-byte unsigned integer values;
 each one but the last tells which of the different types of local time types
@@ -83,22 +85,22 @@ described in the file is associated with the time period
 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.)
+POSIX.1-2017-style TZ string described below.)
 These values serve as indices into the next field.
-.IP *
+.IP \(bu
 .B tzh_typecnt
 .B ttinfo
 entries, each defined as follows:
-.in +.5i
+.in +2
 .sp
 .nf
-.ta .5i +\w'unsigned char\0\0'u
+.ta \w'\0\0\0\0'u +\w'unsigned char\0'u
 struct ttinfo {
        int32_t tt_utoff;
        unsigned char   tt_isdst;
        unsigned char   tt_desigidx;
 };
-.in -.5i
+.in
 .fi
 .sp
 Each structure is written as a four-byte signed integer value for
@@ -132,7 +134,8 @@ Also, in realistic applications
 is in the range [\-89999, 93599] (i.e., more than \-25 hours and less
 than 26 hours); this allows easy support by implementations that
 already support the POSIX-required range [\-24:59:59, 25:59:59].
-.IP *
+.RS "\w'  'u"
+.IP \(bu "\w'\(bu  'u"
 .B tzh_charcnt
 bytes that represent time zone designations,
 which are null-terminated byte strings, each indexed by the
@@ -140,7 +143,7 @@ which are null-terminated byte strings, each indexed by the
 values mentioned above.
 The byte strings can overlap if one is a suffix of the other.
 The encoding of these strings is not specified.
-.IP *
+.IP \(bu
 .B tzh_leapcnt
 pairs of four-byte values, written in network byte order;
 the first value of each pair gives the nonnegative time
@@ -167,22 +170,24 @@ otherwise, for timestamps before the first occurrence time,
 the leap-second correction is zero if the first pair's correction is 1 or \-1,
 and is unspecified otherwise (which can happen only in files
 truncated at the start).
-.IP *
+.IP \(bu
 .B tzh_ttisstdcnt
 standard/wall indicators, each stored as a one-byte boolean;
 they tell whether the transition times associated with local time types
 were specified as standard time or local (wall clock) time.
-.IP *
+.IP \(bu
 .B tzh_ttisutcnt
 UT/local indicators, each stored as a one-byte boolean;
 they tell whether the transition times associated with local time types
 were specified as UT or local time.
 If a UT/local indicator is set, the corresponding standard/wall indicator
 must also be set.
-.P
+.RE
+.PP
 The standard/wall and UT/local indicators were designed for
 transforming a TZif file's transition times into transitions appropriate
-for another time zone specified via a POSIX-style TZ string that lacks rules.
+for another time zone specified via
+a POSIX.1-2017-style TZ string that lacks rules.
 For example, when TZ="EET\*-2EEST" and there is no TZif file "EET\*-2EEST",
 the idea was to adapt the transition times from a TZif file with the
 well-known name "posixrules" that is present only for this purpose and
@@ -194,7 +199,7 @@ so users desiring (say) Greek time should instead specify
 TZ="Europe/Athens" for better historical coverage, falling back on
 TZ="EET\*-2EEST,M3.5.0/3,M10.5.0/4" if POSIX conformance is required
 and older timestamps need not be handled accurately.
-.P
+.PP
 The
 .BR localtime (3)
 function
@@ -211,13 +216,14 @@ the above header and data are followed by a second header and data,
 identical in format except that
 eight bytes are used for each transition time or leap second time.
 (Leap second counts remain four bytes.)
-After the second header and data comes a newline-enclosed,
-POSIX-TZ-environment-variable-style string for use in handling instants
+After the second header and data comes a newline-enclosed string
+in the style of the contents of a POSIX.1-2017 TZ environment variable,
+for use in handling instants
 after the last transition time stored in the file
 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-style representation for such instants.
-If nonempty, the POSIX-style TZ string must agree with the local time
+The TZ string is empty (i.e., nothing between the newlines)
+if there is no POSIX.1-2017-style representation for such instants.
+If nonempty, the 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/1,M10.5.0"
@@ -229,8 +235,8 @@ 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
+For version-3-format timezone files, the TZ string may
+use two minor extensions to the POSIX.1-2017 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
@@ -250,14 +256,14 @@ releases will likely add leap second entries after the expiration, and
 the added leap seconds will change how post-expiration timestamps are treated.
 .SS Interoperability considerations
 Future changes to the format may append more data.
-.P
+.PP
 Version 1 files are considered a legacy format and
 should not be generated, as they do not support transition
 times after the year 2038.
 Readers that understand only Version 1 must ignore
 any data that extends beyond the calculated end of the version
 1 data block.
-.P
+.PP
 Other than version 1, writers should generate
 the lowest version number needed by a file's data.
 For example, a writer should generate a version 4 file
@@ -266,7 +272,7 @@ Likewise, a writer not generating a version 4 file
 should generate a version 3 file only if
 TZ string extensions are necessary to accurately
 model transition times.
-.P
+.PP
 The sequence of time changes defined by the version 1
 header and data block should be a contiguous sub-sequence
 of the time changes defined by the version 2+ header and data
@@ -278,12 +284,12 @@ supporting obsolescent readers use a
 .B tzh_timecnt
 of zero
 in the version 1 data block to save space.
-.P
+.PP
 When a TZif file contains a leap second table expiration
 time, TZif readers should either refuse to process
 post-expiration timestamps, or process them as if the expiration
 time did not exist (possibly with an error indication).
-.P
+.PP
 Time zone designations should consist of at least three (3)
 and no more than six (6) ASCII characters from the set of
 alphanumerics,
@@ -292,15 +298,15 @@ and
 .q "+".
 This is for compatibility with POSIX requirements for
 time zone abbreviations.
-.P
+.PP
 When reading a version 2 or higher file, readers
 should ignore the version 1 header and data block except for
 the purpose of skipping over them.
-.P
+.PP
 Readers should calculate the total lengths of the
 headers and data blocks and check that they all fit within
 the actual file size, as part of a validity check for the file.
-.P
+.PP
 When a positive leap second occurs, readers should append an extra
 second to the local minute containing the second just before the leap
 second.  If this occurs when the UTC offset is not a multiple of 60
@@ -312,16 +318,18 @@ This section documents common problems in reading or writing TZif files.
 Most of these are problems in generating TZif files for use by
 older readers.
 The goals of this section are:
-.IP * 2
+.RS "\w'  'u"
+.IP \(bu "\w'\(bu  'u"
 to help TZif writers output files that avoid common
 pitfalls in older or buggy TZif readers,
-.IP *
+.IP \(bu
 to help TZif readers avoid common pitfalls when reading
 files generated by future TZif writers, and
-.IP *
+.IP \(bu
 to help any future specification authors see what sort of
 problems arise when the TZif format is changed.
-.P
+.RE
+.PP
 When new versions of the TZif format have been defined, a
 design goal has been that a reader can successfully use a TZif
 file even if the file is of a later TZif version than what the
@@ -333,23 +341,24 @@ new-version data useful even for older-version readers.
 This section attempts to document these compatibility issues and
 workarounds, as well as to document other common bugs in
 readers.
-.P
+.PP
 Interoperability problems with TZif include the following:
-.IP * 2
+.RS "\w'  'u"
+.IP \(bu "\w'\(bu  'u"
 Some readers examine only version 1 data.
 As a partial workaround, a writer can output as much version 1
 data as possible.
 However, a reader should ignore version 1 data, and should use
 version 2+ data even if the reader's native timestamps have only
 32 bits.
-.IP *
+.IP \(bu
 Some readers designed for version 2 might mishandle
 timestamps after a version 3 or higher file's last transition, because
-they cannot parse extensions to POSIX in the TZ-like string.
+they cannot parse extensions to POSIX.1-2017 in the TZ-like string.
 As a partial workaround, a writer can output more transitions
 than necessary, so that only far-future timestamps are
 mishandled by version 2 readers.
-.IP *
+.IP \(bu
 Some readers designed for version 2 do not support
 permanent daylight saving time with transitions after 24:00
 \(en e.g., a TZ string
@@ -367,22 +376,22 @@ for the next time zone east \(en e.g.,
 .q "AST4"
 for permanent
 Atlantic Standard Time (\-04).
-.IP *
+.IP \(bu
 Some readers designed for version 2 or 3, and that require strict
 conformance to RFC 8536, reject version 4 files whose leap second
 tables are truncated at the start or that end in expiration times.
-.IP *
+.IP \(bu
 Some readers ignore the footer, and instead predict future
 timestamps from the time type of the last transition.
 As a partial workaround, a writer can output more transitions
 than necessary.
-.IP *
+.IP \(bu
 Some readers do not use time type 0 for timestamps before
 the first transition, in that they infer a time type using a
 heuristic that does not always select time type 0.
 As a partial workaround, a writer can output a dummy (no-op)
 first transition at an early time.
-.IP *
+.IP \(bu
 Some readers mishandle timestamps before the first
 transition that has a timestamp not less than \-2**31.
 Readers that support only 32-bit timestamps are likely to be
@@ -391,12 +400,12 @@ more prone to this problem, for example, when they process
 bits.
 As a partial workaround, a writer can output a dummy
 transition at timestamp \-2**31.
-.IP *
+.IP \(bu
 Some readers mishandle a transition if its timestamp has
 the minimum possible signed 64-bit value.
 Timestamps less than \-2**59 are not recommended.
-.IP *
-Some readers mishandle POSIX-style TZ strings that
+.IP \(bu
+Some readers mishandle TZ strings that
 contain
 .q "<"
 or
@@ -407,11 +416,11 @@ or
 .q ">"
 for time zone abbreviations containing only alphabetic
 characters.
-.IP *
+.IP \(bu
 Many readers mishandle time zone abbreviations that contain
 non-ASCII characters.
 These characters are not recommended.
-.IP *
+.IP \(bu
 Some readers may mishandle time zone abbreviations that
 contain fewer than 3 or more than 6 characters, or that
 contain ASCII characters other than alphanumerics,
@@ -419,23 +428,23 @@ contain ASCII characters other than alphanumerics,
 and
 .q "+".
 These abbreviations are not recommended.
-.IP *
+.IP \(bu
 Some readers mishandle TZif files that specify
 daylight-saving time UT offsets that are less than the UT
 offsets for the corresponding standard time.
 These readers do not support locations like Ireland, which
-uses the equivalent of the POSIX TZ string
+uses the equivalent of the TZ string
 .q "IST\*-1GMT0,M10.5.0,M3.5.0/1",
 observing standard time
 (IST, +01) in summer and daylight saving time (GMT, +00) in winter.
 As a partial workaround, a writer can output data for the
-equivalent of the POSIX TZ string
+equivalent of the TZ string
 .q "GMT0IST,M3.5.0/1,M10.5.0",
 thus swapping standard and daylight saving time.
 Although this workaround misidentifies which part of the year
 uses daylight saving time, it records UT offsets and time zone
 abbreviations correctly.
-.IP *
+.IP \(bu
 Some readers generate ambiguous timestamps for positive leap seconds
 that occur when the UTC offset is not a multiple of 60 seconds.
 For example, in a timezone with UTC offset +01:23:45 and with
@@ -446,38 +455,41 @@ instead of mapping the latter to 01:23:46, and they will map 78796815 to
 This has not yet been a practical problem, since no civil authority
 has observed such UTC offsets since leap seconds were
 introduced in 1972.
-.P
+.RE
+.PP
 Some interoperability problems are reader bugs that
 are listed here mostly as warnings to developers of readers.
-.IP * 2
+.RS "\w'  'u"
+.IP \(bu "\w'\(bu  'u"
 Some readers do not support negative timestamps.
 Developers of distributed applications should keep this
 in mind if they need to deal with pre-1970 data.
-.IP *
+.IP \(bu
 Some readers mishandle timestamps before the first
 transition that has a nonnegative timestamp.
 Readers that do not support negative timestamps are likely to
 be more prone to this problem.
-.IP *
+.IP \(bu
 Some readers mishandle time zone abbreviations like
 .q "\*-08"
 that contain
 .q "+",
 .q "\*-",
 or digits.
-.IP *
+.IP \(bu
 Some readers mishandle UT offsets that are out of the
 traditional range of \-12 through +12 hours, and so do not
 support locations like Kiritimati that are outside this
 range.
-.IP *
+.IP \(bu
 Some readers mishandle UT offsets in the range [\-3599, \-1]
 seconds from UT, because they integer-divide the offset by
 3600 to get 0 and then display the hour part as
 .q "+00".
-.IP *
+.IP \(bu
 Some readers mishandle UT offsets that are not a multiple
 of one hour, or of 15 minutes, or of 1 minute.
+.RE
 .SH SEE ALSO
 .BR time (2),
 .BR localtime (3),
@@ -485,7 +497,7 @@ of one hour, or of 15 minutes, or of 1 minute.
 .BR tzselect (8),
 .BR zdump (8),
 .BR zic (8).
-.P
+.PP
 Olson A, Eggert P, Murchison K. The Time Zone Information Format (TZif).
 2019 Feb.
 .UR https://\:datatracker.ietf.org/\:doc/\:html/\:rfc8536
index 9b9049f7be5850622096e5da5ad577ab59d80067..ee031614f3ed895d7bcfa104b4f89f2802072061 100644 (file)
@@ -36,7 +36,7 @@ The
 program asks the user for information about the current location,
 and outputs the resulting timezone to standard output.
 The output is suitable as a value for the TZ environment variable.
-.P
+.PP
 All interaction with the user is done via standard input and standard error.
 .SH OPTIONS
 .TP
@@ -95,7 +95,7 @@ Output version information and exit.
 .SH "ENVIRONMENT VARIABLES"
 .TP
 \f3AWK\fP
-Name of a Posix-compliant
+Name of a POSIX-compliant
 .B awk
 program (default:
 .BR awk ).
index a248d297422973398068e16ee766315d065b73ac..c3f0bba60ba8190bbe256f211c66b3d1c9822610 100644 (file)
@@ -110,7 +110,7 @@ zero or more following lines
 .q "\fIdate time interval\fP",
 one line for each transition time and following interval.  Fields are
 separated by single tabs.
-.P
+.PP
 Dates are in
 .IR yyyy - mm - dd
 format and times are in 24-hour
@@ -126,7 +126,7 @@ double-quoted strings unless they consist of one or more alphabetic
 characters.  An isdst flag is omitted for standard time, and otherwise
 is a decimal integer that is unsigned and positive (typically 1) for
 daylight saving time and negative for unknown.
-.P
+.PP
 In times and in UT offsets with absolute value less than 100 hours,
 the seconds are omitted if they are zero, and
 the minutes are also omitted if they are also zero.  Positive UT
@@ -137,14 +137,14 @@ abbreviation begins with
 .q "\*-"
 or is
 .q "zzz".
-.P
+.PP
 In double-quoted strings, escape sequences represent unusual
 characters.  The escape sequences are \es for space, and \e", \e\e,
 \ef, \en, \er, \et, and \ev with their usual meaning in the C
 programming language.  E.g., the double-quoted string
 \*(lq"CET\es\e"\e\e"\*(rq represents the character sequence \*(lqCET
 "\e\*(rq.\""
-.P
+.PP
 .ne 9
 Here is an example of the output, with the leading empty line omitted.
 (This example is shown with tab stops set far enough apart so that the
@@ -152,10 +152,9 @@ tabbed columns line up.)
 .nf
 .sp
 .if \n(.g .ft CR
-.if t .in +.5i
-.if n .in +2
+.in +2
 .nr w \w'1896-01-13  'u+\n(.i
-.ta \w'1896-01-13  'u +\w'12:01:26  'u +\w'-103126  'u +\w'HWT  'u
+.ta \w'1896-01-13\0\0'u +\w'12:01:26\0\0'u +\w'-103126\0\0'u +\w'HWT\0\0'u
 TZ="Pacific/Honolulu"
 -      -       -103126 LMT
 1896-01-13     12:01:26        -1030   HST
@@ -179,7 +178,7 @@ abbreviated HST.  Immediately after the second transition, the date is
 Immediately after the last transition the date is 1947-06-08 and the
 time is 02:30:00, and the following time interval is 10 hours west of
 UT, a standard time abbreviated HST.
-.P
+.PP
 .ne 10
 Here are excerpts from another example:
 .nf
@@ -209,7 +208,7 @@ Time discontinuities are found by sampling the results returned by
 at twelve-hour intervals.
 This works in all real-world cases;
 one can construct artificial time zones for which this fails.
-.P
+.PP
 In the
 .B \*-v
 and
index 557ccd282be358b114976d29c2750ff64512753c..0ad373a2dd17ccf442f78c14b31f043835f6b752 100644 (file)
@@ -95,7 +95,7 @@ as local time.
 .B zic
 will act as if the input contained a link line of the form
 .sp
-.ti +.5i
+.ti +2
 .ta \w'Link\0\0'u  +\w'\fItimezone\fP\0\0'u
 Link   \fItimezone\fP          localtime
 .sp
@@ -118,9 +118,15 @@ TZ strings like "EET\*-2EEST" that lack transition rules.
 .B zic
 will act as if the input contained a link line of the form
 .sp
-.ti +.5i
+.ti +2
 Link   \fItimezone\fP          posixrules
 .sp
+If
+.I timezone
+is
+.q "\*-"
+(the default), any already-existing link is removed.
+.sp
 Unless
 .I timezone is
 .q "\*-" ,
@@ -131,12 +137,6 @@ and it should not be combined with
 if
 .IR timezone 's
 transitions are at standard time or Universal Time (UT) instead of local time.
-.sp
-If
-.I timezone
-is
-.BR \*- ,
-any already-existing link is removed.
 .TP
 .BR "\*-r " "[\fB@\fP\fIlo\fP][\fB/@\fP\fIhi\fP]"
 Limit the applicability of output files
@@ -171,7 +171,7 @@ boundaries, particularly if
 causes a TZif file to contain explicit entries for
 .RI pre- hi
 transitions rather than concisely representing them
-with an extended POSIX TZ string.
+with an extended POSIX.1-2017 TZ string.
 Also see the
 .B "\*-b slim"
 option for another way to shrink output size.
@@ -181,10 +181,10 @@ Generate redundant trailing explicit transitions for timestamps
 that occur less than
 .I hi
 seconds since the Epoch, even though the transitions could be
-more concisely represented via the extended POSIX TZ string.
+more concisely represented via the extended POSIX.1-2017 TZ string.
 This option does not affect the represented timestamps.
 Although it accommodates nonstandard TZif readers
-that ignore the extended POSIX TZ string,
+that ignore the extended POSIX.1-2017 TZ string,
 it increases the size of the altered output files.
 .TP
 .BI "\*-t " file
@@ -194,37 +194,37 @@ the named file rather than in the standard location.
 .B \*-v
 Be more verbose, and complain about the following situations:
 .RS
-.P
+.PP
 The input specifies a link to a link,
 something not supported by some older parsers, including
 .B zic
 itself through release 2022e.
-.P
+.PP
 A year that appears in a data file is outside the range
 of representable years.
-.P
+.PP
 A time of 24:00 or more appears in the input.
 Pre-1998 versions of
 .B zic
 prohibit 24:00, and pre-2007 versions prohibit times greater than 24:00.
-.P
+.PP
 A rule goes past the start or end of the month.
 Pre-2004 versions of
 .B zic
 prohibit this.
-.P
+.PP
 A time zone abbreviation uses a
 .B %z
 format.
 Pre-2015 versions of
 .B zic
 do not support this.
-.P
+.PP
 A timestamp contains fractional seconds.
 Pre-2018 versions of
 .B zic
 do not support this.
-.P
+.PP
 The input contains abbreviations that are mishandled by pre-2018 versions of
 .B zic
 due to a longstanding coding bug.
@@ -242,20 +242,20 @@ and
 .q Su
 for
 .q Sun .
-.P
+.PP
 The output file does not contain all the information about the
 long-term future of a timezone, because the future cannot be summarized as
-an extended POSIX TZ string.  For example, as of 2023 this problem
+an extended POSIX.1-2017 TZ string.  For example, as of 2023 this problem
 occurs for Morocco's daylight-saving rules, as these rules are based
 on predictions for when Ramadan will be observed, something that
-an extended POSIX TZ string cannot represent.
-.P
+an extended POSIX.1-2017 TZ string cannot represent.
+.PP
 The output contains data that may not be handled properly by client
 code designed for older
 .B zic
 output formats.  These compatibility issues affect only timestamps
 before 1970 or after the start of 2038.
-.P
+.PP
 The output contains a truncated leap second table,
 which can cause some older TZif readers to misbehave.
 This can occur if the
@@ -264,17 +264,17 @@ option is used, and either an Expires line is present or
 the
 .B "\*-r"
 option is also used.
-.P
+.PP
 The output file contains more than 1200 transitions,
 which may be mishandled by some clients.
 The current reference client supports at most 2000 transitions;
 pre-2014 versions of the reference client support at most 1200
 transitions.
-.P
+.PP
 A time zone abbreviation has fewer than 3 or more than 6 characters.
 POSIX requires at least 3, and requires implementations to support
 at least 6.
-.P
+.PP
 An output file name contains a byte that is not an ASCII letter,
 .q "\*-" ,
 .q "/" ,
@@ -288,7 +288,7 @@ or that starts with
 Input files use the format described in this section; output files use
 .BR tzfile (5)
 format.
-.P
+.PP
 Input files should be text files, that is, they should be a series of
 zero or more lines, each ending in a newline byte and containing at
 most 2048 bytes counting the newline, and without any NUL bytes.
@@ -303,7 +303,7 @@ nearly any character, other software will work better if these are
 limited to the restricted syntax described under the
 .B \*-v
 option.
-.P
+.PP
 Input lines are made up of fields.
 Fields are separated from one another by one or more white space characters.
 The white space characters are space, form feed, carriage return, newline,
@@ -316,7 +316,7 @@ White space characters and sharp characters may be enclosed in double quotes
 Any line that is blank (after comment stripping) is ignored.
 Nonblank lines are expected to be of one of three types:
 rule lines, zone lines, and link lines.
-.P
+.PP
 Names must be in English and are case insensitive.
 They appear in several contexts, and include month and weekday names
 and keywords such as
@@ -327,22 +327,22 @@ and
 .BR "Zone" .
 A name can be abbreviated by omitting all but an initial prefix; any
 abbreviation must be unambiguous in context.
-.P
+.PP
 A rule line has the form
 .nf
-.ti +.5i
+.ti +2
 .ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'\*-\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00w\0\0'u +\w'1:00d\0\0'u
 .sp
 Rule   NAME    FROM    TO      \*-     IN      ON      AT      SAVE    LETTER/S
 .sp
 For example:
-.ti +.5i
+.ti +2
 .sp
 Rule   US      1967    1973    \*-     Apr     lastSun 2:00w   1:00d   D
 .sp
 .fi
 The fields that make up a rule line are:
-.TP "\w'LETTER/S'u"
+.TP
 .B NAME
 Gives the name of the rule set that contains this line.
 The name must start with a character that is neither
@@ -360,24 +360,15 @@ an unquoted name should not contain characters from the set
 Gives the first year in which the rule applies.
 Any signed integer year can be supplied; the proleptic Gregorian calendar
 is assumed, with year 0 preceding year 1.
-The word
-.B minimum
-(or an abbreviation) means the indefinite past.
-The word
-.B maximum
-(or an abbreviation) means the indefinite future.
 Rules can describe times that are not representable as time values,
 with the unrepresentable times ignored; this allows rules to be portable
 among hosts with differing time value types.
 .TP
 .B TO
 Gives the final year in which the rule applies.
-In addition to
-.B minimum
-and
+The word
 .B maximum
-(as above),
-the word
+(or an abbreviation) means the indefinite future, and the word
 .B only
 (or an abbreviation)
 may be used to repeat the value of the
@@ -404,7 +395,7 @@ Month names may be abbreviated.
 Gives the day on which the rule takes effect.
 Recognized forms include:
 .nf
-.in +.5i
+.in +2
 .sp
 .ta \w'Sun<=25\0\0'u
 5      the fifth of the month
@@ -413,7 +404,7 @@ lastMon     the last Monday in the month
 Sun>=8 first Sunday on or after the eighth
 Sun<=25        last Sunday on or before the 25th
 .fi
-.in -.5i
+.in
 .sp
 A weekday name (e.g.,
 .BR "Sunday" )
@@ -440,7 +431,7 @@ Gives the time of day at which the rule takes effect,
 relative to 00:00, the start of a calendar day.
 Recognized forms include:
 .nf
-.in +.5i
+.in +2
 .sp
 .ta \w'00:19:32.13\0\0'u
 2      time in hours
@@ -454,7 +445,7 @@ Recognized forms include:
 \*-2:30        2.5 hours before 00:00
 \*-    equivalent to 0
 .fi
-.in -.5i
+.in
 .sp
 Although
 .B zic
@@ -528,22 +519,22 @@ of time zone abbreviations to be used when this rule is in effect.
 If this field is
 .q \*- ,
 the variable part is null.
-.P
+.PP
 A zone line has the form
 .sp
 .nf
-.ti +.5i
+.ti +2
 .ta \w'Zone\0\0'u +\w'Asia/Amman\0\0'u +\w'STDOFF\0\0'u +\w'Jordan\0\0'u +\w'FORMAT\0\0'u
 Zone   NAME    STDOFF  RULES   FORMAT  [UNTIL]
 .sp
 For example:
 .sp
-.ti +.5i
+.ti +2
 Zone   Asia/Amman      2:00    Jordan  EE%sT   2017 Oct 27 01:00
 .sp
 .fi
 The fields that make up a zone line are:
-.TP "\w'STDOFF'u"
+.TP
 .B NAME
 The name of the timezone.
 This is the name used in creating the time conversion information file for the
@@ -632,7 +623,7 @@ Continuation lines may contain
 .q "until"
 information, just as zone lines do, indicating that the next line is a further
 continuation.
-.P
+.PP
 If a zone changes at the same instant that a rule would otherwise take
 effect in the earlier zone or continuation line, the rule is ignored.
 A zone or continuation line
@@ -647,7 +638,7 @@ earliest rule use the rule in effect after
 first transition into standard time.
 In a single zone it is an error if two rules take effect at the same
 instant, or if two zone changes take effect at the same instant.
-.P
+.PP
 If a continuation line subtracts
 .I N
 seconds from the UT offset after a transition that would be
@@ -663,15 +654,15 @@ For example:
 .br
 .ne 7
 .nf
-.in +2m
+.in +2
 .ta \w'# Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'2006\0\0'u +\w'\*-\0\0'u +\w'Oct\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
 .sp
 # Rule NAME    FROM    TO      \*-     IN      ON      AT      SAVE    LETTER/S
 Rule   US      1967    2006    -       Oct     lastSun 2:00    0       S
 Rule   US      1967    1973    -       Apr     lastSun 2:00    1:00    D
-.ta \w'Zone\0\0America/Menominee\0\0'u +\w'STDOFF\0\0'u +\w'RULES\0\0'u +\w'FORMAT\0\0'u
-# Zone\0\0NAME STDOFF  RULES   FORMAT  [UNTIL]
-Zone\0\0America/Menominee      \*-5:00 \*-     EST     1973 Apr 29 2:00
+.ta \w'# Zone\0\0'u +\w'America/Menominee\0\0'u +\w'STDOFF\0\0'u +\w'RULES\0\0'u +\w'FORMAT\0\0'u
+# Zone NAME    STDOFF  RULES   FORMAT  [UNTIL]
+Zone   America/Menominee       \*-5:00 \*-     EST     1973 Apr 29 2:00
        \*-6:00 US      C%sT
 .sp
 .in
@@ -683,17 +674,17 @@ However,
 .B zic
 interprets this more sensibly as a single transition from 02:00 CST (\*-05) to
 02:00 CDT (\*-05).
-.P
+.PP
 A link line has the form
 .sp
 .nf
-.ti +.5i
+.ti +2
 .ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
 Link   TARGET  LINK-NAME
 .sp
 For example:
 .sp
-.ti +.5i
+.ti +2
 Link   Europe/Istanbul Asia/Istanbul
 .sp
 .fi
@@ -717,7 +708,7 @@ For example:
 .sp
 .ne 3
 .nf
-.in +2m
+.in +2
 .ta \w'Zone\0\0'u +\w'Greenwich\0\0'u
 Link   Greenwich       G_M_T
 Link   Etc/GMT Greenwich
@@ -727,23 +718,23 @@ Zone      Etc/GMT\0\00\0\0\*-\0\0GMT
 .fi
 The two links are chained together, and G_M_T, Greenwich, and Etc/GMT
 all name the same zone.
-.P
+.PP
 Except for continuation lines,
 lines may appear in any order in the input.
 However, the behavior is unspecified if multiple zone or link lines
 define the same name.
-.P
+.PP
 The file that describes leap seconds can have leap lines and an
 expiration line.
 Leap lines have the following form:
 .nf
-.ti +.5i
+.ti +2
 .ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
 .sp
 Leap   YEAR    MONTH   DAY     HH:MM:SS        CORR    R/S
 .sp
 For example:
-.ti +.5i
+.ti +2
 .sp
 Leap   2016    Dec     31      23:59:60        +       S
 .sp
@@ -775,7 +766,7 @@ or
 .q "Rolling"
 if the leap second time given by the other fields should be interpreted as
 local (wall clock) time.
-.P
+.PP
 Rolling leap seconds were implemented back when it was not
 clear whether common practice was rolling or stationary,
 with concerns that one would see
@@ -788,16 +779,16 @@ which means rolling leap seconds are not used in practice;
 also, they are not supported if the
 .B \*-r
 option is used.
-.P
+.PP
 The expiration line, if present, has the form:
 .nf
-.ti +.5i
+.ti +2
 .ta \w'Expires\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u
 .sp
 Expires        YEAR    MONTH   DAY     HH:MM:SS
 .sp
 For example:
-.ti +.5i
+.ti +2
 .sp
 Expires        2020    Dec     28      00:00:00
 .sp
@@ -816,7 +807,7 @@ Here is an extended example of
 .B zic
 input, intended to illustrate many of its features.
 .nf
-.in +2m
+.in +2
 .ta \w'# Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'\*-\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
 .sp
 # Rule NAME    FROM    TO      \*-     IN      ON      AT      SAVE    LETTER/S
@@ -856,7 +847,7 @@ and Swiss daylight saving rules (defined with lines beginning with
 .q "Rule Swiss")
 apply.  From 1981 to the present, EU daylight saving rules have
 applied, and the UTC offset has remained at one hour.
-.P
+.PP
 In 1941 and 1942, daylight saving time applied from the first Monday
 in May at 01:00 to the first Monday in October at 02:00.
 The pre-1981 EU daylight-saving rules have no effect
@@ -864,7 +855,7 @@ here, but are included for completeness.  Since 1981, daylight
 saving has begun on the last Sunday in March at 01:00 UTC.
 Until 1995 it ended the last Sunday in September at 01:00 UTC,
 but this changed to the last Sunday in October starting in 1996.
-.P
+.PP
 For purposes of display,
 .q "LMT"
 and
@@ -886,7 +877,7 @@ you may need to use local standard time in the
 .B AT
 field of the earliest transition time's rule to ensure that
 the earliest transition time recorded in the compiled file is correct.
-.P
+.PP
 If,
 for a particular timezone,
 a clock advance caused by the start of daylight saving