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	#if !defined(_LARGE_FILE_API)
16print	#define _LARGE_FILE_API		1
17print	#endif
18print	#else
19print	#undef	_LARGEFILE64_SOURCE
20print	#undef	_LARGEFILE_SOURCE
21print	#undef	_LARGE_FILE_API
22print	#undef	_typ_ino64_t
23print	#undef	_typ_off64_t
24print	#undef	_typ_struct_dirent64
25print	#undef	_lib_creat64
26print	#undef	_lib_fstat64
27print	#undef	_lib_fstatvfs64
28print	#undef	_lib_ftruncate64
29print	#undef	_lib_lseek64
30print	#undef	_lib_lstat64
31print	#undef	_lib_mmap64
32print	#undef	_lib_open64
33print	#undef	_lib_opendir64
34print	#undef	_lib_readdir64
35print	#undef	_lib_rewinddir64
36print	#undef	_lib_seekdir64
37print	#undef	_lib_telldir64
38print	#undef	_lib_closedir64
39print	#undef	_lib_stat64
40print	#undef	_lib_statvfs64
41print	#undef	_lib_truncate64
42print	#endif
43print	#if !_lib_readdir64
44print	#undef	_typ_ino64_t
45print	#endif
46
47print	#if defined(__STDC__) && !defined(__USE_FIXED_PROTOTYPES__)
48print	#define __USE_FIXED_PROTOTYPES__	1	/* kick gcc out of the past */
49print	#endif
50
51header	stdlib.h
52header	stddef.h
53header	sys/types.h
54header	stdint.h
55header	inttypes.h
56header	string.h
57header	unistd.h
58header	limits.h
59header	fcntl.h
60header	locale.h
61
62typ dev_t,nlink_t fail{
63	echo "#ifndef $m"
64	echo "#define $m	1"
65	echo "typedef short $v;"
66	echo "#endif"
67}end
68typ gid_t,mode_t,uid_t fail{
69	echo "#ifndef $m"
70	echo "#define $m	1"
71	echo "typedef unsigned short $v;"
72	echo "#endif"
73}end
74typ wchar_t stdio.h wchar.h fail{
75	echo "#ifndef $m"
76	echo "#define $m	1"
77	echo "typedef unsigned short $v;"
78	echo "#endif"
79}end
80typ pid_t,ssize_t fail{
81	echo "#ifndef $m"
82	echo "#define $m	1"
83	echo "typedef int $v;"
84	echo "#endif"
85}end
86typ wint_t stdio.h wchar.h fail{
87	echo "#ifndef $m"
88	echo "#define $m	1"
89	echo "typedef int $v;"
90	echo "#endif"
91}end
92typ socklen_t sys/socket.h fail{
93	echo "#ifndef $m"
94	echo "#define $m	1"
95	echo "typedef int $v;"
96	echo "#endif"
97}end
98typ size_t fail{
99	echo "#ifndef $m"
100	echo "#define $m	1"
101	echo "typedef unsigned int $v;"
102	echo "#endif"
103}end
104typ clock_t,ino_t,off_t,ptrdiff_t fail{
105	echo "#ifndef $m"
106	echo "#define $m	1"
107	echo "typedef long $v;"
108	echo "#endif"
109}end
110typ time_t fail{
111	echo "#ifndef $m"
112	echo "#define $m	1"
113	echo "typedef unsigned long $v;"
114	echo "#endif"
115}end
116typ div_t fail{
117	echo "#ifndef $m"
118	echo "#define $m	1"
119	echo "typedef struct { int quot; int rem; } $v;"
120	echo "#endif"
121}end
122typ ldiv_t fail{
123	echo "#ifndef $m"
124	echo "#define $m	1"
125	echo "typedef struct { long quot; long rem; } $v;"
126	echo "#endif"
127}end
128tst	typ_signed_size_t output{
129	#include <sys/types.h>
130	int
131	main()
132	{
133		unsigned long u = ~0;
134		size_t s = ~0;
135		if (s >= 0)
136			return 1;
137		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");
138		return 0;
139	}
140}end
141
142define	offsetof	(type,member)	((size_t)&(((type*)0)->member))
143define	EXIT_FAILURE	1
144define	EXIT_SUCCESS	0
145define	MB_CUR_MAX	1
146define	RAND_MAX	32767
147
148define	STDIN_FILENO	0
149define	STDOUT_FILENO	1
150define	STDERR_FILENO	2
151
152define	NULL		0
153
154define	SEEK_SET	0
155define	SEEK_CUR	1
156define	SEEK_END	2
157
158define	F_OK		0
159define	X_OK		1
160define	W_OK		2
161define	R_OK		4
162
163lib spawnvex fail{
164	echo
165	echo "typedef struct Spawnvex_s"
166	echo "{"
167	echo "	unsigned int	cur;"
168	echo "	int		io;"
169	echo "#ifdef _SPAWNVEX_PRIVATE_"
170	echo "	_SPAWNVEX_PRIVATE_"
171	echo "#endif"
172	echo "} Spawnvex_t;"
173	echo
174	echo "typedef struct Spawnvex_noexec_s"
175	echo "{"
176	echo "	Spawnvex_t*	vex;		/* caller vex handle		*/"
177	echo "	void*		handle;		/* caller callback handle	*/"
178	echo "	const char* 	path;		/* spawnvex() path		*/"
179	echo "	char* const* 	argv;		/* spawnvex() argv		*/"
180	echo "	char* const* 	envv;		/* spawnvex() envv		*/"
181	echo "	unsigned int	flags;		/* SPAWN_(EXEC|FORK|VFORK)	*/"
182	echo "	int		msgfd;		/* if no return and >= 0 close	*/"
183	echo "} Spawnvex_noexec_t;"
184	echo
185	echo "typedef int (*Spawnvex_f)(void*, uintmax_t, uintmax_t);"
186	echo
187	echo "#define SPAWN_BACKGROUND	0x00001"
188	echo "#define SPAWN_CLEANUP		0x00002"
189	echo "#define SPAWN_DAEMON		0x00004"
190	echo "#define SPAWN_DEBUG		0x00008"
191	echo "#define SPAWN_EXEC		0x00010"
192	echo "#define SPAWN_FLUSH		0x00020"
193	echo "#define SPAWN_FOREGROUND	0x00040"
194	echo "#define SPAWN_FORK		0x00080"
195	echo "#define SPAWN_FRAME		0x00100"
196	echo "#define SPAWN_NOCALL		0x00200"
197	echo "#define SPAWN_ORPHAN		0x00400"
198	echo "#define SPAWN_OVERLAY		0x00800"
199	echo "#define SPAWN_READ		0x01000"
200	echo "#define SPAWN_RESET		0x02000"
201	echo "#define SPAWN_VFORK		0x04000"
202	echo "#define SPAWN_UNDO		0x08000"
203	echo "#define SPAWN_WRITE		0x10000"
204	echo "#define SPAWN_ZOMBIE		0x20000"
205	echo
206	echo "#define SPAWN_noop	(-1)"
207	echo
208	echo "#define SPAWN_cwd	(-2)"
209	echo "#define SPAWN_frame	(-3)"
210	echo "#define SPAWN_noexec	(-4)"
211	echo "#define SPAWN_pgrp	(-5)"
212	echo "#define SPAWN_resetids	(-6)"
213	echo "#define SPAWN_sid	(-7)"
214	echo "#define SPAWN_sigdef	(-8)"
215	echo "#define SPAWN_sigmask	(-9)"
216	echo "#define SPAWN_truncate	(-10)"
217	echo "#define SPAWN_umask	(-11)"
218	echo
219}end
220
221print	#if _BLD_ast && defined(__EXPORT__)
222print	#define extern	__EXPORT__
223print	#endif
224
225extern	_exit		void		(int)
226extern	abort		void		(void)
227extern	abs		int		(int)
228extern	access		int		(const char*, int)
229extern	alarm		unsigned int	(unsigned int)
230extern	atexit		int		(void(*)(void))
231extern	atof		double		(const char*)
232extern	atoi		int		(const char*)
233extern	atol		long		(const char*)
234extern	bsearch		void*		(const void*, const void*, size_t, size_t, int(*)(const void*, const void*))
235extern	calloc		void*		(size_t, size_t)
236extern	cfree		void		(void*)
237extern	chdir		int		(const char*)
238extern	chown		int		(const char*, uid_t, gid_t)
239extern	close		int		(int)
240extern	confstr		size_t		(int, char*, size_t)
241extern	div		div_t		(int, int)
242extern	dup		int		(int)
243extern	dup2		int		(int, int)
244extern	eaccess		int		(const char*, int)
245extern	execl		int		(const char*, const char*, ...)
246extern	execle		int		(const char*, const char*, ...)
247extern	execlp		int		(const char*, const char*, ...)
248extern	execv		int		(const char*, char* const[])
249extern	execve		int		(const char*, char* const[], char* const[])
250extern	execve		int		(const char*, char* const[], char* const[])
251extern	execvp		int		(const char*, char* const[])
252extern	execvpe		int		(const char*, char* const[], char* const[])
253extern	exit		void		(int)
254extern	fork		pid_t		(void)
255extern	fpathconf	long		(int, int)
256extern	free		void		(void*)
257extern	fsync		int		(int)
258extern	ftruncate	int		(int, off_t)
259extern	fgetcwd		char*		(int, char*, size_t)
260extern	getcwd		char*		(char*, size_t)
261extern	getegid		gid_t		(void)
262extern	getenv		char*		(const char*)
263extern	geteuid		uid_t		(void)
264extern	getgid		gid_t		(void)
265extern	getgroups	int		(int, gid_t[])
266extern	getlogin	char*		(void)
267extern	getpgrp		pid_t		(void)
268extern	getpid		pid_t		(void)
269extern	getppid		pid_t		(void)
270extern	gettxt		char*		(const char*, const char*)
271extern	getuid		uid_t		(void)
272extern	isatty		int		(int)
273extern	labs		long		(long)
274extern	ldiv		ldiv_t		(long, long)
275extern	link		int		(const char*, const char*)
276extern	lseek		off_t		(int, off_t, int)
277extern	malloc		void*		(size_t)
278extern	mblen		int		(const char*, size_t)
279extern	mbstowcs	size_t		(wchar_t*, const char*, size_t)
280extern	mbtowc		int		(wchar_t*, const char*, size_t)
281extern	memalign	void*		(size_t, size_t)
282extern	memccpy		void*		(void*, const void*, int, size_t)
283extern	memchr		void*		(const void*, int, size_t)
284extern	memcmp		int		(const void*, const void*, size_t)
285extern	memcpy		void*		(void*, const void*, size_t)
286extern	memmove		void*		(void*, const void*, size_t)
287extern	memset		void*		(void*, int, size_t)
288extern	pathconf	long		(const char*, int)
289extern	pause		int		(void)
290extern	pipe		int		(int[])
291extern	pvalloc		void*		(size_t)
292extern	qsort		void		(void*, size_t, size_t, int(*)(const void*, const void*))
293extern	rand		int		(void)
294extern	read		ssize_t		(int, void*, size_t)
295extern	realloc		void*		(void*, size_t)
296extern	realpath	char*		(const char*, char*)
297extern	resolvepath	char*		(const char*, char*, size_t)
298extern	rmdir		int		(const char*)
299extern	setgid		int		(gid_t)
300extern	setpgid		int		(pid_t, pid_t)
301extern	setsid		pid_t		(void)
302extern	setuid		int		(uid_t)
303extern	sleep		unsigned int	(unsigned int)
304extern	spawnveg	pid_t		(const char*, char* const[], char* const[], pid_t)
305extern	spawnvex	pid_t		(const char*, char* const[], char* const[], Spawnvex_t*)
306extern	spawnvex_open	Spawnvex_t*	(unsigned int)
307extern	spawnvex_add	int		(Spawnvex_t*, intmax_t, intmax_t, Spawnvex_f, void*)
308extern	spawnvex_apply	int		(Spawnvex_t*, int, int)
309extern	spawnvex_get	intmax_t	(Spawnvex_t*, int, int)
310extern	spawnvex_close	int		(Spawnvex_t*)
311extern	srand		void		(unsigned int)
312extern	stpcpy		char*		(char*, const char*)
313extern	stpncpy		char*		(char*, const char*, size_t)
314extern	strcasecmp	int		(const char*, const char*)
315extern	strcat		char*		(char*, const char*)
316extern	strchr		char*		(const char*, int)
317extern	strcmp		int		(const char*, const char*)
318extern	strcoll		int		(const char*, const char*)
319extern	strcpy		char*		(char*, const char*)
320extern	strcspn		size_t		(const char*, const char*)
321extern	strdup		char*		(const char*)
322extern	strlcat		size_t		(char*, const char*, size_t)
323extern	strlcpy		size_t		(char*, const char*, size_t)
324extern	strlen		size_t		(const char*)
325extern	strncasecmp	int		(const char*, const char*, size_t)
326extern	strncat		char*		(char*, const char*, size_t)
327extern	strncmp		int		(const char*, const char*, size_t)
328extern	strncpy		char*		(char*, const char*, size_t)
329extern	strpbrk		char*		(const char*, const char*)
330extern	strrchr		char*		(const char*, int)
331extern	strspn		size_t		(const char*, const char*)
332extern	strstr		char*		(const char*, const char*)
333extern	strtok		char*		(char*, const char*)
334extern	strxfrm		size_t		(char*, const char*, size_t)
335extern	swab		void		(const void*, void*, ssize_t)
336extern	sysconf		long		(int)
337extern	system		int		(const char*)
338extern	tcgetpgrp	pid_t		(int)
339extern	tcsetpgrp	int		(int, pid_t)
340extern	truncate	int		(const char*, off_t)
341extern	ttyname		char*		(int)
342extern	unlink		int		(const char*)
343extern	valloc		void*		(size_t)
344extern	wcstombs	size_t		(char*, const wchar_t*, size_t)
345extern	wctomb		int		(char*, wchar_t)
346extern	write		ssize_t		(int, const void*, size_t)
347
348print	#undef	extern
349
350# <stdarg.h> is handled by proto so this must be after the last test
351
352print	#include <stdarg.h>
353