xref: /titanic_51/usr/src/lib/libast/common/features/stdio (revision b9bd317cda1afb3a01f4812de73e8cec888cbbd7)
1set	prototyped
2ref	-D_def_map_ast=1
3iff	SFSTDIO
4cat{
5	#define __FILE_typedef	1
6	#define _FILE_DEFINED	1
7	#define _FILE_defined	1
8	#define _FILEDEFED	1
9
10	#ifndef __FILE_TAG
11	#define __FILE_TAG	_sfio_s
12	#endif
13
14	#undef	FILE
15	#undef	_FILE
16	#undef	fpos_t
17	#undef	fpos64_t
18
19	typedef struct _sfio_s _sfio_FILE;
20
21	#define FILE		_sfio_FILE
22	#define _FILE		FILE
23
24	#if !defined(__FILE) && !__CYGWIN__
25	#undef	__FILE
26	#define __FILE		FILE
27	#endif
28
29	#if defined(_AST_H) || defined(_SFIO_H)
30
31	#define BUFSIZ		SF_BUFSIZE
32
33	#else
34
35	#ifndef BUFSIZ
36	#define BUFSIZ		8192
37	#endif
38
39	#ifndef EOF
40	#define EOF		(-1)
41	#endif
42
43	#ifndef NULL
44	#define NULL		0
45	#endif
46
47	#ifndef SEEK_SET
48	#define SEEK_SET	0
49	#define SEEK_CUR	1
50	#define SEEK_END	2
51	#endif
52
53	#include <ast_std.h>
54
55	#include <sfio_s.h>
56
57	#if __cplusplus
58	#define _sf_(f)		(f)
59	#else
60	#define _sf_(f)		((struct _sfio_s*)(f))
61	#endif
62
63	#define _SF_EOF		0000200
64	#define _SF_ERROR	0000400
65
66	#endif
67
68	#ifdef _NO_LARGEFILE64_SOURCE
69	#undef _LARGEFILE64_SOURCE
70	#endif
71
72	#ifdef _LARGEFILE64_SOURCE
73	#undef	off_t
74	#endif
75
76	#define fpos_t		_ast_fpos_t
77	#if _typ_int64_t
78	#define fpos64_t	_ast_fpos_t
79	#endif
80
81	typedef struct _ast_fpos_s
82	{
83		intmax_t	_sf_offset;
84		unsigned char	_sf_state[64 - sizeof(intmax_t)];
85	} _ast_fpos_t;
86
87	#define _base		_data
88	#define _ptr		_next
89	#define _IOFBF		0
90	#define _IONBF		1
91	#define _IOLBF		2
92
93	#if defined(__cplusplus) && defined(__THROW) && !defined(_UWIN)
94
95	#undef	FILE
96	#define FILE            FILE
97	typedef struct _sfio_s FILE;
98
99	#undef	strerror
100	extern char*	strerror(int) __THROW;
101
102	extern int	_doprnt(const char*, va_list, FILE*);
103	extern int	_doscan(FILE*, const char*, va_list);
104	extern int	asprintf(char**, const char*, ...);
105	extern int	clearerr(FILE*);
106	extern int	fclose(FILE*);
107	extern FILE*	fdopen(int, const char*);
108	extern int	feof(FILE*);
109	extern int	ferror(FILE*);
110	extern int	fflush(FILE*);
111	extern int	fgetc(FILE*);
112	extern int	fgetpos(FILE*, fpos_t*);
113	extern char*	fgets(char*, int, FILE*);
114	extern int	fileno(FILE*);
115	extern FILE*	fopen(const char*, const char*);
116	extern int	fprintf(FILE*, const char*, ...);
117	extern int	fpurge(FILE*);
118	extern int	fputc(int, FILE*);
119	extern int	fputs(const char*, FILE*);
120	extern ssize_t	fread(void*, size_t, size_t, FILE*);
121	extern FILE*	freopen(const char*, const char*, FILE*);
122	extern int	fscanf(FILE*, const char*, ...);
123	extern int	fseek(FILE*, long, int);
124	extern int	fseeko(FILE*, off_t, int);
125	extern int	fsetpos(FILE*, const fpos_t*);
126	extern long	ftell(FILE*);
127	extern off_t	ftello(FILE*);
128	extern ssize_t	fwrite(const void*, size_t, size_t, FILE*);
129	extern int	getc(FILE*);
130	extern int	getchar(void);
131	extern char*	gets(char*);
132	extern int	getw(FILE*);
133	extern int	pclose(FILE*);
134	extern FILE*	popen(const char*, const char*);
135	extern int	printf(const char*, ...);
136	extern int	putc(int, FILE*);
137	extern int	putchar(int);
138	extern int	puts(const char*);
139	extern int	putw(int, FILE*);
140	extern void	rewind(FILE*);
141	extern int	scanf(const char*, ...);
142	extern void	setbuf(FILE*, char*);
143	extern int	setbuffer(FILE*, char*, int);
144	extern int	setlinebuf(FILE*);
145	extern int	setvbuf(FILE*, char*, int, size_t);
146	extern int	snprintf(char*, int, const char*, ...);
147	extern int	sprintf(char*, const char*, ...);
148	extern int	sscanf(const char*, const char*, ...);
149	extern FILE*	tmpfile(void);
150	extern int	ungetc(int, FILE*);
151	extern int	vasprintf(char**, const char*, va_list);
152	extern int	vfprintf(FILE*, const char*, va_list);
153	extern int	vfscanf(FILE*, const char*, va_list);
154	extern int	vprintf(const char*, va_list);
155	extern int	vscanf(const char*, va_list);
156	extern int	vsnprintf(char*, int, const char*, va_list);
157	extern int	vsprintf(char*, const char*, va_list);
158	extern int	vsscanf(const char*, const char*, va_list);
159
160	#if _typ_int64_t
161
162	extern int		fgetpos64(FILE*, fpos64_t*);
163	extern int		fsetpos64(FILE*, const fpos64_t*);
164	extern int		fseek64(FILE*, int64_t, int);
165	extern int		fseeko64(FILE*, int64_t, int);
166	extern int64_t		ftell64(FILE*);
167	extern int64_t		ftello64(FILE*);
168
169	#endif
170
171	extern void	clearerr_unlocked(FILE*);
172	extern int	feof_unlocked(FILE*);
173	extern int	ferror_unlocked(FILE*);
174	extern int	fflush_unlocked(FILE*);
175	extern int	fgetc_unlocked(FILE*);
176	extern char*	fgets_unlocked(char*, int, FILE*);
177	extern int	fileno_unlocked(FILE*);
178	extern int	fputc_unlocked(int, FILE*);
179	extern int	fputs_unlocked(char*, FILE*);
180	extern size_t	fread_unlocked(void*, size_t, size_t, FILE*);
181	extern size_t	fwrite_unlocked(void*, size_t, size_t, FILE*);
182	extern int	getc_unlocked(FILE*);
183	extern int	getchar_unlocked(void);
184	extern int	putc_unlocked(int, FILE*);
185	extern int	putchar_unlocked(int);
186
187	#ifdef _USE_GNU
188
189	extern int	fcloseall(void);
190	extern FILE*	fmemopen(void*, size_t, const char*);
191	extern ssize_t	__getdelim(char**, size_t*, int, FILE*);
192	extern ssize_t	getdelim(char**, size_t*, int, FILE*);
193	extern ssize_t	getline(char**, size_t*, FILE*);
194
195	#endif
196
197	#endif
198}end
199output{
200	#include <stdio.h>
201	#ifndef FILENAME_MAX
202	#ifndef NAME_MAX
203	#ifndef _POSIX_NAME_MAX
204	#define _POSIX_NAME_MAX	14
205	#endif
206	#define NAME_MAX	_POSIX_NAME_MAX
207	#endif
208	#define FILENAME_MAX	NAME_MAX
209	#endif
210	#ifndef FOPEN_MAX
211	#ifdef STREAM_MAX
212	#define FOPEN_MAX	STREAM_MAX
213	#else
214	#ifndef OPEN_MAX
215	#ifndef _POSIX_OPEN_MAX
216	#define _POSIX_OPEN_MAX	20
217	#endif
218	#define OPEN_MAX	_POSIX_OPEN_MAX
219	#endif
220	#define FOPEN_MAX	OPEN_MAX
221	#endif
222	#endif
223	#ifndef TMP_MAX
224	#define TMP_MAX		33520641
225	#endif
226	int
227	main()
228	{
229		printf("#ifndef FILENAME_MAX\n");
230		printf("#define FILENAME_MAX	%d\n", FILENAME_MAX);
231		printf("#endif\n");
232		printf("#ifndef FOPEN_MAX\n");
233		printf("#define FOPEN_MAX	%d\n", FOPEN_MAX);
234		printf("#endif\n");
235		printf("#ifndef TMP_MAX\n");
236		printf("#define TMP_MAX		%d\n", TMP_MAX);
237		printf("#endif\n");
238	#if !_UWIN
239		printf("\n");
240		printf("#define _doprnt		_ast_doprnt\n");
241		printf("#define _doscan		_ast_doscan\n");
242		printf("#define asprintf	_ast_asprintf\n");
243		printf("#define clearerr	_ast_clearerr\n");
244		printf("#define fclose		_ast_fclose\n");
245		printf("#define fdopen		_ast_fdopen\n");
246		printf("#define fflush		_ast_fflush\n");
247		printf("#define fgetc		_ast_fgetc\n");
248		printf("#define fgetpos		_ast_fgetpos\n");
249		printf("#define fgetpos64	_ast_fgetpos64\n");
250		printf("#define fgets		_ast_fgets\n");
251		printf("#define fopen		_ast_fopen\n");
252		printf("#define fprintf		_ast_fprintf\n");
253		printf("#define fpurge		_ast_fpurge\n");
254		printf("#define fputs		_ast_fputs\n");
255		printf("#define fread		_ast_fread\n");
256		printf("#define freopen		_ast_freopen\n");
257		printf("#define fscanf		_ast_fscanf\n");
258		printf("#define fseek		_ast_fseek\n");
259		printf("#define fseek64		_ast_fseek64\n");
260		printf("#define fseeko		_ast_fseeko\n");
261		printf("#define fseeko64	_ast_fseeko64\n");
262		printf("#define fsetpos		_ast_fsetpos\n");
263		printf("#define fsetpos64	_ast_fsetpos64\n");
264		printf("#define ftell		_ast_ftell\n");
265		printf("#define ftell64		_ast_ftell64\n");
266		printf("#define ftello		_ast_ftello\n");
267		printf("#define ftello64	_ast_ftello64\n");
268		printf("#define fwrite		_ast_fwrite\n");
269		printf("#define gets		_ast_gets\n");
270		printf("#define getw		_ast_getw\n");
271		printf("#define pclose		_ast_pclose\n");
272		printf("#define popen		_ast_popen\n");
273		printf("#define printf		_ast_printf\n");
274		printf("#define puts		_ast_puts\n");
275		printf("#define putw		_ast_putw\n");
276		printf("#define rewind		_ast_rewind\n");
277		printf("#define scanf		_ast_scanf\n");
278		printf("#define setbuf		_ast_setbuf\n");
279		printf("#undef	setbuffer\n");
280		printf("#define setbuffer	_ast_setbuffer\n");
281		printf("#define setlinebuf	_ast_setlinebuf\n");
282		printf("#define setvbuf		_ast_setvbuf\n");
283		printf("#define snprintf	_ast_snprintf\n");
284		printf("#define sprintf		_ast_sprintf\n");
285		printf("#define sscanf		_ast_sscanf\n");
286		printf("#define tmpfile		_ast_tmpfile\n");
287		printf("#define ungetc		_ast_ungetc\n");
288		printf("#define vasprintf	_ast_vasprintf\n");
289		printf("#define vfprintf	_ast_vfprintf\n");
290		printf("#define vfscanf		_ast_vfscanf\n");
291		printf("#define vprintf		_ast_vprintf\n");
292		printf("#define vscanf		_ast_vscanf\n");
293		printf("#define vsnprintf	_ast_vsnprintf\n");
294		printf("#define vsprintf	_ast_vsprintf\n");
295		printf("#define vsscanf		_ast_vsscanf\n");
296
297		printf("#define fcloseall	_ast_fcloseall\n");
298		printf("#define fmemopen	_ast_fmemopen\n");
299		printf("#define __getdelim	_ast___getdelim\n");
300		printf("#define getdelim	_ast_getdelim\n");
301		printf("#define getline		_ast_getline\n");
302
303		printf("#define clearerr_unlocked _ast_clearerr_unlocked\n");
304		printf("#define feof_unlocked	_ast_feof_unlocked\n");
305		printf("#define ferror_unlocked	_ast_ferror_unlocked\n");
306		printf("#define fflush_unlocked	_ast_fflush_unlocked\n");
307		printf("#define fgetc_unlocked	_ast_fgetc_unlocked\n");
308		printf("#define fgets_unlocked	_ast_fgets_unlocked\n");
309		printf("#define fileno_unlocked	_ast_fileno_unlocked\n");
310		printf("#define fputc_unlocked	_ast_fputc_unlocked\n");
311		printf("#define fputs_unlocked	_ast_fputs_unlocked\n");
312		printf("#define fread_unlocked	_ast_fread_unlocked\n");
313		printf("#define fwrite_unlocked	_ast_fwrite_unlocked\n");
314		printf("#define getc_unlocked	_ast_getc_unlocked\n");
315		printf("#define getchar_unlocked _ast_getchar_unlocked\n");
316		printf("#define putc_unlocked	_ast_putc_unlocked\n");
317		printf("#define putchar_unlocked _ast_putchar_unlocked\n");
318
319		printf("\n");
320	#endif
321		return 0;
322	}
323}end
324macro{
325	<<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
326	<<"__STDPP__directive pragma pp:initial">>
327	<<"#endif">>
328	<<"#ifndef P_tmpdir">>
329	#ifndef P_tmpdir
330	#define P_tmpdir "/usr/tmp/"
331	#endif
332	<<"#define P_tmpdir">> P_tmpdir <<"/*NOCATLITERAL*/">>
333	<<"#endif">>
334	<<"#ifndef L_ctermid">>
335	#ifndef L_ctermid
336	#define L_ctermid 9
337	#endif
338	<<"#define L_ctermid">> L_ctermid
339	<<"#endif">>
340	<<"#ifndef L_tmpnam">>
341	#ifndef L_tmpnam
342	#define L_tmpnam (sizeof(P_tmpdir)+15)
343	#endif
344	<<"#define L_tmpnam">> L_tmpnam
345	<<"#endif">>
346	<<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">>
347	<<"__STDPP__directive pragma pp:noinitial">>
348	<<"#endif">>
349}end
350cat{
351	#if defined(__cplusplus) && defined(__THROW)
352	extern char*	ctermid(char*) __THROW;
353	#else
354	extern char*	ctermid(char*);
355	#endif
356	extern char*	tmpnam(char*);
357	extern char*	tempnam(const char*, const char*);
358	extern void	perror(const char*);
359	#ifndef _AST_STD_H
360	#ifndef remove
361	extern int	remove(const char*);
362	#endif
363	#ifndef rename
364	extern int	rename(const char*, const char*);
365	#endif
366	#endif
367
368	#undef	extern
369
370	#if _BLD_ast && defined(__EXPORT__)
371	#define extern		__EXPORT__
372	#endif
373
374	extern int	_doprnt(const char*, va_list, FILE*);
375	extern int	_doscan(FILE*, const char*, va_list);
376	extern int	asprintf(char**, const char*, ...);
377	extern int	clearerr(FILE*);
378	extern int	fclose(FILE*);
379	extern FILE*	fdopen(int, const char*);
380	extern int	feof(FILE*);
381	extern int	ferror(FILE*);
382	extern int	fflush(FILE*);
383	extern int	fgetc(FILE*);
384	extern int	fgetpos(FILE*, fpos_t*);
385	extern char*	fgets(char*, int, FILE*);
386	extern int	fileno(FILE*);
387	extern FILE*	fopen(const char*, const char*);
388	extern int	fprintf(FILE*, const char*, ...);
389	extern int	fpurge(FILE*);
390	extern int	fputc(int, FILE*);
391	extern int	fputs(const char*, FILE*);
392	extern ssize_t	fread(void*, size_t, size_t, FILE*);
393	extern FILE*	freopen(const char*, const char*, FILE*);
394	extern int	fscanf(FILE*, const char*, ...);
395	extern int	fseek(FILE*, long, int);
396	extern int	fseeko(FILE*, off_t, int);
397	extern int	fsetpos(FILE*, const fpos_t*);
398	extern long	ftell(FILE*);
399	extern off_t	ftello(FILE*);
400	extern ssize_t	fwrite(const void*, size_t, size_t, FILE*);
401	extern int	getc(FILE*);
402	extern int	getchar(void);
403	extern char*	gets(char*);
404	extern int	getw(FILE*);
405	extern int	pclose(FILE*);
406	extern FILE*	popen(const char*, const char*);
407	extern int	printf(const char*, ...);
408	extern int	putc(int, FILE*);
409	extern int	putchar(int);
410	extern int	puts(const char*);
411	extern int	putw(int, FILE*);
412	extern void	rewind(FILE*);
413	extern int	scanf(const char*, ...);
414	extern void	setbuf(FILE*, char*);
415	extern int	setbuffer(FILE*, char*, int);
416	extern int	setlinebuf(FILE*);
417	extern int	setvbuf(FILE*, char*, int, size_t);
418	extern int	snprintf(char*, int, const char*, ...);
419	extern int	sprintf(char*, const char*, ...);
420	extern int	sscanf(const char*, const char*, ...);
421	extern FILE*	tmpfile(void);
422	extern int	ungetc(int, FILE*);
423	extern int	vasprintf(char**, const char*, va_list);
424	extern int	vfprintf(FILE*, const char*, va_list);
425	extern int	vfscanf(FILE*, const char*, va_list);
426	extern int	vprintf(const char*, va_list);
427	extern int	vscanf(const char*, va_list);
428	extern int	vsnprintf(char*, int, const char*, va_list);
429	extern int	vsprintf(char*, const char*, va_list);
430	extern int	vsscanf(const char*, const char*, va_list);
431
432	#if _typ_int64_t
433
434	extern int		fgetpos64(FILE*, fpos64_t*);
435	extern int		fsetpos64(FILE*, const fpos64_t*);
436	extern int		fseek64(FILE*, int64_t, int);
437	extern int		fseeko64(FILE*, int64_t, int);
438	extern int64_t		ftell64(FILE*);
439	extern int64_t		ftello64(FILE*);
440
441	#ifdef _LARGEFILE64_SOURCE
442
443	#undef	fpos_t
444	#undef	off_t
445	#undef	fgetpos
446	#undef	fsetpos
447	#undef	fseek
448	#undef	fseeko
449	#undef	ftell
450	#undef	ftello
451
452	#define	fpos_t		fpos64_t
453	#if _typ_off64_t
454	#define	off_t		off64_t
455	#else
456	#define	off_t		int64_t
457	#endif
458
459	#define fgetpos		fgetpos64
460	#define fsetpos		fsetpos64
461	#define	fseek		fseek64
462	#define	fseeko		fseeko64
463	#define ftell		ftell64
464	#define ftello		ftello64
465
466	#endif
467
468	#endif
469
470	extern void	clearerr_unlocked(FILE*);
471	extern int	feof_unlocked(FILE*);
472	extern int	ferror_unlocked(FILE*);
473	extern int	fflush_unlocked(FILE*);
474	extern int	fgetc_unlocked(FILE*);
475	extern char*	fgets_unlocked(char*, int, FILE*);
476	extern int	fileno_unlocked(FILE*);
477	extern int	fputc_unlocked(int, FILE*);
478	extern int	fputs_unlocked(char*, FILE*);
479	extern size_t	fread_unlocked(void*, size_t, size_t, FILE*);
480	extern size_t	fwrite_unlocked(void*, size_t, size_t, FILE*);
481	extern int	getc_unlocked(FILE*);
482	extern int	getchar_unlocked(void);
483	extern int	putc_unlocked(int, FILE*);
484	extern int	putchar_unlocked(int);
485
486	#ifdef _USE_GNU
487
488	extern int	fcloseall(void);
489	extern FILE*	fmemopen(void*, size_t, const char*);
490	extern ssize_t	__getdelim(char**, size_t*, int, FILE*);
491	extern ssize_t	getdelim(char**, size_t*, int, FILE*);
492	extern ssize_t	getline(char**, size_t*, FILE*);
493
494	#endif
495
496	#undef	extern
497
498	#if _BLD_DLL && _DLL_INDIRECT_DATA
499
500	#define stdin		((FILE*)_ast_dll->_ast_stdin)
501	#define stdout		((FILE*)_ast_dll->_ast_stdout)
502	#define stderr		((FILE*)_ast_dll->_ast_stderr)
503
504	#else
505
506	#define	stdin		(&_Sfstdin)
507	#define	stdout		(&_Sfstdout)
508	#define	stderr		(&_Sfstderr)
509
510	#endif
511
512	#if defined(_AST_H) || defined(_SFIO_H)
513
514	#define feof(f)		sfeof(f)
515	#define ferror(f)	sferror(f)
516	#define fileno(f)	sffileno(f)
517	#define fputc(c,f)	sfputc(f,c)
518	#define getc(f)		sfgetc(f)
519	#define getchar()	sfgetc(sfstdin)
520	#define putc(c,f)	sfputc(f,c)
521	#define putchar(c)	sfputc(sfstdout,c)
522
523	#else
524
525	#if !_UWIN
526	#if _BLD_ast && defined(__EXPORT__)
527	#define extern		extern __EXPORT__
528	#endif
529	#if !_BLD_ast && defined(__IMPORT__)
530	#define extern		extern __IMPORT__
531	#endif
532	#endif
533
534	extern FILE	_Sfstdin;
535	extern FILE	_Sfstdout;
536	extern FILE	_Sfstderr;
537
538	#undef	extern
539
540	#define feof(f)		(_sf_(f)->_flags&_SF_EOF)
541	#define ferror(f)	(_sf_(f)->_flags&_SF_ERROR)
542	#define fileno(f)	(_sf_(f)->_file)
543	#define fputc(c,f)	(_sf_(f)->_next>=_sf_(f)->_endw?_sfflsbuf(_sf_(f),(int)((unsigned char)(c))):(int)(*_sf_(f)->_next++=(unsigned char)(c)))
544	#define getc(f)		(_sf_(f)->_next>=_sf_(f)->_endr?_sffilbuf(_sf_(f),0):(int)(*_sf_(f)->_next++))
545	#define getchar()	getc(stdin)
546	#define putc(c,f)	fputc(c,f)
547	#define putchar(c)	fputc(c,stdout)
548
549	#if _BLD_ast && defined(__EXPORT__)
550	#define extern		__EXPORT__
551	#endif
552
553	extern int		_sffilbuf(FILE*, int);
554	extern int		_sfflsbuf(FILE*, int);
555
556	#undef	extern
557
558	#endif
559}end
560