tzfile.h revision 1.5
1/*	$NetBSD: tzfile.h,v 1.5 1998/02/02 21:08:11 perry Exp $	*/
2
3/*
4 * Copyright (c) 1988, 1993
5 *	The Regents of the University of California.  All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Arthur David Olson of the National Cancer Institute.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 *    must display the following acknowledgement:
20 *	This product includes software developed by the University of
21 *	California, Berkeley and its contributors.
22 * 4. Neither the name of the University nor the names of its contributors
23 *    may be used to endorse or promote products derived from this software
24 *    without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 *	@(#)tzfile.h	8.1 (Berkeley) 6/2/93
39 */
40
41#ifndef _TZFILE_H_
42#define	_TZFILE_H_
43
44/*
45 * Information about time zone files.
46 */
47			/* Time zone object file directory */
48#define TZDIR		"/usr/share/zoneinfo"
49#define TZDEFAULT	"/etc/localtime"
50#define TZDEFRULES	"posixrules"
51
52/*
53** Each file begins with. . .
54*/
55
56struct tzhead {
57	char	tzh_reserved[24];	/* reserved for future use */
58	char	tzh_ttisstdcnt[4];	/* coded number of trans. time flags */
59	char	tzh_leapcnt[4];		/* coded number of leap seconds */
60	char	tzh_timecnt[4];		/* coded number of transition times */
61	char	tzh_typecnt[4];		/* coded number of local time types */
62	char	tzh_charcnt[4];		/* coded number of abbr. chars */
63};
64
65/*
66** . . .followed by. . .
67**
68**	tzh_timecnt (char [4])s		coded transition times a la time(2)
69**	tzh_timecnt (unsigned char)s	types of local time starting at above
70**	tzh_typecnt repetitions of
71**		one (char [4])		coded GMT offset in seconds
72**		one (unsigned char)	used to set tm_isdst
73**		one (unsigned char)	that's an abbreviation list index
74**	tzh_charcnt (char)s		'\0'-terminated zone abbreviations
75**	tzh_leapcnt repetitions of
76**		one (char [4])		coded leap second transition times
77**		one (char [4])		total correction after above
78**	tzh_ttisstdcnt (char)s		indexed by type; if TRUE, transition
79**					time is standard time, if FALSE,
80**					transition time is wall clock time
81**					if absent, transition times are
82**					assumed to be wall clock time
83*/
84
85/*
86** In the current implementation, "tzset()" refuses to deal with files that
87** exceed any of the limits below.
88*/
89
90/*
91** The TZ_MAX_TIMES value below is enough to handle a bit more than a
92** year's worth of solar time (corrected daily to the nearest second) or
93** 138 years of Pacific Presidential Election time
94** (where there are three time zone transitions every fourth year).
95*/
96#define TZ_MAX_TIMES	370
97
98#define NOSOLAR			/* 4BSD doesn't currently handle solar time */
99
100#ifndef NOSOLAR
101#define TZ_MAX_TYPES	256	/* Limited by what (unsigned char)'s can hold */
102#else
103#define TZ_MAX_TYPES	10	/* Maximum number of local time types */
104#endif
105
106#define TZ_MAX_CHARS	50	/* Maximum number of abbreviation characters */
107
108#define	TZ_MAX_LEAPS	50	/* Maximum number of leap second corrections */
109
110#define SECSPERMIN	60
111#define MINSPERHOUR	60
112#define HOURSPERDAY	24
113#define DAYSPERWEEK	7
114#define DAYSPERNYEAR	365
115#define DAYSPERLYEAR	366
116#define SECSPERHOUR	(SECSPERMIN * MINSPERHOUR)
117#define SECSPERDAY	((long) SECSPERHOUR * HOURSPERDAY)
118#define MONSPERYEAR	12
119
120#define TM_SUNDAY	0
121#define TM_MONDAY	1
122#define TM_TUESDAY	2
123#define TM_WEDNESDAY	3
124#define TM_THURSDAY	4
125#define TM_FRIDAY	5
126#define TM_SATURDAY	6
127
128#define TM_JANUARY	0
129#define TM_FEBRUARY	1
130#define TM_MARCH	2
131#define TM_APRIL	3
132#define TM_MAY		4
133#define TM_JUNE		5
134#define TM_JULY		6
135#define TM_AUGUST	7
136#define TM_SEPTEMBER	8
137#define TM_OCTOBER	9
138#define TM_NOVEMBER	10
139#define TM_DECEMBER	11
140
141#define TM_YEAR_BASE	1900
142
143#define EPOCH_YEAR	1970
144#define EPOCH_WDAY	TM_THURSDAY
145
146/*
147** Accurate only for the past couple of centuries;
148** that will probably do.
149*/
150
151#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
152
153#endif /* !_TZFILE_H_ */
154