aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man5/tzfile.572
1 files changed, 69 insertions, 3 deletions
diff --git a/man5/tzfile.5 b/man5/tzfile.5
index 771bfd2d1e..be09f303f8 100644
--- a/man5/tzfile.5
+++ b/man5/tzfile.5
@@ -20,7 +20,7 @@ Timezone information files
begin with the magic characters "TZif" to identify them as
timezone information files,
followed by a character identifying the version of the file's format
-(as of 2005, either an ASCII NUL (\(aq\\0\(aq) or a \(aq2\(aq)
+(as of 2005, either an ASCII NUL (\(aq\\0\(aq) or a \(aq2\(aq (\fB0x32\fP))
followed by fifteen bytes containing zeros reserved for future use,
followed by six four-byte values of type
.IR long ,
@@ -144,16 +144,82 @@ if either
.I tzh_timecnt
is zero or the time argument is less than the first transition time recorded
in the file.
-.PP
+.SS Version 2 format
For version-2-format timezone files,
the above header and data is followed by a second header and data,
identical in format except that
-eight bytes are used for each transition time or leap-second time.
+eight bytes are used for each transition time or leap-second time
+(and that the version byte in the header record is
+\fB0x32\fP rather than \fB0x00\fP).
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).
+.PP
+The second section of the timezone file consists of another 44-byte header
+record, identical in structure to the one at the beginning of the file,
+except that it applies to the data that follows,
+which is also identical in structure
+to the first section of the timezone file, with the following differences:
+.IP * 3
+The transition time values, after the header, are eight-byte values.
+.IP *
+In each leap second record, the leap second value is an eight-byte value.
+The accumulated leap second count is still a four-byte value.
+.PP
+In all cases, the eight-byte time values are given in
+the "standard" byte order,
+the high-order byte first.
+.SS POSIX timezone string
+The second eight-byte time value section is followed by an optional
+third section:
+a single ASCII newline character (\(aq\\n\(aq),
+then a text string followed by a second
+newline character.
+The text string is a POSIX timezone string, whose format is described in the
+.BR tzset (3)
+manual page.
+.PP
+The POSIX timezone string defines a rule for computing transition times
+that follow the last transition time explicitly specified in the timezone
+information file.
+.SS Summary of the timezone information file format
+\&
+.sp 2
+.RS
+.nf
+Four-byte value section
+(header version \fB0x00\fP or \fB0x32\fP)
+ Header record
+ Four-byte transition times
+ Transition time index
+ \fBttinfo\fP structures
+ Timezone abbreviation array
+ Leap second records
+ Standard/Wall array
+ UTC/Local array
+
+Eight-byte value section
+(only if first header version is \fB0x32\fP,
+the second header's version is also \fB0x32\fP)
+ Header record
+ Eight-byte transition times
+ Transition time index
+ \fBttinfo\fP structures
+ Timezone abbreviation array
+ Leap second records
+ Standard/Wall array
+ UTC/Local array
+
+Third section
+(optional, only in \fB0x32\fP version files)
+ Newline character
+ Timezone string
+ Newline character
+.fi
+.RE
+
.SH SEE ALSO
.BR ctime (3),
.BR tzset (3),