|
1 #ifndef TZFILE_H |
|
2 #define TZFILE_H/* |
|
3 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
4 * All rights reserved. |
|
5 * This component and the accompanying materials are made available |
|
6 * under the terms of "Eclipse Public License v1.0" |
|
7 * which accompanies this distribution, and is available |
|
8 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
9 * |
|
10 * Initial Contributors: |
|
11 * Nokia Corporation - initial contribution. |
|
12 * |
|
13 * Contributors: |
|
14 * |
|
15 * Description: |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 /* |
|
21 ** This header is for use ONLY with the time conversion code. |
|
22 ** There is no guarantee that it will remain unchanged, |
|
23 ** or that it will remain at all. |
|
24 ** Do NOT copy it to any system include directory. |
|
25 ** Thank you! |
|
26 */ |
|
27 |
|
28 /* |
|
29 ** ID |
|
30 */ |
|
31 |
|
32 #ifndef lint |
|
33 #ifndef NOID |
|
34 /* |
|
35 static char tzfilehid[] = "@(#)tzfile.h 7.14"; |
|
36 */ |
|
37 #endif /* !defined NOID */ |
|
38 #endif /* !defined lint */ |
|
39 |
|
40 /* |
|
41 ** Information about time zone files. |
|
42 */ |
|
43 |
|
44 #ifndef TZDIR |
|
45 #define TZDIR "/usr/share/zoneinfo" /* Time zone object file directory */ |
|
46 #endif /* !defined TZDIR */ |
|
47 |
|
48 #ifndef TZDEFAULT |
|
49 #define TZDEFAULT "/etc/localtime" |
|
50 #endif /* !defined TZDEFAULT */ |
|
51 |
|
52 #ifndef TZDEFRULES |
|
53 #define TZDEFRULES "posixrules" |
|
54 #endif /* !defined TZDEFRULES */ |
|
55 |
|
56 /* |
|
57 ** Each file begins with. . . |
|
58 */ |
|
59 |
|
60 #define TZ_MAGIC "TZif" |
|
61 |
|
62 struct tzhead { |
|
63 char tzh_magic[4]; /* TZ_MAGIC */ |
|
64 char tzh_reserved[16]; /* reserved for future use */ |
|
65 char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ |
|
66 char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ |
|
67 char tzh_leapcnt[4]; /* coded number of leap seconds */ |
|
68 char tzh_timecnt[4]; /* coded number of transition times */ |
|
69 char tzh_typecnt[4]; /* coded number of local time types */ |
|
70 char tzh_charcnt[4]; /* coded number of abbr. chars */ |
|
71 }; |
|
72 |
|
73 /* |
|
74 ** . . .followed by. . . |
|
75 ** |
|
76 ** tzh_timecnt (char [4])s coded transition times a la time(2) |
|
77 ** tzh_timecnt (unsigned char)s types of local time starting at above |
|
78 ** tzh_typecnt repetitions of |
|
79 ** one (char [4]) coded UTC offset in seconds |
|
80 ** one (unsigned char) used to set tm_isdst |
|
81 ** one (unsigned char) that's an abbreviation list index |
|
82 ** tzh_charcnt (char)s '\0'-terminated zone abbreviations |
|
83 ** tzh_leapcnt repetitions of |
|
84 ** one (char [4]) coded leap second transition times |
|
85 ** one (char [4]) total correction after above |
|
86 ** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition |
|
87 ** time is standard time, if FALSE, |
|
88 ** transition time is wall clock time |
|
89 ** if absent, transition times are |
|
90 ** assumed to be wall clock time |
|
91 ** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition |
|
92 ** time is UTC, if FALSE, |
|
93 ** transition time is local time |
|
94 ** if absent, transition times are |
|
95 ** assumed to be local time |
|
96 */ |
|
97 |
|
98 /* |
|
99 ** In the current implementation, "tzset()" refuses to deal with files that |
|
100 ** exceed any of the limits below. |
|
101 */ |
|
102 |
|
103 #ifndef TZ_MAX_TIMES |
|
104 /* |
|
105 ** The TZ_MAX_TIMES value below is enough to handle a bit more than a |
|
106 ** year's worth of solar time (corrected daily to the nearest second) or |
|
107 ** 138 years of Pacific Presidential Election time |
|
108 ** (where there are three time zone transitions every fourth year). |
|
109 */ |
|
110 #define TZ_MAX_TIMES 370 |
|
111 #endif /* !defined TZ_MAX_TIMES */ |
|
112 |
|
113 #ifndef TZ_MAX_TYPES |
|
114 #ifndef NOSOLAR |
|
115 #define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ |
|
116 #endif /* !defined NOSOLAR */ |
|
117 #ifdef NOSOLAR |
|
118 /* |
|
119 ** Must be at least 14 for Europe/Riga as of Jan 12 1995, |
|
120 ** as noted by Earl Chew <earl@hpato.aus.hp.com>. |
|
121 */ |
|
122 #define TZ_MAX_TYPES 20 /* Maximum number of local time types */ |
|
123 #endif /* !defined NOSOLAR */ |
|
124 #endif /* !defined TZ_MAX_TYPES */ |
|
125 |
|
126 #ifndef TZ_MAX_CHARS |
|
127 #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ |
|
128 /* (limited by what unsigned chars can hold) */ |
|
129 #endif /* !defined TZ_MAX_CHARS */ |
|
130 |
|
131 #ifndef TZ_MAX_LEAPS |
|
132 #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ |
|
133 #endif /* !defined TZ_MAX_LEAPS */ |
|
134 |
|
135 #define SECSPERMIN 60 |
|
136 #define MINSPERHOUR 60 |
|
137 #define HOURSPERDAY 24 |
|
138 #define DAYSPERWEEK 7 |
|
139 #define DAYSPERNYEAR 365 |
|
140 #define DAYSPERLYEAR 366 |
|
141 #define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) |
|
142 #define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) |
|
143 #define MONSPERYEAR 12 |
|
144 |
|
145 #define TM_SUNDAY 0 |
|
146 #define TM_MONDAY 1 |
|
147 #define TM_TUESDAY 2 |
|
148 #define TM_WEDNESDAY 3 |
|
149 #define TM_THURSDAY 4 |
|
150 #define TM_FRIDAY 5 |
|
151 #define TM_SATURDAY 6 |
|
152 |
|
153 #define TM_JANUARY 0 |
|
154 #define TM_FEBRUARY 1 |
|
155 #define TM_MARCH 2 |
|
156 #define TM_APRIL 3 |
|
157 #define TM_MAY 4 |
|
158 #define TM_JUNE 5 |
|
159 #define TM_JULY 6 |
|
160 #define TM_AUGUST 7 |
|
161 #define TM_SEPTEMBER 8 |
|
162 #define TM_OCTOBER 9 |
|
163 #define TM_NOVEMBER 10 |
|
164 #define TM_DECEMBER 11 |
|
165 |
|
166 #define TM_YEAR_BASE 1900 |
|
167 |
|
168 #define EPOCH_YEAR 1970 |
|
169 #define EPOCH_WDAY TM_THURSDAY |
|
170 |
|
171 /* |
|
172 ** Accurate only for the past couple of centuries; |
|
173 ** that will probably do. |
|
174 */ |
|
175 |
|
176 #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) |
|
177 |
|
178 #ifndef USG |
|
179 |
|
180 /* |
|
181 ** Use of the underscored variants may cause problems if you move your code to |
|
182 ** certain System-V-based systems; for maximum portability, use the |
|
183 ** underscore-free variants. The underscored variants are provided for |
|
184 ** backward compatibility only; they may disappear from future versions of |
|
185 ** this file. |
|
186 */ |
|
187 |
|
188 #define SECS_PER_MIN SECSPERMIN |
|
189 #define MINS_PER_HOUR MINSPERHOUR |
|
190 #define HOURS_PER_DAY HOURSPERDAY |
|
191 #define DAYS_PER_WEEK DAYSPERWEEK |
|
192 #define DAYS_PER_NYEAR DAYSPERNYEAR |
|
193 #define DAYS_PER_LYEAR DAYSPERLYEAR |
|
194 #define SECS_PER_HOUR SECSPERHOUR |
|
195 #define SECS_PER_DAY SECSPERDAY |
|
196 #define MONS_PER_YEAR MONSPERYEAR |
|
197 |
|
198 #endif /* !defined USG */ |
|
199 |
|
200 #endif /* !defined TZFILE_H */ |