1 | /** @file
|
---|
2 | Definitions private to the Implementation of <time.h>.
|
---|
3 |
|
---|
4 | Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
|
---|
5 | This program and the accompanying materials are licensed and made available under
|
---|
6 | the terms and conditions of the BSD License that accompanies this distribution.
|
---|
7 | The full text of the license may be found at
|
---|
8 | http://opensource.org/licenses/bsd-license.php.
|
---|
9 |
|
---|
10 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
---|
11 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
---|
12 |
|
---|
13 | Portions derived from the NIH time zone package files,
|
---|
14 | which contain the following notice:
|
---|
15 |
|
---|
16 | This file is in the public domain, so clarified as of
|
---|
17 | 1996-06-05 by Arthur David Olson ([email protected]).
|
---|
18 | **/
|
---|
19 | #ifndef _TIMEVAL_H
|
---|
20 | #define _TIMEVAL_H
|
---|
21 |
|
---|
22 | extern struct state * lclptr;
|
---|
23 | extern struct state * gmtptr;
|
---|
24 | extern char * tzname[2];
|
---|
25 | extern const char gmt[4];
|
---|
26 | extern const char wildabbr[9];
|
---|
27 | extern const int year_lengths[2];
|
---|
28 | extern const int mon_lengths[2][MONSPERYEAR];
|
---|
29 | extern long int timezone;
|
---|
30 | extern int daylight;
|
---|
31 |
|
---|
32 | #define EFI_UNSPECIFIED_TIMEZONE 0x07FF
|
---|
33 |
|
---|
34 | /*
|
---|
35 | ** The DST rules to use if TZ has no rules and we can't load TZDEFRULES.
|
---|
36 | ** We default to US rules as of 1999-08-17.
|
---|
37 | ** POSIX 1003.1 section 8.1.1 says that the default DST rules are
|
---|
38 | ** implementation dependent; for historical reasons, US rules are a
|
---|
39 | ** common default.
|
---|
40 | */
|
---|
41 | #ifndef TZDEFRULESTRING
|
---|
42 | #define TZDEFRULESTRING ",M4.1.0,M10.5.0"
|
---|
43 | #endif
|
---|
44 |
|
---|
45 | // Facilities for external time-zone definition files do not currently exist
|
---|
46 | #define NO_ZONEINFO_FILES
|
---|
47 |
|
---|
48 | #define EPOCH_DAY 5
|
---|
49 | #define DAY_TO_uSEC 86400000000
|
---|
50 |
|
---|
51 | /* Rule type values for the r_type member of a rule structure */
|
---|
52 | #define JULIAN_DAY 0 /* Jn - Julian day */
|
---|
53 | #define DAY_OF_YEAR 1 /* n - day of year */
|
---|
54 | #define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */
|
---|
55 |
|
---|
56 | #ifdef TZNAME_MAX
|
---|
57 | #define MY_TZNAME_MAX TZNAME_MAX
|
---|
58 | #endif /* defined TZNAME_MAX */
|
---|
59 |
|
---|
60 | #ifndef TZNAME_MAX
|
---|
61 | #define MY_TZNAME_MAX 255
|
---|
62 | #endif /* !defined TZNAME_MAX */
|
---|
63 |
|
---|
64 | /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
|
---|
65 | #define is_digit(c) ((unsigned)(c) - '0' <= 9)
|
---|
66 |
|
---|
67 | #define LEAPS_THRU_END_OF(y) ((y) / 4 - (y) / 100 + (y) / 400)
|
---|
68 |
|
---|
69 | #define BIGGEST(a, b) (((a) > (b)) ? (a) : (b))
|
---|
70 |
|
---|
71 | #ifndef INITIALIZE
|
---|
72 | #define INITIALIZE(x) ((x) = 0)
|
---|
73 | #endif /* !defined INITIALIZE */
|
---|
74 |
|
---|
75 | struct ttinfo { /* time type information */
|
---|
76 | LONG32 tt_gmtoff; /* UTC offset in seconds */
|
---|
77 | int tt_isdst; /* used to set tm_isdst */
|
---|
78 | int tt_abbrind; /* abbreviation list index */
|
---|
79 | int tt_ttisstd; /* TRUE if transition is std time */
|
---|
80 | int tt_ttisgmt; /* TRUE if transition is UTC */
|
---|
81 | };
|
---|
82 |
|
---|
83 | struct lsinfo { /* leap second information */
|
---|
84 | time_t ls_trans; /* transition time */
|
---|
85 | LONG32 ls_corr; /* correction to apply */
|
---|
86 | };
|
---|
87 |
|
---|
88 | struct state {
|
---|
89 | int leapcnt;
|
---|
90 | int timecnt;
|
---|
91 | int typecnt;
|
---|
92 | int charcnt;
|
---|
93 | time_t ats[TZ_MAX_TIMES];
|
---|
94 | unsigned char types[TZ_MAX_TIMES];
|
---|
95 | struct ttinfo ttis[TZ_MAX_TYPES];
|
---|
96 | char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, sizeof gmt), (2 * (MY_TZNAME_MAX + 1)))];
|
---|
97 | struct lsinfo lsis[TZ_MAX_LEAPS];
|
---|
98 | };
|
---|
99 |
|
---|
100 | struct rule {
|
---|
101 | int r_type; /* type of rule--see below */
|
---|
102 | int r_day; /* day number of rule */
|
---|
103 | int r_week; /* week number of rule */
|
---|
104 | int r_mon; /* month number of rule */
|
---|
105 | LONG32 r_time; /* transition time of rule */
|
---|
106 | };
|
---|
107 |
|
---|
108 | #define JULIAN_DAY 0 /* Jn - Julian day */
|
---|
109 | #define DAY_OF_YEAR 1 /* n - day of year */
|
---|
110 | #define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */
|
---|
111 |
|
---|
112 | __BEGIN_DECLS
|
---|
113 | extern void gmtload(struct state * const sp);
|
---|
114 | extern void tzset(void);
|
---|
115 | __END_DECLS
|
---|
116 |
|
---|
117 | #endif /* _TIMEVAL_H */
|
---|