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