mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-04 12:52:15 +00:00
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
This commit is contained in:
parent
7ed6908ffd
commit
6efae010ca
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=42989
@ -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);
|
||||
|
@ -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).
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user