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