Asterisk - The Open Source Telephony Project
18.5.0
main
stdtime
tzfile.h
Go to the documentation of this file.
1
#ifndef TZFILE_H
2
3
#define TZFILE_H
4
5
/*
6
** This file is in the public domain, so clarified as of
7
** 1996-06-05 by Arthur David Olson.
8
*/
9
10
/*
11
** This header is for use ONLY with the time conversion code.
12
** There is no guarantee that it will remain unchanged,
13
** or that it will remain at all.
14
** Do NOT copy it to any system include directory.
15
** Thank you!
16
*/
17
18
/*
19
** ID
20
*/
21
22
#ifndef lint
23
#ifndef NOID
24
static
char
__attribute__((unused))
tzfilehid
[] =
"@(#)tzfile.h 8.1"
;
25
#endif
/* !defined NOID */
26
#endif
/* !defined lint */
27
28
/*
29
** Information about time zone files.
30
*/
31
32
#ifndef TZDIR
33
#ifdef SOLARIS
34
#define TZDIR "/usr/share/lib/zoneinfo"
35
#else
36
#define TZDIR "/usr/share/zoneinfo"
37
#endif
/* defined SOLARIS */
38
#endif
/* !defined TZDIR */
39
40
#ifndef TZDEFAULT
41
#define TZDEFAULT "localtime"
42
#endif
/* !defined TZDEFAULT */
43
44
#ifndef TZDEFRULES
45
#define TZDEFRULES "posixrules"
46
#endif
/* !defined TZDEFRULES */
47
48
/*
49
** Each file begins with. . .
50
*/
51
52
#define TZ_MAGIC "TZif"
53
54
struct
tzhead
{
55
char
tzh_magic
[4];
/* TZ_MAGIC */
56
char
tzh_version
[1];
/* '\0' or '2' as of 2005 */
57
char
tzh_reserved
[15];
/* reserved--must be zero */
58
char
tzh_ttisgmtcnt
[4];
/* coded number of trans. time flags */
59
char
tzh_ttisstdcnt
[4];
/* coded number of trans. time flags */
60
char
tzh_leapcnt
[4];
/* coded number of leap seconds */
61
char
tzh_timecnt
[4];
/* coded number of transition times */
62
char
tzh_typecnt
[4];
/* coded number of local time types */
63
char
tzh_charcnt
[4];
/* coded number of abbr. chars */
64
};
65
66
/*
67
** . . .followed by. . .
68
**
69
** tzh_timecnt (char [4])s coded transition times a la time(2)
70
** tzh_timecnt (unsigned char)s types of local time starting at above
71
** tzh_typecnt repetitions of
72
** one (char [4]) coded UTC offset in seconds
73
** one (unsigned char) used to set tm_isdst
74
** one (unsigned char) that's an abbreviation list index
75
** tzh_charcnt (char)s '\0'-terminated zone abbreviations
76
** tzh_leapcnt repetitions of
77
** one (char [4]) coded leap second transition times
78
** one (char [4]) total correction after above
79
** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition
80
** time is standard time, if FALSE,
81
** transition time is wall clock time
82
** if absent, transition times are
83
** assumed to be wall clock time
84
** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition
85
** time is UTC, if FALSE,
86
** transition time is local time
87
** if absent, transition times are
88
** assumed to be local time
89
*/
90
91
/*
92
** If tzh_version is '2' or greater, the above is followed by a second instance
93
** of tzhead and a second instance of the data in which each coded transition
94
** time uses 8 rather than 4 chars,
95
** then a POSIX-TZ-environment-variable-style string for use in handling
96
** instants after the last transition time stored in the file
97
** (with nothing between the newlines if there is no POSIX representation for
98
** such instants).
99
*/
100
101
/*
102
** In the current implementation, "tzset()" refuses to deal with files that
103
** exceed any of the limits below.
104
*/
105
106
#ifndef TZ_MAX_TIMES
107
#define TZ_MAX_TIMES 1200
108
#endif
/* !defined TZ_MAX_TIMES */
109
110
#ifndef TZ_MAX_TYPES
111
#ifndef NOSOLAR
112
#define TZ_MAX_TYPES 256
/* Limited by what (unsigned char)'s can hold */
113
#endif
/* !defined NOSOLAR */
114
#ifdef NOSOLAR
115
/*
116
** Must be at least 14 for Europe/Riga as of Jan 12 1995,
117
** as noted by Earl Chew.
118
*/
119
#define TZ_MAX_TYPES 20
/* Maximum number of local time types */
120
#endif
/* !defined NOSOLAR */
121
#endif
/* !defined TZ_MAX_TYPES */
122
123
#ifndef TZ_MAX_CHARS
124
#define TZ_MAX_CHARS 50
/* Maximum number of abbreviation characters */
125
/* (limited by what unsigned chars can hold) */
126
#endif
/* !defined TZ_MAX_CHARS */
127
128
#ifndef TZ_MAX_LEAPS
129
#define TZ_MAX_LEAPS 50
/* Maximum number of leap second corrections */
130
#endif
/* !defined TZ_MAX_LEAPS */
131
132
#define SECSPERMIN 60
133
#define MINSPERHOUR 60
134
#define HOURSPERDAY 24
135
#define DAYSPERWEEK 7
136
#define DAYSPERNYEAR 365
137
#define DAYSPERLYEAR 366
138
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
139
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY)
140
#define MONSPERYEAR 12
141
142
#define TM_SUNDAY 0
143
#define TM_MONDAY 1
144
#define TM_TUESDAY 2
145
#define TM_WEDNESDAY 3
146
#define TM_THURSDAY 4
147
#define TM_FRIDAY 5
148
#define TM_SATURDAY 6
149
150
#define TM_JANUARY 0
151
#define TM_FEBRUARY 1
152
#define TM_MARCH 2
153
#define TM_APRIL 3
154
#define TM_MAY 4
155
#define TM_JUNE 5
156
#define TM_JULY 6
157
#define TM_AUGUST 7
158
#define TM_SEPTEMBER 8
159
#define TM_OCTOBER 9
160
#define TM_NOVEMBER 10
161
#define TM_DECEMBER 11
162
163
#define TM_YEAR_BASE 1900
164
165
#define EPOCH_YEAR 1970
166
#define EPOCH_WDAY TM_THURSDAY
167
168
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
169
170
/*
171
** Since everything in isleap is modulo 400 (or a factor of 400), we know that
172
** isleap(y) == isleap(y % 400)
173
** and so
174
** isleap(a + b) == isleap((a + b) % 400)
175
** or
176
** isleap(a + b) == isleap(a % 400 + b % 400)
177
** This is true even if % means modulo rather than Fortran remainder
178
** (which is allowed by C89 but not C99).
179
** We use this to avoid addition overflow problems.
180
*/
181
182
#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
183
184
#endif
/* !defined TZFILE_H */
tzhead::tzh_ttisgmtcnt
char tzh_ttisgmtcnt[4]
Definition:
tzfile.h:58
tzhead::tzh_charcnt
char tzh_charcnt[4]
Definition:
tzfile.h:63
tzhead::tzh_ttisstdcnt
char tzh_ttisstdcnt[4]
Definition:
tzfile.h:59
tzhead::tzh_leapcnt
char tzh_leapcnt[4]
Definition:
tzfile.h:60
tzhead::tzh_timecnt
char tzh_timecnt[4]
Definition:
tzfile.h:61
tzfilehid
static char tzfilehid[]
Definition:
tzfile.h:24
tzhead::tzh_reserved
char tzh_reserved[15]
Definition:
tzfile.h:57
tzhead
Definition:
tzfile.h:54
tzhead::tzh_magic
char tzh_magic[4]
Definition:
tzfile.h:55
tzhead::tzh_typecnt
char tzh_typecnt[4]
Definition:
tzfile.h:62
tzhead::tzh_version
char tzh_version[1]
Definition:
tzfile.h:56
Generated on Sun Aug 8 2021 19:44:23 for Asterisk - The Open Source Telephony Project by
1.8.13