root/trunk/freewrt/scripts/tzfile.h

Revision 210, 4.9 kB (checked in by tg, 2 years ago)

this one is required by paxmirabilis on e.g. GNU/Linux

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