.Dd September 13, 1994 .Dt TZFILE 5 .Os FreeBSD .Sh NAME .Nm tzfile .Nd timezone information .Sh SYNOPSIS .Fd #include "/usr/src/lib/libc/stdtime/tzfile.h" .Sh DESCRIPTION The time zone information files used by .Xr tzset 3 begin with the magic characters .Dq Li TZif to identify them as time zone information files, followed by sixteen bytes reserved for future use, followed by four four-byte values written in a ``standard'' byte order (the high-order byte of the value is written first). These values are, in order:
p l -tag -compact -width tzh_ttisstdcnt t Va tzh_ttisgmtcnt The number of UTC/local indicators stored in the file. t Va tzh_ttisstdcnt The number of standard/wall indicators stored in the file. t Va tzh_leapcnt The number of leap seconds for which data is stored in the file. t Va tzh_timecnt The number of ``transition times'' for which data is stored in the file. t Va tzh_typecnt The number of ``local time types'' for which data is stored in the file (must not be zero). t Va tzh_charcnt The number of characters of ``time zone abbreviation strings'' stored in the file. .El
p The above header is followed by .Va tzh_timecnt four-byte values of type .Fa long , sorted in ascending order. These values are written in ``standard'' byte order. Each is used as a transition time (as returned by .Xr time 3 ) at which the rules for computing local time change. Next come .Va tzh_timecnt one-byte values of type .Fa "unsigned char" ; each one tells which of the different types of ``local time'' types described in the file is associated with the same-indexed transition time. These values serve as indices into an array of .Fa ttinfo structures that appears next in the file; these structures are defined as follows:
p d -literal -offset indent struct ttinfo { long tt_gmtoff; int tt_isdst; unsigned int tt_abbrind; }; .Ed
p Each structure is written as a four-byte value for .Va tt_gmtoff of type .Fa long , in a standard byte order, followed by a one-byte value for .Va tt_isdst and a one-byte value for .Va tt_abbrind . In each structure, .Va tt_gmtoff gives the number of seconds to be added to UTC, .Li tt_isdst tells whether .Li tm_isdst should be set by .Xr localtime 3 and .Va tt_abbrind serves as an index into the array of time zone abbreviation characters that follow the .Li ttinfo structure(s) in the file.
p Then there are .Va tzh_leapcnt pairs of four-byte values, written in standard byte order; the first value of each pair gives the time (as returned by .Xr time 3 ) at which a leap second occurs; the second gives the .Em total number of leap seconds to be applied after the given time. The pairs of values are sorted in ascending order by time.
p Then there are .Va tzh_ttisstdcnt standard/wall indicators, each stored as a one-byte value; they tell whether the transition times associated with local time types were specified as standard time or wall clock time, and are used when a time zone file is used in handling POSIX-style time zone environment variables.
p Finally there are .Va tzh_ttisgmtcnt UTC/local indicators, each stored as a one-byte value; they tell whether the transition times associated with local time types were specified as UTC or local time, and are used when a time zone file is used in handling POSIX-style time zone environment variables.
p
.Nm localtime
uses the first standard-time
.Li ttinfo
structure in the file
(or simply the first
.Li ttinfo
structure in the absence of a standard-time structure)
if either
.Li tzh_timecnt
is zero or the time argument is less than the first transition time recorded
in the file.
.Sh SEE ALSO
.Xr ctime 3 ,
.Xr time2posix 3 ,
.Xr zic 8
@(#)tzfile.5 7.2
This file is in the public domain, so clarified as of
1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov).