$FreeBSD: src/lib/libc/stdtime/tzfile.5,v 1.10 2001/07/10 13:41:23 ru Exp $
.Dd September 13, 1994 .Dt TZFILE 5 .Os .Sh NAME .Nm tzfile .Nd timezone information .Sh SYNOPSIS n 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).