1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008 Sun Microsystems, Inc.
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22
This file is based on public domain code from ftp://elsie.ncih.nist.gov/
23
Initial source code is in the public domain, so clarified as of
24
1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov).
28
Information about time zone files.
31
#ifndef DRIZZLED_TZFILE_H
32
#define DRIZZLED_TZFILE_H
38
#define TZDIR "/usr/share/zoneinfo" /* Time zone object file directory */
39
#endif /* !defined TZDIR */
42
Each file begins with. . .
45
#define TZ_MAGIC "TZif"
48
unsigned char tzh_magic[4]; /* TZ_MAGIC */
49
unsigned char tzh_reserved[16]; /* reserved for future use */
50
unsigned char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */
51
unsigned char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */
52
unsigned char tzh_leapcnt[4]; /* coded number of leap seconds */
53
unsigned char tzh_timecnt[4]; /* coded number of transition times */
54
unsigned char tzh_typecnt[4]; /* coded number of local time types */
55
unsigned char tzh_charcnt[4]; /* coded number of abbr. chars */
61
tzh_timecnt (char [4])s coded transition times a la time(2)
62
tzh_timecnt (unsigned char)s types of local time starting at above
63
tzh_typecnt repetitions of
64
one (char [4]) coded UTC offset in seconds
65
one (unsigned char) used to set tm_isdst
66
one (unsigned char) that's an abbreviation list index
67
tzh_charcnt (char)s '\0'-terminated zone abbreviations
68
tzh_leapcnt repetitions of
69
one (char [4]) coded leap second transition times
70
one (char [4]) total correction after above
71
tzh_ttisstdcnt (char)s indexed by type; if true, transition
72
time is standard time, if false,
73
transition time is wall clock time
74
if absent, transition times are
75
assumed to be wall clock time
76
tzh_ttisgmtcnt (char)s indexed by type; if true, transition
77
time is UTC, if false,
78
transition time is local time
79
if absent, transition times are
80
assumed to be local time
84
In the current implementation, we refuse to deal with files that
85
exceed any of the limits below.
90
The TZ_MAX_TIMES value below is enough to handle a bit more than a
91
year's worth of solar time (corrected daily to the nearest second) or
92
138 years of Pacific Presidential Election time
93
(where there are three time zone transitions every fourth year).
95
#define TZ_MAX_TIMES 370
96
#endif /* !defined TZ_MAX_TIMES */
100
#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */
103
Must be at least 14 for Europe/Riga as of Jan 12 1995,
104
as noted by Earl Chew <earl@hpato.aus.hp.com>.
106
#define TZ_MAX_TYPES 20 /* Maximum number of local time types */
107
#endif /* defined SOLAR */
108
#endif /* !defined TZ_MAX_TYPES */
111
#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */
112
/* (limited by what unsigned chars can hold) */
113
#endif /* !defined TZ_MAX_CHARS */
116
#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */
117
#endif /* !defined TZ_MAX_LEAPS */
119
#ifndef TZ_MAX_REV_RANGES
121
/* Solar (Asia/RiyadhXX) zones need significantly bigger TZ_MAX_REV_RANGES */
122
#define TZ_MAX_REV_RANGES (TZ_MAX_TIMES*2+TZ_MAX_LEAPS*2+2)
124
#define TZ_MAX_REV_RANGES (TZ_MAX_TIMES+TZ_MAX_LEAPS+2)
128
#define SECS_PER_MIN 60
129
#define MINS_PER_HOUR 60
130
#define HOURS_PER_DAY 24
131
#define DAYS_PER_WEEK 7
132
#define DAYS_PER_NYEAR 365
133
#define DAYS_PER_LYEAR 366
134
#define SECS_PER_HOUR (SECS_PER_MIN * MINS_PER_HOUR)
135
#define SECS_PER_DAY ((long) SECS_PER_HOUR * HOURS_PER_DAY)
136
#define MONS_PER_YEAR 12
138
#define TM_YEAR_BASE 1900
140
#define EPOCH_YEAR 1970
143
Accurate only for the past couple of centuries,
144
that will probably do.
147
} /* namespace drizzled */
149
#endif /* DRIZZLED_TZFILE_H */