Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/include/ast_std.h
1810 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1985-2012 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
/*
24
* Advanced Software Technology Library
25
* AT&T Research
26
*
27
* a union of standard headers that works
28
* with local extensions enabled
29
* and local omission compensation
30
*/
31
32
#ifndef _AST_STD_H
33
#define _AST_STD_H 1
34
#define _AST_STD_I 1
35
36
#include <ast_common.h>
37
38
#if _BLD_ast
39
#define _BLD_aso 1
40
#define _BLD_cdt 1
41
#define _BLD_sfio 1
42
#if !_UWIN
43
#define _BLD_vmalloc 1
44
#endif
45
#endif
46
47
#ifdef _SFSTDIO_H
48
#define _SKIP_SFSTDIO_H
49
#else
50
#define _SFSTDIO_H
51
#ifndef FILE
52
#ifndef _SFIO_H
53
struct _sfio_s;
54
#endif
55
#define FILE struct _sfio_s
56
#ifndef __FILE_typedef
57
#define __FILE_typedef 1
58
#endif
59
#ifndef _FILEDEFED
60
#define _FILEDEFED 1
61
#endif
62
#endif
63
#endif
64
65
#include <ast_lib.h>
66
#include <ast_sys.h>
67
#include <ast_getopt.h> /* <stdlib.h> does this */
68
#include <ast_fcntl.h>
69
#include <ast_limits.h>
70
#include <ast_botch.h>
71
72
#ifdef _SKIP_SFSTDIO_H
73
#undef _SKIP_SFSTDIO_H
74
#else
75
#undef _SFSTDIO_H
76
#undef FILE
77
#endif
78
79
#ifndef FILE
80
#ifndef _SFIO_H
81
struct _sfio_s;
82
#endif
83
#define FILE struct _sfio_s
84
#ifndef __FILE_typedef
85
#define __FILE_typedef 1
86
#endif
87
#ifndef _FILEDEFED
88
#define _FILEDEFED 1
89
#endif
90
#ifndef ____FILE_defined
91
#define ____FILE_defined 1
92
#endif
93
#ifndef __FILE_defined
94
#define __FILE_defined 1
95
#endif
96
#endif
97
98
/* locale stuff */
99
100
#if !_hdr_locale
101
102
struct lconv
103
{
104
char* decimal_point;
105
char* thousands_sep;
106
char* grouping;
107
char* int_curr_symbol;
108
char* currency_symbol;
109
char* mon_decimal_point;
110
char* mon_thousands_sep;
111
char* mon_grouping;
112
char* positive_sign;
113
char* negative_sign;
114
char int_frac_digits;
115
char frac_digits;
116
char p_cs_precedes;
117
char p_sep_by_space;
118
char n_cs_precedes;
119
char n_sep_by_space;
120
char p_sign_posn;
121
char n_sign_posn;
122
};
123
124
#endif
125
126
#if _BLD_ast && defined(__EXPORT__)
127
#define extern __EXPORT__
128
#endif
129
130
#if !_UWIN /* for ast54 compatibility */
131
132
#undef getenv
133
#define getenv _ast_getenv
134
135
#undef setenviron
136
#define setenviron _ast_setenviron
137
138
extern char* getenv(const char*);
139
140
#endif
141
142
#undef localeconv
143
#define localeconv _ast_localeconv
144
145
#undef setlocale
146
#define setlocale _ast_setlocale
147
148
#undef strerror
149
#define strerror _ast_strerror
150
151
extern struct lconv* localeconv(void);
152
extern char* setenviron(const char*);
153
extern char* setlocale(int, const char*);
154
extern char* strerror(int);
155
156
#define AST_MESSAGE_SET 3 /* see <mc.h> mcindex() */
157
158
/*
159
* maintain this order when adding categories
160
*/
161
162
#define AST_LC_ALL 0
163
#define AST_LC_COLLATE 1
164
#define AST_LC_CTYPE 2
165
#define AST_LC_MESSAGES 3
166
#define AST_LC_MONETARY 4
167
#define AST_LC_NUMERIC 5
168
#define AST_LC_TIME 6
169
#define AST_LC_IDENTIFICATION 7
170
#define AST_LC_ADDRESS 8
171
#define AST_LC_NAME 9
172
#define AST_LC_TELEPHONE 10
173
#define AST_LC_XLITERATE 11
174
#define AST_LC_MEASUREMENT 12
175
#define AST_LC_PAPER 13
176
#define AST_LC_COUNT 14
177
#define AST_LC_LANG 255
178
179
#define AST_LC_internal 1
180
#define AST_LC_test (1L<<26)
181
#define AST_LC_setenv (1L<<27)
182
#define AST_LC_find (1L<<28)
183
#define AST_LC_debug (1L<<29)
184
#define AST_LC_setlocale (1L<<30)
185
#define AST_LC_translate (1L<<31)
186
187
#ifndef LC_ALL
188
#define LC_ALL (-AST_LC_ALL)
189
#endif
190
#ifndef LC_COLLATE
191
#define LC_COLLATE (-AST_LC_COLLATE)
192
#endif
193
#ifndef LC_CTYPE
194
#define LC_CTYPE (-AST_LC_CTYPE)
195
#endif
196
#ifndef LC_MESSAGES
197
#define LC_MESSAGES (-AST_LC_MESSAGES)
198
#endif
199
#ifndef LC_MONETARY
200
#define LC_MONETARY (-AST_LC_MONETARY)
201
#endif
202
#ifndef LC_NUMERIC
203
#define LC_NUMERIC (-AST_LC_NUMERIC)
204
#endif
205
#ifndef LC_TIME
206
#define LC_TIME (-AST_LC_TIME)
207
#endif
208
#ifndef LC_ADDRESS
209
#define LC_ADDRESS (-AST_LC_ADDRESS)
210
#endif
211
#ifndef LC_IDENTIFICATION
212
#define LC_IDENTIFICATION (-AST_LC_IDENTIFICATION)
213
#endif
214
#ifndef LC_NAME
215
#define LC_NAME (-AST_LC_NAME)
216
#endif
217
#ifndef LC_TELEPHONE
218
#define LC_TELEPHONE (-AST_LC_TELEPHONE)
219
#endif
220
#ifndef LC_XLITERATE
221
#define LC_XLITERATE (-AST_LC_XLITERATE)
222
#endif
223
#ifndef LC_MEASUREMENT
224
#define LC_MEASUREMENT (-AST_LC_MEASUREMENT)
225
#endif
226
#ifndef LC_PAPER
227
#define LC_PAPER (-AST_LC_PAPER)
228
#endif
229
#ifndef LC_LANG
230
#define LC_LANG (-AST_LC_LANG)
231
#endif
232
233
#undef extern
234
235
#undef strcoll
236
#if _std_strcoll
237
#define strcoll _ast_info.collate
238
#else
239
#define strcoll strcmp
240
#endif
241
242
typedef struct
243
{
244
245
char* id;
246
247
struct
248
{
249
uint32_t serial;
250
uint32_t set;
251
} locale;
252
253
long tmp_long;
254
size_t tmp_size;
255
short tmp_short;
256
char tmp_char;
257
wchar_t tmp_wchar;
258
259
int (*collate)(const char*, const char*);
260
261
int tmp_int;
262
void* tmp_pointer;
263
264
int mb_cur_max;
265
int (*mb_len)(const char*, size_t);
266
int (*mb_towc)(wchar_t*, const char*, size_t);
267
size_t (*mb_xfrm)(char*, const char*, size_t);
268
int (*mb_width)(wchar_t);
269
int (*mb_conv)(char*, wchar_t);
270
271
uint32_t env_serial;
272
uint32_t mb_sync;
273
uint32_t version;
274
275
int (*mb_alpha)(wchar_t);
276
277
char pad[936 - sizeof(void*)];
278
279
} _Ast_info_t;
280
281
#if _BLD_ast && defined(__EXPORT__)
282
#define extern extern __EXPORT__
283
#endif
284
#if !_BLD_ast && defined(__IMPORT__)
285
#define extern extern __IMPORT__
286
#endif
287
288
extern _Ast_info_t _ast_info;
289
290
#undef extern
291
292
/* largefile hackery -- ast uses the large versions by default */
293
294
#if _typ_ino64_t
295
#undef ino_t
296
#define ino_t ino64_t
297
#endif
298
#if _typ_off64_t
299
#undef off_t
300
#define off_t off64_t
301
#endif
302
#if !defined(ftruncate) && _lib_ftruncate64
303
#define ftruncate ftruncate64
304
extern int ftruncate64(int, off64_t);
305
#endif
306
#if !defined(lseek) && _lib_lseek64
307
#define lseek lseek64
308
extern off64_t lseek64(int, off64_t, int);
309
#endif
310
#if !defined(truncate) && _lib_truncate64
311
#define truncate truncate64
312
extern int truncate64(const char*, off64_t);
313
#endif
314
315
/* direct macro access for bsd crossover */
316
317
#if !defined(__cplusplus)
318
319
#if !defined(memcpy) && !defined(_lib_memcpy) && defined(_lib_bcopy)
320
#define memcpy(t,f,n) (bcopy(f,t,n),(t))
321
#endif
322
323
#if !defined(memzero) && !defined(_lib_memzero)
324
#if defined(_lib_memset) || !defined(_lib_bzero)
325
#define memzero(b,n) memset(b,0,n)
326
#else
327
#define memzero(b,n) (bzero(b,n),(b))
328
#endif
329
#endif
330
331
#endif
332
333
#if !defined(remove)
334
extern int remove(const char*);
335
#endif
336
337
#if !defined(rename)
338
extern int rename(const char*, const char*);
339
#endif
340
341
#if !defined(strchr) && !defined(_lib_strchr) && defined(_lib_index)
342
#define strchr(s,c) index(s,c)
343
#endif
344
345
#if !defined(strrchr) && !defined(_lib_strrchr) && defined(_lib_rindex)
346
#define strrchr(s,c) rindex(s,c)
347
#endif
348
349
/* and now introducing prototypes botched by the standard(s) */
350
351
#if _BLD_ast && defined(__EXPORT__)
352
#define extern __EXPORT__
353
#endif
354
355
#undef getpgrp
356
#define getpgrp() _ast_getpgrp()
357
extern int _ast_getpgrp(void);
358
359
#undef extern
360
361
/*
362
* and finally, standard interfaces hijacked by ast
363
* _AST_STD_I delays headers that require <ast_map.h>
364
*/
365
366
#include <ast_map.h>
367
368
#undef _AST_STD_I
369
370
#if _AST_GETOPT_H < 0
371
#undef _AST_GETOPT_H
372
#include <ast_getopt.h>
373
#endif
374
375
#if _GETOPT_H < 0
376
#undef _GETOPT_H
377
#include <getopt.h>
378
#endif
379
380
#if _REGEX_H < 0
381
#undef _REGEX_H
382
#include <regex.h>
383
#endif
384
385
#endif
386
387