xref: /illumos-gate/usr/src/test/header-tests/cfg/cxx-symbols/cstdio_h.cfg (revision 1072464281f5b1736a36f54036d362c13ca7a4e0)
1#
2# This file and its contents are supplied under the terms of the
3# Common Development and Distribution License ("CDDL"), version 1.0.
4# You may only use this file in accordance with the terms of version
5# 1.0 of the CDDL.
6#
7# A full copy of the text of the CDDL should have accompanied this
8# source.  A copy of the CDDL is also available via the Internet at
9# http://www.illumos.org/license/CDDL.
10#
11
12#
13# Copyright 2026 Gordon W. Ross
14#
15
16#
17# Design notes for <cstdio> test cases
18#
19# <cstdio> must provide all C90 stdio functions in namespace std::
20# stdio_iso.h declares functions in namespace std:: and stdio_c99.h
21# does NOT wrap in namespace std:: (todo: 18190), so C99 symbols
22# only reach std:: via GCC's using-declarations in <cstdio>.
23#
24
25#
26# Types - must be in std::
27#
28type | std::FILE	| cstdio | CXX98+
29type | std::fpos_t	| cstdio | CXX98+
30type | std::size_t	| cstdio | CXX98+
31
32#
33# C90 file functions - must be in std::
34#
35func | std::fclose				|\
36	int					|\
37	FILE *					|\
38	cstdio | CXX98+
39func | std::fflush				|\
40	int					|\
41	FILE *					|\
42	cstdio | CXX98+
43func | std::fopen				|\
44	FILE *					|\
45	const char *; const char *		|\
46	cstdio | CXX98+
47func | std::freopen				|\
48	FILE *					|\
49	const char *; const char *; FILE *	|\
50	cstdio | CXX98+
51func | std::fread				|\
52	size_t					|\
53	void *; size_t; size_t; FILE *		|\
54	cstdio | CXX98+
55func | std::fwrite				|\
56	size_t					|\
57	const void *; size_t; size_t; FILE *	|\
58	cstdio | CXX98+
59func | std::fgetc				|\
60	int					|\
61	FILE *					|\
62	cstdio | CXX98+
63func | std::fgets				|\
64	char *					|\
65	char *; int; FILE *			|\
66	cstdio | CXX98+
67func | std::fputc				|\
68	int					|\
69	int; FILE *				|\
70	cstdio | CXX98+
71func | std::fputs				|\
72	int					|\
73	const char *; FILE *			|\
74	cstdio | CXX98+
75func | std::getc				|\
76	int					|\
77	FILE *					|\
78	cstdio | CXX98+
79func | std::putc				|\
80	int					|\
81	int; FILE *				|\
82	cstdio | CXX98+
83func | std::ungetc				|\
84	int					|\
85	int; FILE *				|\
86	cstdio | CXX98+
87func | std::fseek				|\
88	int					|\
89	FILE *; long; int			|\
90	cstdio | CXX98+
91func | std::ftell				|\
92	long					|\
93	FILE *					|\
94	cstdio | CXX98+
95func | std::rewind				|\
96	void					|\
97	FILE *					|\
98	cstdio | CXX98+
99func | std::feof				|\
100	int					|\
101	FILE *					|\
102	cstdio | CXX98+
103func | std::ferror				|\
104	int					|\
105	FILE *					|\
106	cstdio | CXX98+
107func | std::clearerr				|\
108	void					|\
109	FILE *					|\
110	cstdio | CXX98+
111func | std::perror				|\
112	void					|\
113	const char *				|\
114	cstdio | CXX98+
115func | std::printf				|\
116	int					|\
117	const char *				|\
118	cstdio | CXX98+
119func | std::fprintf				|\
120	int					|\
121	FILE *; const char *			|\
122	cstdio | CXX98+
123func | std::sprintf				|\
124	int					|\
125	char *; const char *			|\
126	cstdio | CXX98+
127func | std::puts				|\
128	int					|\
129	const char *				|\
130	cstdio | CXX98+
131func | std::remove				|\
132	int					|\
133	const char *				|\
134	cstdio | CXX98+
135func | std::rename				|\
136	int					|\
137	const char *; const char *		|\
138	cstdio | CXX98+
139func | std::tmpnam				|\
140	char *					|\
141	char *					|\
142	cstdio | CXX98+
143func | std::setbuf				|\
144	void					|\
145	FILE *; char *				|\
146	cstdio | CXX98+
147func | std::setvbuf				|\
148	int					|\
149	FILE *; char *; int; size_t		|\
150	cstdio | CXX98+
151func | std::tmpfile				|\
152	FILE *					|\
153					|\
154	cstdio | CXX98+
155func | std::getchar				|\
156	int					|\
157					|\
158	cstdio | CXX98+
159func | std::putchar				|\
160	int					|\
161	int					|\
162	cstdio | CXX98+
163func | std::fgetpos				|\
164	int					|\
165	FILE *; std::fpos_t *			|\
166	cstdio | CXX98+
167func | std::fsetpos				|\
168	int					|\
169	FILE *; const std::fpos_t *		|\
170	cstdio | CXX98+
171func | std::scanf				|\
172	int					|\
173	const char *				|\
174	cstdio | CXX98+
175func | std::fscanf				|\
176	int					|\
177	FILE *; const char *			|\
178	cstdio | CXX98+
179func | std::sscanf				|\
180	int					|\
181	const char *; const char *		|\
182	cstdio | CXX98+
183func | std::vfprintf				|\
184	int					|\
185	FILE *; const char *; std::va_list	|\
186	cstdio; cstdarg | CXX98+
187func | std::vprintf				|\
188	int					|\
189	const char *; std::va_list		|\
190	cstdio; cstdarg | CXX98+
191func | std::vsprintf				|\
192	int					|\
193	char *; const char *; std::va_list	|\
194	cstdio; cstdarg | CXX98+
195
196#
197# gets() was present in C++98, deprecated in C++11, removed in C++14.
198# Note that deprecated version behaves like "not present" because the
199# test probes are compiled with -Wall -Werror.
200# This case is intentionally WRONG until 18196 is fixed.
201# The last part should be:  CXX98+ -CXX11+
202#
203func | std::gets				|\
204	char *					|\
205	char *					|\
206	cstdio | CXX98+
207
208#
209# C99 functions - required in std:: since C++11.
210# On illumos, GCC's <cstdio> also exposes these in C++98 via CXX_C99+
211# (using -D_STDC_C99), but we test for what the standard requires.
212#
213func | std::snprintf					|\
214	int						|\
215	char *; size_t; const char *			|\
216	cstdio | CXX11+
217func | std::vsnprintf					|\
218	int						|\
219	char *; size_t; const char *; std::va_list	|\
220	cstdio; cstdarg | CXX11+
221func | std::vfscanf					|\
222	int						|\
223	FILE *; const char *; std::va_list		|\
224	cstdio; cstdarg | CXX11+
225func | std::vscanf					|\
226	int						|\
227	const char *; std::va_list			|\
228	cstdio; cstdarg | CXX11+
229func | std::vsscanf					|\
230	int						|\
231	const char *; const char *; std::va_list	|\
232	cstdio; cstdarg | CXX11+
233