1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
/* : : generated by proto : : */
/***********************************************************************
* *
* This software is part of the ast package *
* Copyright (c) 1985-2010 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
* *
* A copy of the License is available at *
* http://www.opensource.org/licenses/cpl1.0.txt *
* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
* *
* Information and Software Systems Research *
* AT&T Research *
* Florham Park NJ *
* *
* Glenn Fowler <gsf@research.att.com> *
* David Korn <dgk@research.att.com> *
* Phong Vo <kpv@research.att.com> *
* *
***********************************************************************/
/*
* Glenn Fowler
* AT&T Research
*
* time conversion support definitions
*/
#ifndef _TM_H
#if !defined(__PROTO__)
#include <prototyped.h>
#endif
#if !defined(__LINKAGE__)
#define __LINKAGE__ /* 2004-08-11 transition */
#endif
#define _TM_H
#define TM_VERSION 20070319L
#include <ast.h>
#include <times.h>
#undef daylight
#define tmset(z) tminit(z)
#define tmisleapyear(y) (!((y)%4)&&(((y)%100)||!((((y)<1900)?((y)+1900):(y))%400)))
#define TM_ADJUST (1<<0) /* local doesn't do leap secs */
#define TM_LEAP (1<<1) /* do leap seconds */
#define TM_UTC (1<<2) /* universal coordinated ref */
#define TM_PEDANTIC (1<<3) /* pedantic date parse */
#define TM_DATESTYLE (1<<4) /* date(1) style mmddHHMMccyy */
#define TM_SUBSECOND (1<<5) /* <something>%S => ...%S.%P */
#define TM_DST (-60) /* default minutes for DST */
#define TM_LOCALZONE (25 * 60) /* use local time zone offset */
#define TM_UTCZONE (26 * 60) /* UTC "time zone" */
#define TM_MAXLEAP 1 /* max leap secs per leap */
#define TM_WINDOW 69 /* century windowing guard year */
/*
* these indices must agree with tm_dform[]
*/
#define TM_MONTH_ABBREV 0
#define TM_MONTH 12
#define TM_DAY_ABBREV 24
#define TM_DAY 31
#define TM_TIME 38
#define TM_DATE 39
#define TM_DEFAULT 40
#define TM_MERIDIAN 41
#define TM_UT 43
#define TM_DT 47
#define TM_SUFFIXES 51
#define TM_PARTS 55
#define TM_HOURS 62
#define TM_DAYS 66
#define TM_LAST 69
#define TM_THIS 72
#define TM_NEXT 75
#define TM_EXACT 78
#define TM_NOISE 81
#define TM_ORDINAL 85
#define TM_DIGITS 95
#define TM_CTIME 105
#define TM_DATE_1 106
#define TM_INTERNATIONAL 107
#define TM_RECENT 108
#define TM_DISTANT 109
#define TM_MERIDIAN_TIME 110
#define TM_ERA 111
#define TM_ERA_DATE 112
#define TM_ERA_TIME 113
#define TM_ERA_DEFAULT 114
#define TM_ERA_YEAR 115
#define TM_ORDINALS 116
#define TM_FINAL 126
#define TM_WORK 129
#define TM_NFORM 132
typedef struct /* leap second info */
{
time_t time; /* the leap second event */
int total; /* inclusive total since epoch */
} Tm_leap_t;
typedef struct /* time zone info */
{
char* type; /* type name */
char* standard; /* standard time name */
char* daylight; /* daylight or summertime name */
short west; /* minutes west of GMT */
short dst; /* add to tz.west for DST */
} Tm_zone_t;
typedef struct /* tm library readonly data */
{
char** format; /* default TM_* format strings */
unsigned char* lex; /* format lex type classes */
char* digit; /* output digits */
short* days; /* days in month i */
short* sum; /* days in months before i */
Tm_leap_t* leap; /* leap second table */
Tm_zone_t* zone; /* alternate timezone table */
} Tm_data_t;
typedef struct /* tm library global info */
{
char* deformat; /* TM_DEFAULT override */
int flags; /* flags */
char** format; /* current format strings */
Tm_zone_t* date; /* timezone from last tmdate() */
Tm_zone_t* local; /* local timezone */
Tm_zone_t* zone; /* current timezone */
} Tm_info_t;
typedef struct Tm_s
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
uint32_t tm_nsec;
Tm_zone_t* tm_zone;
} Tm_t;
#if _BLD_ast && defined(__EXPORT__)
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__ __EXPORT__
#endif
#if !_BLD_ast && defined(__IMPORT__)
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__ __IMPORT__
#endif
extern __MANGLE__ Tm_data_t* _tm_datap_;
extern __MANGLE__ Tm_info_t* _tm_infop_;
#define tm_data (*_tm_datap_)
#define tm_info (*_tm_infop_)
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__
#if _BLD_ast && defined(__EXPORT__)
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__ __EXPORT__
#endif
extern __MANGLE__ time_t tmdate __PROTO__((const char*, char**, time_t*));
extern __MANGLE__ int tmequiv __PROTO__((Tm_t*));
extern __MANGLE__ Tm_t* tmfix __PROTO__((Tm_t*));
extern __MANGLE__ char* tmfmt __PROTO__((char*, size_t, const char*, time_t*));
extern __MANGLE__ char* tmform __PROTO__((char*, const char*, time_t*));
extern __MANGLE__ int tmgoff __PROTO__((const char*, char**, int));
extern __MANGLE__ void tminit __PROTO__((Tm_zone_t*));
extern __MANGLE__ time_t tmleap __PROTO__((time_t*));
extern __MANGLE__ int tmlex __PROTO__((const char*, char**, char**, int, char**, int));
extern __MANGLE__ char** tmlocale __PROTO__((void));
extern __MANGLE__ Tm_t* tmmake __PROTO__((time_t*));
extern __MANGLE__ char* tmpoff __PROTO__((char*, size_t, const char*, int, int));
extern __MANGLE__ time_t tmscan __PROTO__((const char*, char**, const char*, char**, time_t*, long));
extern __MANGLE__ int tmsleep __PROTO__((time_t, time_t));
extern __MANGLE__ time_t tmtime __PROTO__((Tm_t*, int));
extern __MANGLE__ Tm_zone_t* tmtype __PROTO__((const char*, char**));
extern __MANGLE__ int tmweek __PROTO__((Tm_t*, int, int, int));
extern __MANGLE__ int tmword __PROTO__((const char*, char**, const char*, char**, int));
extern __MANGLE__ Tm_zone_t* tmzone __PROTO__((const char*, char**, const char*, int*));
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__
#endif
|