tzfile(5)


NAME
     tzfile - time zone information

SYNOPSIS
     #include <tzfile.h>

DESCRIPTION
     The time zone  information  files  used  by  tzset(3)  begin  with  bytes
     reserved  for  future use, followed by six four-byte values of type long,
     written in a ``standard'' byte order (the high-order byte of the value is
     written first).  These values are, in order:

     tzh_ttisgmtcnt
          The number of GMT/local indicators stored in the file.

     tzh_ttisstdcnt
          The number of standard/wall indicators stored in the file.

     tzh_leapcnt
          The number of leap seconds for which data is stored in the file.

     tzh_timecnt
          The number of "transition times" for which data  is  stored  in  the
          file.

     tzh_typecnt
          The number of "local time types" for which data  is  stored  in  the
          file (must not be zero).

     tzh_charcnt
          The number of characters of "time zone abbreviation strings"  stored
          in the file.

     The above header is followed by  tzh_timecnt  four-byte  values  of  type
     long,   sorted   in   ascending  order.   These  values  are  written  in
     ``standard'' byte order.  Each is used as a transition time (as  returned
     by  time(2))  at  which  the rules for computing local time change.  Next
     come tzh_timecnt one-byte values of type 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 ttinfo structures that appears next in
     the file; these structures are defined as follows:

           struct ttinfo {
                 long            tt_gmtoff;
                 int             tt_isdst;
                 unsigned int    tt_abbrind;
           };

     Each structure is written as a four-byte  value  for  tt_gmtoff  of  type
     long, in a standard byte order, followed by a one-byte value for tt_isdst
     and  a one-byte value for tt_abbrind.  In each structure, tt_gmtoff gives
     the number of seconds to be added to GMT, tt_isdst tells whether tm_isdst
     should be set by localtime (3) and tt_abbrind serves as an index into the
     array of  time  zone  abbreviation  characters  that  follow  the  ttinfo
     structure(s) in the file.

     Then there are tzh_leapcnt pairs of four-byte values, written in standard
     byte  order;  the first value of each pair gives the time (as returned by
     time(2)) at which a leap second occurs; the second gives the total number
     of  leap seconds to be applied after the given time.  The pairs of values
     are sorted in ascending order by time.

     Then there are 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.

     Finally there are tzh_ttisgmtcnt GMT/local indicators, each stored  as  a
     one-byte  value;  they  tell whether the transition times associated with
     local time types were specified as GMT or local time, and are used when a
     time  zone  file  is  used  in handling POSIX-style time zone environment
     variables.

     Localtime uses the first standard-time ttinfo structure in the  file  (or
     simply  the  first  ttinfo  structure  in  the absence of a standard-time
     structure) if either tzh_timecnt is zero or the  time  argument  is  less
     than the first transition time recorded in the file.

SEE ALSO
     ctime(3), zic(8).