NetBSD/lib/libc/time/tzfile.5

143 lines
3.8 KiB
Groff
Raw Normal View History

.\" $NetBSD: tzfile.5,v 1.11 2002/10/01 18:16:00 wiz Exp $
2001-09-16 20:53:45 +04:00
.\"
.\" @(#)tzfile.5 7.11
.\" This file is in the public domain, so clarified as of
.\" 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov).
.Dd September 16, 2001
.Os
.Dt TZFILE 5
.Sh NAME
.Nm tzfile
.Nd time zone information
.Sh SYNOPSIS
.Fd #include \*[Lt]tzfile.h\*[Gt]
2001-09-16 20:53:45 +04:00
.Sh DESCRIPTION
1995-03-10 02:21:48 +03:00
The time zone information files used by
2001-09-16 20:53:45 +04:00
.Xr tzset 3
begin with the magic characters
.Dq TZif
to identify them as time zone information files,
1998-09-10 19:58:38 +04:00
followed by sixteen bytes reserved for future use,
1995-03-10 02:21:48 +03:00
followed by six four-byte values of type
2001-09-16 20:53:45 +04:00
.Fa long ,
written in a
.Dq standard
byte order (the high-order byte of the value is written first).
These values are, in order:
.Bl -tag -width XXXXXX -compact
.It Va tzh_ttisgmtcnt
1998-01-22 10:06:56 +03:00
The number of UTC/local indicators stored in the file.
2001-09-16 20:53:45 +04:00
.It Va tzh_ttisstdcnt
1995-03-10 02:21:48 +03:00
The number of standard/wall indicators stored in the file.
2001-09-16 20:53:45 +04:00
.It Va tzh_leapcnt
1995-03-10 02:21:48 +03:00
The number of leap seconds for which data is stored in the file.
2001-09-16 20:53:45 +04:00
.It Va tzh_timecnt
The number of
.Dq transition times
for which data is stored in the file.
.It Va tzh_typecnt
The number of
.Dq local time types
for which data is stored in the file (must not be zero).
.It Va tzh_charcnt
1995-03-10 02:21:48 +03:00
The number of characters of "time zone abbreviation strings"
stored in the file.
2001-09-16 20:53:45 +04:00
.El
.Pp
1995-03-10 02:21:48 +03:00
The above header is followed by
2001-09-16 20:53:45 +04:00
.Va tzh_timecnt
1995-03-10 02:21:48 +03:00
four-byte values of type
2001-09-16 20:53:45 +04:00
.Fa long ,
1995-03-10 02:21:48 +03:00
sorted in ascending order.
2001-09-16 20:53:45 +04:00
These values are written in
.Dq standard
byte order.
Each is used as a transition time (as returned by
2001-09-16 20:53:45 +04:00
.Xr time 3 )
1995-03-10 02:21:48 +03:00
at which the rules for computing local time change.
Next come
2001-09-16 20:53:45 +04:00
.Va tzh_timecnt
1995-03-10 02:21:48 +03:00
one-byte values of type
2001-09-16 20:53:45 +04:00
.Fa unsigned char ;
each one tells which of the different types of
.Dq local time
types described in the file is associated with the same-indexed
transition time.
These values serve as indices into an array of
2001-09-16 20:53:45 +04:00
.Fa ttinfo
1995-03-10 02:21:48 +03:00
structures that appears next in the file;
these structures are defined as follows:
2001-09-16 20:53:45 +04:00
.Bd -literal
1995-03-10 02:21:48 +03:00
struct ttinfo {
long tt_gmtoff;
int tt_isdst;
unsigned int tt_abbrind;
};
2001-09-16 20:53:45 +04:00
.Ed
1995-03-10 02:21:48 +03:00
Each structure is written as a four-byte value for
2001-09-16 20:53:45 +04:00
.Va tt_gmtoff
1995-03-10 02:21:48 +03:00
of type
2001-09-16 20:53:45 +04:00
.Fa long ,
1995-03-10 02:21:48 +03:00
in a standard byte order, followed by a one-byte value for
2001-09-16 20:53:45 +04:00
.Va tt_isdst
1995-03-10 02:21:48 +03:00
and a one-byte value for
2001-09-16 20:53:45 +04:00
.Va tt_abbrind .
1995-03-10 02:21:48 +03:00
In each structure,
2001-09-16 20:53:45 +04:00
.Va tt_gmtoff
1998-01-22 10:06:56 +03:00
gives the number of seconds to be added to UTC,
2001-09-16 20:53:45 +04:00
.Va tt_isdst
1995-03-10 02:21:48 +03:00
tells whether
2001-09-16 20:53:45 +04:00
.Va tm_isdst
1995-03-10 02:21:48 +03:00
should be set by
2001-09-16 20:53:45 +04:00
.Xr localtime 3
1995-03-10 02:21:48 +03:00
and
2001-09-16 20:53:45 +04:00
.Va tt_abbrind
1995-03-10 02:21:48 +03:00
serves as an index into the array of time zone abbreviation characters
that follow the
2001-09-16 20:53:45 +04:00
.Va ttinfo
1995-03-10 02:21:48 +03:00
structure(s) in the file.
2001-09-16 20:53:45 +04:00
.Pp
1995-03-10 02:21:48 +03:00
Then there are
2001-09-16 20:53:45 +04:00
.Va tzh_leapcnt
1995-03-10 02:21:48 +03:00
pairs of four-byte values, written in standard byte order;
the first value of each pair gives the time
(as returned by
2001-09-16 20:53:45 +04:00
.Xr time 3 )
1995-03-10 02:21:48 +03:00
at which a leap second occurs;
the second gives the
2001-09-16 20:53:45 +04:00
.Em total
1995-03-10 02:21:48 +03:00
number of leap seconds to be applied after the given time.
The pairs of values are sorted in ascending order by time.
2001-09-16 20:53:45 +04:00
.Pp
1995-03-10 02:21:48 +03:00
Then there are
2001-09-16 20:53:45 +04:00
.Va tzh_ttisstdcnt
1995-03-10 02:21:48 +03:00
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.
2001-09-16 20:53:45 +04:00
.Pp
1995-03-10 02:21:48 +03:00
Finally there are
2001-09-16 20:53:45 +04:00
.Va tzh_ttisgmtcnt
1998-01-22 10:06:56 +03:00
UTC/local indicators, each stored as a one-byte value;
1995-03-10 02:21:48 +03:00
they tell whether the transition times associated with local time types
1998-01-22 10:06:56 +03:00
were specified as UTC or local time,
1995-03-10 02:21:48 +03:00
and are used when a time zone file is used in handling POSIX-style
time zone environment variables.
2001-09-16 20:53:45 +04:00
.Pp
.Xr localtime 3
1995-03-10 02:21:48 +03:00
uses the first standard-time
2001-09-16 20:53:45 +04:00
.Fa ttinfo
1995-03-10 02:21:48 +03:00
structure in the file
(or simply the first
2001-09-16 20:53:45 +04:00
.Fa ttinfo
1995-03-10 02:21:48 +03:00
structure in the absence of a standard-time structure)
if either
2001-09-16 20:53:45 +04:00
.Va tzh_timecnt
1995-03-10 02:21:48 +03:00
is zero or the time argument is less than the first transition time recorded
in the file.
2001-09-16 20:53:45 +04:00
.Sh SEE ALSO
.Xr ctime 3 ,
.Xr localtime 3 ,
.Xr time 3