1set	prototyped
2iff	AST_SYS
3ref	-D_def_map_ast
4
5print	#if __mips == 2 && !defined(_NO_LARGEFILE64_SOURCE)
6print	#define	_NO_LARGEFILE64_SOURCE	1
7print	#endif
8print	#if !defined(_NO_LARGEFILE64_SOURCE) && _typ_off64_t && _lib_lseek64 && _lib_stat64
9print	#if !defined(_LARGEFILE64_SOURCE)
10print	#define _LARGEFILE64_SOURCE	1
11print	#endif
12print	#if !defined(_LARGEFILE_SOURCE)
13print	#define _LARGEFILE_SOURCE	1
14print	#endif
15print	#else
16print	#undef	_LARGEFILE64_SOURCE
17print	#undef	_LARGEFILE_SOURCE
18print	#undef	_typ_off64_t
19print	#undef	_typ_struct_dirent64
20print	#undef	_lib_creat64
21print	#undef	_lib_fstat64
22print	#undef	_lib_fstatvfs64
23print	#undef	_lib_ftruncate64
24print	#undef	_lib_lseek64
25print	#undef	_lib_lstat64
26print	#undef	_lib_mmap64
27print	#undef	_lib_open64
28print	#undef	_lib_readdir64
29print	#undef	_lib_stat64
30print	#undef	_lib_statvfs64
31print	#undef	_lib_truncate64
32print	#endif
33
34print	#if defined(__STDC__) && !defined(__USE_FIXED_PROTOTYPES__)
35print	#define __USE_FIXED_PROTOTYPES__	1	/* kick gcc out of the past */
36print	#endif
37
38header	stdlib.h
39header	stddef.h
40header	sys/types.h
41header	stdint.h
42header	inttypes.h
43header	string.h
44header	unistd.h
45header	limits.h
46header	fcntl.h
47header	locale.h
48
49typ dev_t,nlink_t fail{
50	echo "#ifndef $m"
51	echo "#define $m	1"
52	echo "typedef short $v;"
53	echo "#endif"
54}end
55typ gid_t,mode_t,uid_t fail{
56	echo "#ifndef $m"
57	echo "#define $m	1"
58	echo "typedef unsigned short $v;"
59	echo "#endif"
60}end
61typ wchar_t stdio.h wchar.h fail{
62	echo "#ifndef $m"
63	echo "#define $m	1"
64	echo "typedef unsigned short $v;"
65	echo "#endif"
66}end
67typ pid_t,ssize_t fail{
68	echo "#ifndef $m"
69	echo "#define $m	1"
70	echo "typedef int $v;"
71	echo "#endif"
72}end
73typ wint_t stdio.h wchar.h fail{
74	echo "#ifndef $m"
75	echo "#define $m	1"
76	echo "typedef int $v;"
77	echo "#endif"
78}end
79typ socklen_t sys/socket.h fail{
80	echo "#ifndef $m"
81	echo "#define $m	1"
82	echo "typedef int $v;"
83	echo "#endif"
84}end
85typ size_t fail{
86	echo "#ifndef $m"
87	echo "#define $m	1"
88	echo "typedef unsigned int $v;"
89	echo "#endif"
90}end
91typ clock_t,ino_t,off_t,ptrdiff_t fail{
92	echo "#ifndef $m"
93	echo "#define $m	1"
94	echo "typedef long $v;"
95	echo "#endif"
96}end
97typ time_t fail{
98	echo "#ifndef $m"
99	echo "#define $m	1"
100	echo "typedef unsigned long $v;"
101	echo "#endif"
102}end
103typ div_t fail{
104	echo "#ifndef $m"
105	echo "#define $m	1"
106	echo "typedef struct { int quot; int rem; } $v;"
107	echo "#endif"
108}end
109typ ldiv_t fail{
110	echo "#ifndef $m"
111	echo "#define $m	1"
112	echo "typedef struct { long quot; long rem; } $v;"
113	echo "#endif"
114}end
115tst	typ_signed_size_t output{
116	#include <sys/types.h>
117	int
118	main()
119	{
120		unsigned long u = ~0;
121		size_t s = ~0;
122		if (s >= 0)
123			return 1;
124		printf("#if !defined(__cplusplus) && !defined(c_plusplus) && !defined(_typ_signed_size_t)\n/* what dipsticks made size_t signed? sun. */\ntypedef unsigned %s _ast_size_t;\n#undef\tsize_t\n#define size_t\t_ast_size_t\n#endif\n", u == (unsigned long)s ? "long" : "int");
125		return 0;
126	}
127}end
128
129define	offsetof	(type,member)	((size_t)&(((type*)0)->member))
130define	EXIT_FAILURE	1
131define	EXIT_SUCCESS	0
132define	MB_CUR_MAX	1
133define	RAND_MAX	32767
134
135define	STDIN_FILENO	0
136define	STDOUT_FILENO	1
137define	STDERR_FILENO	2
138
139define	NULL		0
140
141define	SEEK_SET	0
142define	SEEK_CUR	1
143define	SEEK_END	2
144
145define	F_OK		0
146define	X_OK		1
147define	W_OK		2
148define	R_OK		4
149
150print	#if _BLD_ast && defined(__EXPORT__)
151print	#define extern	__EXPORT__
152print	#endif
153
154extern	_exit		void		(int)
155extern	abort		void		(void)
156extern	abs		int		(int)
157extern	access		int		(const char*, int)
158extern	alarm		unsigned	(unsigned)
159extern	atexit		int		(void(*)(void))
160extern	atof		double		(const char*)
161extern	atoi		int		(const char*)
162extern	atol		long		(const char*)
163extern	bsearch		void*		(const void*, const void*, size_t, size_t, int(*)(const void*, const void*))
164extern	calloc		void*		(size_t, size_t)
165extern	cfree		void		(void*)
166extern	chdir		int		(const char*)
167extern	chown		int		(const char*, uid_t, gid_t)
168extern	close		int		(int)
169extern	confstr		size_t		(int, char*, size_t)
170extern	div		div_t		(int, int)
171extern	dup		int		(int)
172extern	dup2		int		(int, int)
173extern	eaccess		int		(const char*, int)
174extern	execl		int		(const char*, const char*, ...)
175extern	execle		int		(const char*, const char*, ...)
176extern	execlp		int		(const char*, const char*, ...)
177extern	execv		int		(const char*, char* const[])
178extern	execve		int		(const char*, char* const[], char* const[])
179extern	execve		int		(const char*, char* const[], char* const[])
180extern	execvp		int		(const char*, char* const[])
181extern	execvpe		int		(const char*, char* const[], char* const[])
182extern	exit		void		(int)
183extern	fork		pid_t		(void)
184extern	fpathconf	long		(int, int)
185extern	free		void		(void*)
186extern	fsync		int		(int)
187extern	ftruncate	int		(int, off_t)
188extern	getcwd		char*		(char*, size_t)
189extern	getegid		gid_t		(void)
190extern	getenv		char*		(const char*)
191extern	geteuid		uid_t		(void)
192extern	getgid		gid_t		(void)
193extern	getgroups	int		(int, gid_t[])
194extern	getlogin	char*		(void)
195extern	getpgrp		pid_t		(void)
196extern	getpid		pid_t		(void)
197extern	getppid		pid_t		(void)
198extern	gettxt		char*		(const char*, const char*)
199extern	getuid		uid_t		(void)
200extern	isatty		int		(int)
201extern	labs		long		(long)
202extern	ldiv		ldiv_t		(long, long)
203extern	link		int		(const char*, const char*)
204extern	lseek		off_t		(int, off_t, int)
205extern	malloc		void*		(size_t)
206extern	mblen		int		(const char*, size_t)
207extern	mbstowcs	size_t		(wchar_t*, const char*, size_t)
208extern	mbtowc		int		(wchar_t*, const char*, size_t)
209extern	memalign	void*		(size_t, size_t)
210extern	memccpy		void*		(void*, const void*, int, size_t)
211extern	memchr		void*		(const void*, int, size_t)
212extern	memcmp		int		(const void*, const void*, size_t)
213extern	memcpy		void*		(void*, const void*, size_t)
214extern	memmove		void*		(void*, const void*, size_t)
215extern	memset		void*		(void*, int, size_t)
216extern	pathconf	long		(const char*, int)
217extern	pause		int		(void)
218extern	pipe		int		(int[])
219extern	pvalloc		void*		(size_t)
220extern	qsort		void		(void*, size_t, size_t, int(*)(const void*, const void*))
221extern	rand		int		(void)
222extern	read		ssize_t		(int, void*, size_t)
223extern	realloc		void*		(void*, size_t)
224extern	realpath	char*		(const char*, char*)
225extern	resolvepath	char*		(const char*, char*, size_t)
226extern	rmdir		int		(const char*)
227extern	setgid		int		(gid_t)
228extern	setpgid		int		(pid_t, pid_t)
229extern	setsid		pid_t		(void)
230extern	setuid		int		(uid_t)
231extern	sleep		unsigned		(unsigned int)
232extern	spawnveg	pid_t		(const char*, char* const[], char* const[], pid_t)
233extern	srand		void		(unsigned int)
234extern	strcasecmp	int		(const char*, const char*)
235extern	strcat		char*		(char*, const char*)
236extern	strchr		char*		(const char*, int)
237extern	strcmp		int		(const char*, const char*)
238extern	strcoll		int		(const char*, const char*)
239extern	strcpy		char*		(char*, const char*)
240extern	strcspn		size_t		(const char*, const char*)
241extern	strdup		char*		(const char*)
242extern	strlcat		size_t		(char*, const char*, size_t)
243extern	strlcpy		size_t		(char*, const char*, size_t)
244extern	strlen		size_t		(const char*)
245extern	strncasecmp	int		(const char*, const char*, size_t)
246extern	strncat		char*		(char*, const char*, size_t)
247extern	strncmp		int		(const char*, const char*, size_t)
248extern	strncpy		char*		(char*, const char*, size_t)
249extern	strpbrk		char*		(const char*, const char*)
250extern	strrchr		char*		(const char*, int)
251extern	strspn		size_t		(const char*, const char*)
252extern	strstr		char*		(const char*, const char*)
253extern	strtok		char*		(char*, const char*)
254extern	strxfrm		size_t		(char*, const char*, size_t)
255extern	swab		void		(const void*, void*, ssize_t)
256extern	sysconf		long		(int)
257extern	system		int		(const char*)
258extern	tcgetpgrp	pid_t		(int)
259extern	tcsetpgrp	int		(int, pid_t)
260extern	truncate	int		(const char*, off_t)
261extern	ttyname		char*		(int)
262extern	unlink		int		(const char*)
263extern	valloc		void*		(size_t)
264extern	wcstombs	size_t		(char*, const wchar_t*, size_t)
265extern	wctomb		int		(char*, wchar_t)
266extern	write		ssize_t		(int, const void*, size_t)
267
268print	#undef	extern
269
270# <stdarg.h> is handled by proto so this must be after the last test
271
272print	#include <stdarg.h>
273