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