Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtksh / ksh93 / src / lib / libast / include / tm.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: tm.h /main/3 1995/11/01 17:41:18 rswiston $ */
24 /***************************************************************
25 *                                                              *
26 *                      AT&T - PROPRIETARY                      *
27 *                                                              *
28 *         THIS IS PROPRIETARY SOURCE CODE LICENSED BY          *
29 *                          AT&T CORP.                          *
30 *                                                              *
31 *                Copyright (c) 1995 AT&T Corp.                 *
32 *                     All Rights Reserved                      *
33 *                                                              *
34 *           This software is licensed by AT&T Corp.            *
35 *       under the terms and conditions of the license in       *
36 *       http://www.research.att.com/orgs/ssr/book/reuse        *
37 *                                                              *
38 *               This software was created by the               *
39 *           Software Engineering Research Department           *
40 *                    AT&T Bell Laboratories                    *
41 *                                                              *
42 *               For further information contact                *
43 *                     gsf@research.att.com                     *
44 *                                                              *
45 ***************************************************************/
46
47 /* : : generated by proto : : */
48                   
49 /*
50  * Glenn Fowler
51  * AT&T Bell Laboratories
52  *
53  * time conversion support definitions
54  */
55
56 #ifndef _TM_H
57 #if !defined(__PROTO__)
58 #if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
59 #if defined(__cplusplus)
60 #define __MANGLE__      "C"
61 #else
62 #define __MANGLE__
63 #endif
64 #define __STDARG__
65 #define __PROTO__(x)    x
66 #define __OTORP__(x)
67 #define __PARAM__(n,o)  n
68 #if !defined(__STDC__) && !defined(__cplusplus)
69 #if !defined(c_plusplus)
70 #define const
71 #endif
72 #define signed
73 #define void            int
74 #define volatile
75 #define __V_            char
76 #else
77 #define __V_            void
78 #endif
79 #else
80 #define __PROTO__(x)    ()
81 #define __OTORP__(x)    x
82 #define __PARAM__(n,o)  o
83 #define __MANGLE__
84 #define __V_            char
85 #define const
86 #define signed
87 #define void            int
88 #define volatile
89 #endif
90 #if defined(__cplusplus) || defined(c_plusplus)
91 #define __VARARG__      ...
92 #else
93 #define __VARARG__
94 #endif
95 #if defined(__STDARG__)
96 #define __VA_START__(p,a)       va_start(p,a)
97 #else
98 #define __VA_START__(p,a)       va_start(p)
99 #endif
100 #endif
101
102 #define _TM_H
103
104 #if _DLL_INDIRECT_DATA && !_DLL
105 #define tm_data         (*_tm_data_)
106 #define tm_info         (*_tm_info_)
107 #else
108 #define tm_data         _tm_data_
109 #define tm_info         _tm_info_
110 #endif
111
112 #include <ast.h>
113 #include <times.h>
114
115 #define tmset(z)        do{if(!tm_info.zone||(z)&&tm_info.zone!=(z)||!(z)&&tm_info.zone!=tm_info.local)tminit(z);}while(0)
116
117 #define TM_ADJUST       (1<<0)          /* local doesn't do leap secs   */
118 #define TM_LEAP         (1<<1)          /* do leap seconds              */
119 #define TM_UTC          (1<<2)          /* universal coordinated ref    */
120
121 #define TM_DST          (-60)           /* default minutes for DST      */
122 #define TM_LOCALZONE    (25 * 60)       /* use local time zone offset   */
123 #define TM_MAXLEAP      1               /* max leap secs per leap       */
124
125 /*
126  * these indices must agree with tm_dform[]
127  */
128
129 #define TM_MONTH_3      0
130 #define TM_MONTH        12
131 #define TM_DAY_3        24
132 #define TM_DAY          31
133 #define TM_TIME         38
134 #define TM_DATE         39
135 #define TM_DEFAULT      40
136 #define TM_MERIDIAN     41
137
138 #define TM_UT           43
139 #define TM_DT           47
140 #define TM_SUFFIXES     51
141 #define TM_PARTS        55
142 #define TM_HOURS        62
143 #define TM_DAYS         66
144 #define TM_LAST         69
145 #define TM_THIS         72
146 #define TM_NEXT         75
147 #define TM_EXACT        78
148 #define TM_NOISE        81
149
150 #define TM_NFORM        85
151
152 typedef struct                          /* leap second info             */
153 {
154         time_t          time;           /* the leap second event        */
155         int             total;          /* inclusive total since epoch  */
156 } Tm_leap_t;
157
158 typedef struct                          /* time zone info               */
159 {
160         char*           type;           /* type name                    */
161         char*           standard;       /* standard time name           */
162         char*           daylight;       /* daylight or summertime name  */
163         short           west;           /* minutes west of GMT          */
164         short           dst;            /* add to tz.west for DST       */
165 } Tm_zone_t;
166
167 typedef struct                          /* tm library readonly data     */
168 {
169         char**          format;         /* default TM_* format strings  */
170         char*           lex;            /* format lex type classes      */
171         char*           digit;          /* output digits                */
172         short*          days;           /* days in month i              */
173         short*          sum;            /* days in months before i      */
174         Tm_leap_t*      leap;           /* leap second table            */
175         Tm_zone_t*      zone;           /* alternate timezone table     */
176 } Tm_data_t;
177
178 typedef struct                          /* tm library global info       */
179 {
180         char*           deformat;       /* TM_DEFAULT override          */
181         int             flags;          /* flags                        */
182         char**          format;         /* current format strings       */
183         Tm_zone_t*      date;           /* timezone from last tmdate()  */
184         Tm_zone_t*      local;          /* local timezone               */
185         Tm_zone_t*      zone;           /* current timezone             */
186 } Tm_info_t;
187
188 typedef struct tm Tm_t;
189
190 extern __MANGLE__ Tm_data_t     tm_data;
191 extern __MANGLE__ Tm_info_t     tm_info;
192
193 extern __MANGLE__ time_t                tmdate __PROTO__((const char*, char**, time_t*));
194 extern __MANGLE__ Tm_t*         tmfix __PROTO__((Tm_t*));
195 extern __MANGLE__ char*         tmfmt __PROTO__((char*, size_t, const char*, time_t*));
196 extern __MANGLE__ char*         tmform __PROTO__((char*, const char*, time_t*));
197 extern __MANGLE__ int           tmgoff __PROTO__((const char*, char**, int));
198 extern __MANGLE__ void          tminit __PROTO__((Tm_zone_t*));
199 extern __MANGLE__ time_t                tmleap __PROTO__((time_t*));
200 extern __MANGLE__ int           tmlex __PROTO__((const char*, char**, char**, int, char**, int));
201 extern __MANGLE__ Tm_t*         tmmake __PROTO__((time_t*));
202 extern __MANGLE__ char*         tmpoff __PROTO__((char*, const char*, int, int));
203 extern __MANGLE__ time_t                tmtime __PROTO__((Tm_t*, int));
204 extern __MANGLE__ Tm_zone_t*    tmtype __PROTO__((const char*, char**));
205 extern __MANGLE__ int           tmword __PROTO__((const char*, char**, const char*, char**, int));
206 extern __MANGLE__ Tm_zone_t*    tmzone __PROTO__((const char*, char**, const char*, int*));
207
208 #endif