summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1999-01-21 17:22:59 +0000
committerwollman <wollman@FreeBSD.org>1999-01-21 17:22:59 +0000
commiteb63a8058f661b6501ad66d148ede682ec3c7ca9 (patch)
treed1ca153fcab31c4db9b282be4abde93b0da2271a /lib
parent78cf17718823a5a0f70549acd4e7c7cd8b209fbb (diff)
downloadFreeBSD-src-eb63a8058f661b6501ad66d148ede682ec3c7ca9.zip
FreeBSD-src-eb63a8058f661b6501ad66d148ede682ec3c7ca9.tar.gz
Merge from vendor branch: timezone file structure changes and doco.
Fix localtime.c to deal with new magic number field. Obtained from: ftp://elsie.nci.nih.gov/pub/tzcode1999a.tar.gz
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/stdtime/localtime.c2
-rw-r--r--lib/libc/stdtime/tzfile.555
-rw-r--r--lib/libc/stdtime/tzfile.h13
3 files changed, 45 insertions, 25 deletions
diff --git a/lib/libc/stdtime/localtime.c b/lib/libc/stdtime/localtime.c
index 9e130bd..6603336 100644
--- a/lib/libc/stdtime/localtime.c
+++ b/lib/libc/stdtime/localtime.c
@@ -327,7 +327,7 @@ register struct state * const sp;
if (close(fid) != 0)
return -1;
p = buf;
- p += sizeof tzhp->tzh_reserved;
+ p += (sizeof tzhp->tzh_magic) + (sizeof tzhp->tzh_reserved);
ttisstdcnt = (int) detzcode(p);
p += 4;
ttisgmtcnt = (int) detzcode(p);
diff --git a/lib/libc/stdtime/tzfile.5 b/lib/libc/stdtime/tzfile.5
index 880e3af..946ae48 100644
--- a/lib/libc/stdtime/tzfile.5
+++ b/lib/libc/stdtime/tzfile.5
@@ -1,15 +1,20 @@
+.\" $Id: tzfile.5,v 1.6 1999/01/20 18:54:12 wollman Exp $
.Dd September 13, 1994
.Dt TZFILE 5
-.Os FreeBSD 2.0
+.Os FreeBSD 3.0
.Sh NAME
.Nm tzfile
.Nd timezone information
.Sh SYNOPSIS
-.Fd #include <tzfile.h>
+.Fd #include "/usr/src/lib/libc/stdtime/tzfile.h"
.Sh DESCRIPTION
The time zone information files used by
.Xr tzset 3
-begin with bytes reserved for future use,
+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).
@@ -17,23 +22,25 @@ These values are,
in order:
.Pp
.Bl -tag -compact -width tzh_ttisstdcnt
-.It Li tzh_ttisstdcnt
+.It Va tzh_ttisgmtcnt
+The number of UTC/local indicators stored in the file.
+.It Va tzh_ttisstdcnt
The number of standard/wall indicators stored in the file.
-.It Li tzh_leapcnt
+.It Va tzh_leapcnt
The number of leap seconds for which data is stored in the file.
-.It Li tzh_timecnt
+.It Va tzh_timecnt
The number of ``transition times'' for which data is stored
in the file.
-.It Li tzh_typecnt
+.It Va tzh_typecnt
The number of ``local time types'' for which data is stored
in the file (must not be zero).
-.It Li tzh_charcnt
+.It Va tzh_charcnt
The number of characters of ``time zone abbreviation strings''
stored in the file.
.El
.Pp
The above header is followed by
-.Li tzh_timecnt
+.Va tzh_timecnt
four-byte values of type
.Fa long ,
sorted in ascending order.
@@ -42,7 +49,7 @@ Each is used as a transition time (as returned by
.Xr time 3 )
at which the rules for computing local time change.
Next come
-.Li tzh_timecnt
+.Va tzh_timecnt
one-byte values of type
.Fa "unsigned char" ;
each one tells which of the different types of ``local time'' types
@@ -61,30 +68,30 @@ struct ttinfo {
.Ed
.Pp
Each structure is written as a four-byte value for
-.Li tt_gmtoff
+.Va tt_gmtoff
of type
.Fa long ,
in a standard byte order, followed by a one-byte value for
-.Li tt_isdst
+.Va tt_isdst
and a one-byte value for
-.Li tt_abbrind .
+.Va tt_abbrind .
In each structure,
-.Li tt_gmtoff
-gives the number of seconds to be added to GMT,
+.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
-.Li tt_abbrind
+.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.
.Pp
Then there are
-.Li tzh_leapcnt
+.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
@@ -95,14 +102,22 @@ the second gives the
number of leap seconds to be applied after the given time.
The pairs of values are sorted in ascending order by time.
.Pp
-Finally there are
-.Li tzh_ttisstdcnt
+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.
.Pp
+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.
+.Pp
.Nm localtime
uses the first standard-time
.Li ttinfo
@@ -119,3 +134,5 @@ in the file.
.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).
diff --git a/lib/libc/stdtime/tzfile.h b/lib/libc/stdtime/tzfile.h
index 58cdc3d..c1b27ea 100644
--- a/lib/libc/stdtime/tzfile.h
+++ b/lib/libc/stdtime/tzfile.h
@@ -4,7 +4,7 @@
/*
** This file is in the public domain, so clarified as of
-** June 5, 1996 by Arthur David Olson (arthur_david_olson@nih.gov).
+** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov).
*/
/*
@@ -22,7 +22,7 @@
#ifndef lint
#ifndef NOID
/*
-static char tzfilehid[] = "@(#)tzfile.h 7.8";
+static char tzfilehid[] = "@(#)tzfile.h 7.14";
*/
#endif /* !defined NOID */
#endif /* !defined lint */
@@ -47,8 +47,11 @@ static char tzfilehid[] = "@(#)tzfile.h 7.8";
** Each file begins with. . .
*/
+#define TZ_MAGIC "TZif"
+
struct tzhead {
- char tzh_reserved[20]; /* reserved for future use */
+ char tzh_magic[4]; /* TZ_MAGIC */
+ char tzh_reserved[16]; /* reserved for future use */
char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */
char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */
char tzh_leapcnt[4]; /* coded number of leap seconds */
@@ -63,7 +66,7 @@ struct tzhead {
** tzh_timecnt (char [4])s coded transition times a la time(2)
** tzh_timecnt (unsigned char)s types of local time starting at above
** tzh_typecnt repetitions of
-** one (char [4]) coded GMT offset in seconds
+** one (char [4]) coded UTC offset in seconds
** one (unsigned char) used to set tm_isdst
** one (unsigned char) that's an abbreviation list index
** tzh_charcnt (char)s '\0'-terminated zone abbreviations
@@ -76,7 +79,7 @@ struct tzhead {
** if absent, transition times are
** assumed to be wall clock time
** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition
-** time is GMT, if FALSE,
+** time is UTC, if FALSE,
** transition time is local time
** if absent, transition times are
** assumed to be local time
OpenPOWER on IntegriCloud