1da2e3ebdSchinset	prototyped
2*b30d1939SAndy Fiddamaniff
3*b30d1939SAndy Fiddamanset	stdio ast_common.h
4*b30d1939SAndy Fiddamanset	include .
5*b30d1939SAndy Fiddaman
6*b30d1939SAndy Fiddamancat{
7*b30d1939SAndy Fiddaman	#ifndef _AST_WCHAR_H
8*b30d1939SAndy Fiddaman	#define _AST_WCHAR_H	1
9*b30d1939SAndy Fiddaman}end
10*b30d1939SAndy Fiddaman
11da2e3ebdSchinlib	mbstowcs,wctomb,wcrtomb,wcslen,wcstombs,wcwidth stdlib.h stdio.h wchar.h
12da2e3ebdSchinlib	towlower,towupper stdlib.h stdio.h wchar.h
13da2e3ebdSchintyp	mbstate_t stdlib.h stdio.h wchar.h
14da2e3ebdSchinnxt	wchar
15da2e3ebdSchin
16*b30d1939SAndy Fiddamancat{
17da2e3ebdSchin	#ifndef _SFSTDIO_H
18da2e3ebdSchin	#include <ast_common.h>
19da2e3ebdSchin	#include <stdio.h>
20da2e3ebdSchin	#endif
21*b30d1939SAndy Fiddaman}end
22*b30d1939SAndy Fiddaman
23*b30d1939SAndy Fiddamanif	tst note{ <wchar.h> requires native <stdio.h> }end nocompile{
24*b30d1939SAndy Fiddaman		/*<NOSTDIO>*/
25*b30d1939SAndy Fiddaman		#define _STDIO_INCLUDED 1
26*b30d1939SAndy Fiddaman		#define FILE		void
27*b30d1939SAndy Fiddaman		#include <wchar.h>
28*b30d1939SAndy Fiddaman		int tst;
29*b30d1939SAndy Fiddaman	}end
30*b30d1939SAndy Fiddaman	if	tst note{ <stdio.h> defines __va_list for <wchar.h> }end compile{
31*b30d1939SAndy Fiddaman			/*<NOSTDIO>*/
32*b30d1939SAndy Fiddaman			#define _STDIO_INCLUDED 1
33*b30d1939SAndy Fiddaman			#define FILE		void
34*b30d1939SAndy Fiddaman			#include <stdarg.h>
35*b30d1939SAndy Fiddaman			#define __va_list	va_list
36*b30d1939SAndy Fiddaman			#include <wchar.h>
37*b30d1939SAndy Fiddaman			int tst;
38*b30d1939SAndy Fiddaman		}end && {
39*b30d1939SAndy Fiddaman			#define __va_list va_list
40*b30d1939SAndy Fiddaman		}
41*b30d1939SAndy Fiddaman	endif
42*b30d1939SAndy Fiddamanendif
43*b30d1939SAndy Fiddaman
44*b30d1939SAndy Fiddamanif	hdr - wctype wchar.h
45*b30d1939SAndy Fiddaman	if	! npt - iswalpha wchar.h {
46*b30d1939SAndy Fiddaman			#include <wctype.h> /* <wchar.h> includes <wctype.h> */
47*b30d1939SAndy Fiddaman		}
48*b30d1939SAndy Fiddaman	endif
49*b30d1939SAndy Fiddamanendif
50*b30d1939SAndy Fiddaman
51*b30d1939SAndy Fiddamanrun{
52*b30d1939SAndy Fiddamancat <<!
53da2e3ebdSchin	#if _hdr_wchar && defined(_nxt_wchar)
54*b30d1939SAndy Fiddaman	#include ${_nxt_wchar-_nxt_wchar}	/* the native wchar.h */
55da2e3ebdSchin	#endif
56da2e3ebdSchin
57da2e3ebdSchin	#ifndef WEOF
58da2e3ebdSchin	#define WEOF		(-1)
59da2e3ebdSchin	#endif
60da2e3ebdSchin
61da2e3ebdSchin	#undef	fgetwc
62da2e3ebdSchin	#undef	fgetws
63da2e3ebdSchin	#undef	fputwc
64da2e3ebdSchin	#undef	fputws
65da2e3ebdSchin	#undef	getwc
66da2e3ebdSchin	#undef	getwchar
67da2e3ebdSchin	#undef	getws
68da2e3ebdSchin	#undef	putwc
69da2e3ebdSchin	#undef	putwchar
70da2e3ebdSchin	#undef	ungetwc
71da2e3ebdSchin
72da2e3ebdSchin	#define fgetwc		_ast_fgetwc
73da2e3ebdSchin	#define fgetws		_ast_fgetws
74da2e3ebdSchin	#define fputwc		_ast_fputwc
75da2e3ebdSchin	#define fputws		_ast_fputws
76da2e3ebdSchin	#define fwide		_ast_fwide
77da2e3ebdSchin	#define fwprintf	_ast_fwprintf
78da2e3ebdSchin	#define fwscanf		_ast_fwscanf
79da2e3ebdSchin	#define getwc		_ast_getwc
80da2e3ebdSchin	#define getwchar	_ast_getwchar
81da2e3ebdSchin	#define getws		_ast_getws
82da2e3ebdSchin	#define putwc		_ast_putwc
83da2e3ebdSchin	#define putwchar	_ast_putwchar
84da2e3ebdSchin	#define swprintf	_ast_swprintf
85da2e3ebdSchin	#define swscanf		_ast_swscanf
86da2e3ebdSchin	#define ungetwc		_ast_ungetwc
87da2e3ebdSchin	#define vfwprintf	_ast_vfwprintf
88da2e3ebdSchin	#define vfwscanf	_ast_vfwscanf
89da2e3ebdSchin	#define vswprintf	_ast_vswprintf
90da2e3ebdSchin	#define vswscanf	_ast_vswscanf
91da2e3ebdSchin	#define vwprintf	_ast_vwprintf
92da2e3ebdSchin	#define vwscanf		_ast_vwscanf
93da2e3ebdSchin	#define wprintf		_ast_wprintf
94da2e3ebdSchin	#define wscanf		_ast_wscanf
95da2e3ebdSchin
96da2e3ebdSchin	#if !_typ_mbstate_t
97da2e3ebdSchin	#undef	_typ_mbstate_t
98da2e3ebdSchin	#define _typ_mbstate_t	1
99da2e3ebdSchin	typedef char mbstate_t;
100da2e3ebdSchin	#endif
101da2e3ebdSchin
102da2e3ebdSchin	#if _BLD_ast && defined(__EXPORT__)
103da2e3ebdSchin	#define extern		__EXPORT__
104da2e3ebdSchin	#endif
105da2e3ebdSchin
106da2e3ebdSchin	#if !_lib_mbstowcs
107da2e3ebdSchin	extern size_t		mbstowcs(wchar_t*, const char*, size_t);
108da2e3ebdSchin	#endif
109da2e3ebdSchin	#if !_lib_wctomb
110da2e3ebdSchin	extern int		wctomb(char*, wchar_t);
111da2e3ebdSchin	#endif
112da2e3ebdSchin	#if !_lib_wcrtomb
113da2e3ebdSchin	extern size_t		wcrtomb(char*, wchar_t, mbstate_t*);
114da2e3ebdSchin	#endif
115da2e3ebdSchin	#if !_lib_wcslen
116da2e3ebdSchin	extern size_t		wcslen(const wchar_t*);
117da2e3ebdSchin	#endif
118da2e3ebdSchin	#if !_lib_wcstombs
119da2e3ebdSchin	extern size_t		wcstombs(char*, const wchar_t*, size_t);
120da2e3ebdSchin	#endif
121da2e3ebdSchin
122da2e3ebdSchin	extern int		fwprintf(FILE*, const wchar_t*, ...);
123da2e3ebdSchin	extern int		fwscanf(FILE*, const wchar_t*, ...);
124da2e3ebdSchin	extern wint_t		fgetwc(FILE*);
125da2e3ebdSchin	extern wchar_t*		fgetws(wchar_t*, int, FILE*);
126da2e3ebdSchin	extern wint_t		fputwc(wchar_t, FILE*);
127da2e3ebdSchin	extern int		fputws(const wchar_t*, FILE*);
128da2e3ebdSchin	extern int		fwide(FILE*, int);
129da2e3ebdSchin	extern wint_t		getwc(FILE*);
130da2e3ebdSchin	extern wint_t		getwchar(void);
131da2e3ebdSchin	extern wchar_t*		getws(wchar_t*);
132da2e3ebdSchin	extern wint_t		putwc(wchar_t, FILE*);
133da2e3ebdSchin	extern wint_t		putwchar(wchar_t);
134da2e3ebdSchin	extern int		swprintf(wchar_t*, size_t, const wchar_t*, ...);
135da2e3ebdSchin	extern int		swscanf(const wchar_t*, const wchar_t*, ...);
136da2e3ebdSchin	extern wint_t		ungetwc(wint_t, FILE*);
137da2e3ebdSchin	extern int		vfwprintf(FILE*, const wchar_t*, va_list);
138da2e3ebdSchin	extern int		vfwscanf(FILE*, const wchar_t*, va_list);
139da2e3ebdSchin	extern int		vwprintf(const wchar_t*, va_list);
140da2e3ebdSchin	extern int		vwscanf(const wchar_t*, va_list);
141da2e3ebdSchin	extern int		vswprintf(wchar_t*, size_t, const wchar_t*, va_list);
142da2e3ebdSchin	extern int		vswscanf(const wchar_t*, const wchar_t*, va_list);
143da2e3ebdSchin	extern int		wprintf(const wchar_t*, ...);
144da2e3ebdSchin	extern int		wscanf(const wchar_t*, ...);
145da2e3ebdSchin
146da2e3ebdSchin	#undef	extern
147*b30d1939SAndy Fiddaman
148*b30d1939SAndy Fiddaman	#else
149*b30d1939SAndy Fiddaman
150*b30d1939SAndy Fiddaman	/* on some systems <wchar.h> is included multiple times with multiple effects */
151*b30d1939SAndy Fiddaman
152*b30d1939SAndy Fiddaman	#if _hdr_wchar && defined(_nxt_wchar)
153*b30d1939SAndy Fiddaman	#include ${_nxt_wchar-_nxt_wchar}	/* the native wchar.h */
154*b30d1939SAndy Fiddaman	#endif
155*b30d1939SAndy Fiddaman
156*b30d1939SAndy Fiddaman	#endif
157da2e3ebdSchin!
158da2e3ebdSchin}end
159