1 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
2 /* A GNU-like <stdio.h>.
3
4 Copyright (C) 2004, 2007-2012 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/>. */
18
19 #if __GNUC__ >= 3
20 #pragma GCC system_header
21 #endif
22
23
24 #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
25 /* Special invocation convention:
26 - Inside glibc header files.
27 - On OSF/1 5.1 we have a sequence of nested includes
28 <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
29 <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
30 In this situation, the functions are not yet declared, therefore we cannot
31 provide the C++ aliases. */
32
33 #include_next <stdio.h>
34
35 #else
36 /* Normal invocation convention. */
37
38 #ifndef _GL_STDIO_H
39
40 #define _GL_ALREADY_INCLUDING_STDIO_H
41
42 /* The include_next requires a split double-inclusion guard. */
43 #include_next <stdio.h>
44
45 #undef _GL_ALREADY_INCLUDING_STDIO_H
46
47 #ifndef _GL_STDIO_H
48 #define _GL_STDIO_H
49
50 _GL_INLINE_HEADER_BEGIN
51 #ifndef _GL_STDIO_INLINE
52 # define _GL_STDIO_INLINE _GL_INLINE
53 #endif
54
55 /* Get va_list. Needed on many systems, including glibc 2.8. */
56 #include <stdarg.h>
57
58 #include <stddef.h>
59
60 /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8
61 and eglibc 2.11.2.
62 May also define off_t to a 64-bit type on native Windows. */
63 #include <sys/types.h>
64
65 /* The __attribute__ feature is available in gcc versions 2.5 and later.
66 The __-protected variants of the attributes 'format' and 'printf' are
67 accepted by gcc versions 2.6.4 (effectively 2.7) and later.
68 We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
69 gnulib and libintl do '#define printf __printf__' when they override
70 the 'printf' function. */
71 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
72 # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
73 #else
74 # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
75 #endif
76
77 /* _GL_ATTRIBUTE_FORMAT_PRINTF
78 indicates to GCC that the function takes a format string and arguments,
79 where the format string directives are the ones standardized by ISO C99
80 and POSIX. */
81 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
82 # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
83 _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
84 #else
85 # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
86 _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
87 #endif
88
89 /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
90 except that it indicates to GCC that the supported format string directives
91 are the ones of the system printf(), rather than the ones standardized by
92 ISO C99 and POSIX. */
93 #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
94 _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
95
96 /* _GL_ATTRIBUTE_FORMAT_SCANF
97 indicates to GCC that the function takes a format string and arguments,
98 where the format string directives are the ones standardized by ISO C99
99 and POSIX. */
100 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
101 # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
102 _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
103 #else
104 # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
105 _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
106 #endif
107
108 /* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
109 except that it indicates to GCC that the supported format string directives
110 are the ones of the system scanf(), rather than the ones standardized by
111 ISO C99 and POSIX. */
112 #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
113 _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
114
115 /* Solaris 10 declares renameat in <unistd.h>, not in <stdio.h>. */
116 /* But in any case avoid namespace pollution on glibc systems. */
117 #if (0 || defined GNULIB_POSIXCHECK) && defined __sun \
118 && ! defined __GLIBC__
119 # include <unistd.h>
120 #endif
121
122
123 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
124 #ifndef _GL_CXXDEFS_H
125 #define _GL_CXXDEFS_H
126
127 /* The three most frequent use cases of these macros are:
128
129 * For providing a substitute for a function that is missing on some
130 platforms, but is declared and works fine on the platforms on which
131 it exists:
132
133 #if @GNULIB_FOO@
134 # if !@HAVE_FOO@
135 _GL_FUNCDECL_SYS (foo, ...);
136 # endif
137 _GL_CXXALIAS_SYS (foo, ...);
138 _GL_CXXALIASWARN (foo);
139 #elif defined GNULIB_POSIXCHECK
140 ...
141 #endif
142
143 * For providing a replacement for a function that exists on all platforms,
144 but is broken/insufficient and needs to be replaced on some platforms:
145
146 #if @GNULIB_FOO@
147 # if @REPLACE_FOO@
148 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
149 # undef foo
150 # define foo rpl_foo
151 # endif
152 _GL_FUNCDECL_RPL (foo, ...);
153 _GL_CXXALIAS_RPL (foo, ...);
154 # else
155 _GL_CXXALIAS_SYS (foo, ...);
156 # endif
157 _GL_CXXALIASWARN (foo);
158 #elif defined GNULIB_POSIXCHECK
159 ...
160 #endif
161
162 * For providing a replacement for a function that exists on some platforms
163 but is broken/insufficient and needs to be replaced on some of them and
164 is additionally either missing or undeclared on some other platforms:
165
166 #if @GNULIB_FOO@
167 # if @REPLACE_FOO@
168 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
169 # undef foo
170 # define foo rpl_foo
171 # endif
172 _GL_FUNCDECL_RPL (foo, ...);
173 _GL_CXXALIAS_RPL (foo, ...);
174 # else
175 # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@
176 _GL_FUNCDECL_SYS (foo, ...);
177 # endif
178 _GL_CXXALIAS_SYS (foo, ...);
179 # endif
180 _GL_CXXALIASWARN (foo);
181 #elif defined GNULIB_POSIXCHECK
182 ...
183 #endif
184 */
185
186 /* _GL_EXTERN_C declaration;
187 performs the declaration with C linkage. */
188 #if defined __cplusplus
189 # define _GL_EXTERN_C extern "C"
190 #else
191 # define _GL_EXTERN_C extern
192 #endif
193
194 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
195 declares a replacement function, named rpl_func, with the given prototype,
196 consisting of return type, parameters, and attributes.
197 Example:
198 _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
199 _GL_ARG_NONNULL ((1)));
200 */
201 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
202 _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
203 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
204 _GL_EXTERN_C rettype rpl_func parameters_and_attributes
205
206 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
207 declares the system function, named func, with the given prototype,
208 consisting of return type, parameters, and attributes.
209 Example:
210 _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
211 _GL_ARG_NONNULL ((1)));
212 */
213 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
214 _GL_EXTERN_C rettype func parameters_and_attributes
215
216 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
217 declares a C++ alias called GNULIB_NAMESPACE::func
218 that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
219 Example:
220 _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
221 */
222 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
223 _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
224 #if defined __cplusplus && defined GNULIB_NAMESPACE
225 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
226 namespace GNULIB_NAMESPACE \
227 { \
228 rettype (*const func) parameters = ::rpl_func; \
229 } \
230 _GL_EXTERN_C int _gl_cxxalias_dummy
231 #else
232 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
233 _GL_EXTERN_C int _gl_cxxalias_dummy
234 #endif
235
236 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
237 is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
238 except that the C function rpl_func may have a slightly different
239 declaration. A cast is used to silence the "invalid conversion" error
240 that would otherwise occur. */
241 #if defined __cplusplus && defined GNULIB_NAMESPACE
242 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
243 namespace GNULIB_NAMESPACE \
244 { \
245 rettype (*const func) parameters = \
246 reinterpret_cast<rettype(*)parameters>(::rpl_func); \
247 } \
248 _GL_EXTERN_C int _gl_cxxalias_dummy
249 #else
250 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
251 _GL_EXTERN_C int _gl_cxxalias_dummy
252 #endif
253
254 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
255 declares a C++ alias called GNULIB_NAMESPACE::func
256 that redirects to the system provided function func, if GNULIB_NAMESPACE
257 is defined.
258 Example:
259 _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
260 */
261 #if defined __cplusplus && defined GNULIB_NAMESPACE
262 /* If we were to write
263 rettype (*const func) parameters = ::func;
264 like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
265 better (remove an indirection through a 'static' pointer variable),
266 but then the _GL_CXXALIASWARN macro below would cause a warning not only
267 for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */
268 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
269 namespace GNULIB_NAMESPACE \
270 { \
271 static rettype (*func) parameters = ::func; \
272 } \
273 _GL_EXTERN_C int _gl_cxxalias_dummy
274 #else
275 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
276 _GL_EXTERN_C int _gl_cxxalias_dummy
277 #endif
278
279 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
280 is like _GL_CXXALIAS_SYS (func, rettype, parameters);
281 except that the C function func may have a slightly different declaration.
282 A cast is used to silence the "invalid conversion" error that would
283 otherwise occur. */
284 #if defined __cplusplus && defined GNULIB_NAMESPACE
285 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
286 namespace GNULIB_NAMESPACE \
287 { \
288 static rettype (*func) parameters = \
289 reinterpret_cast<rettype(*)parameters>(::func); \
290 } \
291 _GL_EXTERN_C int _gl_cxxalias_dummy
292 #else
293 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
294 _GL_EXTERN_C int _gl_cxxalias_dummy
295 #endif
296
297 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
298 is like _GL_CXXALIAS_SYS (func, rettype, parameters);
299 except that the C function is picked among a set of overloaded functions,
300 namely the one with rettype2 and parameters2. Two consecutive casts
301 are used to silence the "cannot find a match" and "invalid conversion"
302 errors that would otherwise occur. */
303 #if defined __cplusplus && defined GNULIB_NAMESPACE
304 /* The outer cast must be a reinterpret_cast.
305 The inner cast: When the function is defined as a set of overloaded
306 functions, it works as a static_cast<>, choosing the designated variant.
307 When the function is defined as a single variant, it works as a
308 reinterpret_cast<>. The parenthesized cast syntax works both ways. */
309 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
310 namespace GNULIB_NAMESPACE \
311 { \
312 static rettype (*func) parameters = \
313 reinterpret_cast<rettype(*)parameters>( \
314 (rettype2(*)parameters2)(::func)); \
315 } \
316 _GL_EXTERN_C int _gl_cxxalias_dummy
317 #else
318 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
319 _GL_EXTERN_C int _gl_cxxalias_dummy
320 #endif
321
322 /* _GL_CXXALIASWARN (func);
323 causes a warning to be emitted when ::func is used but not when
324 GNULIB_NAMESPACE::func is used. func must be defined without overloaded
325 variants. */
326 #if defined __cplusplus && defined GNULIB_NAMESPACE
327 # define _GL_CXXALIASWARN(func) \
328 _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
329 # define _GL_CXXALIASWARN_1(func,namespace) \
330 _GL_CXXALIASWARN_2 (func, namespace)
331 /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
332 we enable the warning only when not optimizing. */
333 # if !__OPTIMIZE__
334 # define _GL_CXXALIASWARN_2(func,namespace) \
335 _GL_WARN_ON_USE (func, \
336 "The symbol ::" #func " refers to the system function. " \
337 "Use " #namespace "::" #func " instead.")
338 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
339 # define _GL_CXXALIASWARN_2(func,namespace) \
340 extern __typeof__ (func) func
341 # else
342 # define _GL_CXXALIASWARN_2(func,namespace) \
343 _GL_EXTERN_C int _gl_cxxalias_dummy
344 # endif
345 #else
346 # define _GL_CXXALIASWARN(func) \
347 _GL_EXTERN_C int _gl_cxxalias_dummy
348 #endif
349
350 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
351 causes a warning to be emitted when the given overloaded variant of ::func
352 is used but not when GNULIB_NAMESPACE::func is used. */
353 #if defined __cplusplus && defined GNULIB_NAMESPACE
354 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
355 _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
356 GNULIB_NAMESPACE)
357 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
358 _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
359 /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
360 we enable the warning only when not optimizing. */
361 # if !__OPTIMIZE__
362 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
363 _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
364 "The symbol ::" #func " refers to the system function. " \
365 "Use " #namespace "::" #func " instead.")
366 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
367 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
368 extern __typeof__ (func) func
369 # else
370 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
371 _GL_EXTERN_C int _gl_cxxalias_dummy
372 # endif
373 #else
374 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
375 _GL_EXTERN_C int _gl_cxxalias_dummy
376 #endif
377
378 #endif /* _GL_CXXDEFS_H */
379
380 /* The definition of _GL_ARG_NONNULL is copied here. */
381 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
382 that the values passed as arguments n, ..., m must be non-NULL pointers.
383 n = 1 stands for the first argument, n = 2 for the second argument etc. */
384 #ifndef _GL_ARG_NONNULL
385 # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
386 # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
387 # else
388 # define _GL_ARG_NONNULL(params)
389 # endif
390 #endif
391
392 /* The definition of _GL_WARN_ON_USE is copied here. */
393 #ifndef _GL_WARN_ON_USE
394
395 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
396 /* A compiler attribute is available in gcc versions 4.3.0 and later. */
397 # define _GL_WARN_ON_USE(function, message) \
398 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
399 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
400 /* Verify the existence of the function. */
401 # define _GL_WARN_ON_USE(function, message) \
402 extern __typeof__ (function) function
403 # else /* Unsupported. */
404 # define _GL_WARN_ON_USE(function, message) \
405 _GL_WARN_EXTERN_C int _gl_warn_on_use
406 # endif
407 #endif
408
409 /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
410 is like _GL_WARN_ON_USE (function, "string"), except that the function is
411 declared with the given prototype, consisting of return type, parameters,
412 and attributes.
413 This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
414 not work in this case. */
415 #ifndef _GL_WARN_ON_USE_CXX
416 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
417 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
418 extern rettype function parameters_and_attributes \
419 __attribute__ ((__warning__ (msg)))
420 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
421 /* Verify the existence of the function. */
422 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
423 extern rettype function parameters_and_attributes
424 # else /* Unsupported. */
425 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
426 _GL_WARN_EXTERN_C int _gl_warn_on_use
427 # endif
428 #endif
429
430 /* _GL_WARN_EXTERN_C declaration;
431 performs the declaration with C linkage. */
432 #ifndef _GL_WARN_EXTERN_C
433 # if defined __cplusplus
434 # define _GL_WARN_EXTERN_C extern "C"
435 # else
436 # define _GL_WARN_EXTERN_C extern
437 # endif
438 #endif
439
440 /* Macros for stringification. */
441 #define _GL_STDIO_STRINGIZE(token) #token
442 #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
443
444
445 #if 0
446 # if 0
447 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
448 # define dprintf rpl_dprintf
449 # endif
450 _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
451 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
452 _GL_ARG_NONNULL ((2)));
453 _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
454 # else
455 # if !1
456 _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
457 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
458 _GL_ARG_NONNULL ((2)));
459 # endif
460 _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
461 # endif
462 _GL_CXXALIASWARN (dprintf);
463 #elif defined GNULIB_POSIXCHECK
464 # undef dprintf
465 # if HAVE_RAW_DECL_DPRINTF
466 _GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
467 "use gnulib module dprintf for portability");
468 # endif
469 #endif
470
471 #if 0
472 /* Close STREAM and its underlying file descriptor. */
473 # if 0
474 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
475 # define fclose rpl_fclose
476 # endif
477 _GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
478 _GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
479 # else
480 _GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
481 # endif
482 _GL_CXXALIASWARN (fclose);
483 #elif defined GNULIB_POSIXCHECK
484 # undef fclose
485 /* Assume fclose is always declared. */
486 _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
487 "use gnulib module fclose for portable POSIX compliance");
488 #endif
489
490 #if 0
491 # if 0
492 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
493 # undef fdopen
494 # define fdopen rpl_fdopen
495 # endif
496 _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
497 _GL_ARG_NONNULL ((2)));
498 _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
499 # else
500 _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
501 # endif
502 _GL_CXXALIASWARN (fdopen);
503 #elif defined GNULIB_POSIXCHECK
504 # undef fdopen
505 /* Assume fdopen is always declared. */
506 _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
507 "use gnulib module fdopen for portability");
508 #endif
509
510 #if 0
511 /* Flush all pending data on STREAM according to POSIX rules. Both
512 output and seekable input streams are supported.
513 Note! LOSS OF DATA can occur if fflush is applied on an input stream
514 that is _not_seekable_ or on an update stream that is _not_seekable_
515 and in which the most recent operation was input. Seekability can
516 be tested with lseek(fileno(fp),0,SEEK_CUR). */
517 # if 0
518 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
519 # define fflush rpl_fflush
520 # endif
521 _GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
522 _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
523 # else
524 _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
525 # endif
526 _GL_CXXALIASWARN (fflush);
527 #elif defined GNULIB_POSIXCHECK
528 # undef fflush
529 /* Assume fflush is always declared. */
530 _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
531 "use gnulib module fflush for portable POSIX compliance");
532 #endif
533
534 #if 1
535 # if 0 && 0
536 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
537 # undef fgetc
538 # define fgetc rpl_fgetc
539 # endif
540 _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
541 _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
542 # else
543 _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
544 # endif
545 _GL_CXXALIASWARN (fgetc);
546 #endif
547
548 #if 1
549 # if 0 && 0
550 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
551 # undef fgets
552 # define fgets rpl_fgets
553 # endif
554 _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
555 _GL_ARG_NONNULL ((1, 3)));
556 _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
557 # else
558 _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
559 # endif
560 _GL_CXXALIASWARN (fgets);
561 #endif
562
563 #if 1
564 # if 0
565 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
566 # undef fopen
567 # define fopen rpl_fopen
568 # endif
569 _GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
570 _GL_ARG_NONNULL ((1, 2)));
571 _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
572 # else
573 _GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
574 # endif
575 _GL_CXXALIASWARN (fopen);
576 #elif defined GNULIB_POSIXCHECK
577 # undef fopen
578 /* Assume fopen is always declared. */
579 _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
580 "use gnulib module fopen for portability");
581 #endif
582
583 #if 1 || 1
584 # if (1 && 1) \
585 || (1 && 0 && (0 || 0))
586 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
587 # define fprintf rpl_fprintf
588 # endif
589 # define GNULIB_overrides_fprintf 1
590 # if 1 || 1
591 _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
592 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
593 _GL_ARG_NONNULL ((1, 2)));
594 # else
595 _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
596 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
597 _GL_ARG_NONNULL ((1, 2)));
598 # endif
599 _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
600 # else
601 _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
602 # endif
603 _GL_CXXALIASWARN (fprintf);
604 #endif
605 #if !1 && defined GNULIB_POSIXCHECK
606 # if !GNULIB_overrides_fprintf
607 # undef fprintf
608 # endif
609 /* Assume fprintf is always declared. */
610 _GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
611 "use gnulib module fprintf-posix for portable "
612 "POSIX compliance");
613 #endif
614
615 #if 0
616 /* Discard all pending buffered I/O data on STREAM.
617 STREAM must not be wide-character oriented.
618 When discarding pending output, the file position is set back to where it
619 was before the write calls. When discarding pending input, the file
620 position is advanced to match the end of the previously read input.
621 Return 0 if successful. Upon error, return -1 and set errno. */
622 # if 0
623 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
624 # define fpurge rpl_fpurge
625 # endif
626 _GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
627 _GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
628 # else
629 # if !1
630 _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
631 # endif
632 _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
633 # endif
634 _GL_CXXALIASWARN (fpurge);
635 #elif defined GNULIB_POSIXCHECK
636 # undef fpurge
637 # if HAVE_RAW_DECL_FPURGE
638 _GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
639 "use gnulib module fpurge for portability");
640 # endif
641 #endif
642
643 #if 1
644 # if 0 && (0 || 0)
645 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
646 # undef fputc
647 # define fputc rpl_fputc
648 # endif
649 _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
650 _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
651 # else
652 _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
653 # endif
654 _GL_CXXALIASWARN (fputc);
655 #endif
656
657 #if 1
658 # if 0 && (0 || 0)
659 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
660 # undef fputs
661 # define fputs rpl_fputs
662 # endif
663 _GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
664 _GL_ARG_NONNULL ((1, 2)));
665 _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
666 # else
667 _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
668 # endif
669 _GL_CXXALIASWARN (fputs);
670 #endif
671
672 #if 1
673 # if 0 && 0
674 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
675 # undef fread
676 # define fread rpl_fread
677 # endif
678 _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
679 _GL_ARG_NONNULL ((4)));
680 _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
681 # else
682 _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
683 # endif
684 _GL_CXXALIASWARN (fread);
685 #endif
686
687 #if 0
688 # if 0
689 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
690 # undef freopen
691 # define freopen rpl_freopen
692 # endif
693 _GL_FUNCDECL_RPL (freopen, FILE *,
694 (const char *filename, const char *mode, FILE *stream)
695 _GL_ARG_NONNULL ((2, 3)));
696 _GL_CXXALIAS_RPL (freopen, FILE *,
697 (const char *filename, const char *mode, FILE *stream));
698 # else
699 _GL_CXXALIAS_SYS (freopen, FILE *,
700 (const char *filename, const char *mode, FILE *stream));
701 # endif
702 _GL_CXXALIASWARN (freopen);
703 #elif defined GNULIB_POSIXCHECK
704 # undef freopen
705 /* Assume freopen is always declared. */
706 _GL_WARN_ON_USE (freopen,
707 "freopen on native Windows platforms is not POSIX compliant - "
708 "use gnulib module freopen for portability");
709 #endif
710
711 #if 1
712 # if 0 && 0
713 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
714 # undef fscanf
715 # define fscanf rpl_fscanf
716 # endif
717 _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
718 _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
719 _GL_ARG_NONNULL ((1, 2)));
720 _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
721 # else
722 _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
723 # endif
724 _GL_CXXALIASWARN (fscanf);
725 #endif
726
727
728 /* Set up the following warnings, based on which modules are in use.
729 GNU Coding Standards discourage the use of fseek, since it imposes
730 an arbitrary limitation on some 32-bit hosts. Remember that the
731 fseek module depends on the fseeko module, so we only have three
732 cases to consider:
733
734 1. The developer is not using either module. Issue a warning under
735 GNULIB_POSIXCHECK for both functions, to remind them that both
736 functions have bugs on some systems. _GL_NO_LARGE_FILES has no
737 impact on this warning.
738
739 2. The developer is using both modules. They may be unaware of the
740 arbitrary limitations of fseek, so issue a warning under
741 GNULIB_POSIXCHECK. On the other hand, they may be using both
742 modules intentionally, so the developer can define
743 _GL_NO_LARGE_FILES in the compilation units where the use of fseek
744 is safe, to silence the warning.
745
746 3. The developer is using the fseeko module, but not fseek. Gnulib
747 guarantees that fseek will still work around platform bugs in that
748 case, but we presume that the developer is aware of the pitfalls of
749 fseek and was trying to avoid it, so issue a warning even when
750 GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be
751 defined to silence the warning in particular compilation units.
752 In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
753 fseek gets defined as a macro, it is recommended that the developer
754 uses the fseek module, even if he is not calling the fseek function.
755
756 Most gnulib clients that perform stream operations should fall into
757 category 3. */
758
759 #if 0
760 # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
761 # define _GL_FSEEK_WARN /* Category 2, above. */
762 # undef fseek
763 # endif
764 # if 0
765 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
766 # undef fseek
767 # define fseek rpl_fseek
768 # endif
769 _GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
770 _GL_ARG_NONNULL ((1)));
771 _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
772 # else
773 _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
774 # endif
775 _GL_CXXALIASWARN (fseek);
776 #endif
777
778 #if 0
779 # if !0 && !defined _GL_NO_LARGE_FILES
780 # define _GL_FSEEK_WARN /* Category 3, above. */
781 # undef fseek
782 # endif
783 # if 0
784 /* Provide an fseeko function that is aware of a preceding fflush(), and which
785 detects pipes. */
786 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
787 # undef fseeko
788 # define fseeko rpl_fseeko
789 # endif
790 _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
791 _GL_ARG_NONNULL ((1)));
792 _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
793 # else
794 # if ! 1
795 _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
796 _GL_ARG_NONNULL ((1)));
797 # endif
798 _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
799 # endif
800 _GL_CXXALIASWARN (fseeko);
801 #elif defined GNULIB_POSIXCHECK
802 # define _GL_FSEEK_WARN /* Category 1, above. */
803 # undef fseek
804 # undef fseeko
805 # if HAVE_RAW_DECL_FSEEKO
806 _GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
807 "use gnulib module fseeko for portability");
808 # endif
809 #endif
810
811 #ifdef _GL_FSEEK_WARN
812 # undef _GL_FSEEK_WARN
813 /* Here, either fseek is undefined (but C89 guarantees that it is
814 declared), or it is defined as rpl_fseek (declared above). */
815 _GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
816 "on 32-bit platforms - "
817 "use fseeko function for handling of large files");
818 #endif
819
820
821 /* ftell, ftello. See the comments on fseek/fseeko. */
822
823 #if 0
824 # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
825 # define _GL_FTELL_WARN /* Category 2, above. */
826 # undef ftell
827 # endif
828 # if 0
829 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
830 # undef ftell
831 # define ftell rpl_ftell
832 # endif
833 _GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
834 _GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
835 # else
836 _GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
837 # endif
838 _GL_CXXALIASWARN (ftell);
839 #endif
840
841 #if 0
842 # if !0 && !defined _GL_NO_LARGE_FILES
843 # define _GL_FTELL_WARN /* Category 3, above. */
844 # undef ftell
845 # endif
846 # if 0
847 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
848 # undef ftello
849 # define ftello rpl_ftello
850 # endif
851 _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
852 _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
853 # else
854 # if ! 1
855 _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
856 # endif
857 _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
858 # endif
859 _GL_CXXALIASWARN (ftello);
860 #elif defined GNULIB_POSIXCHECK
861 # define _GL_FTELL_WARN /* Category 1, above. */
862 # undef ftell
863 # undef ftello
864 # if HAVE_RAW_DECL_FTELLO
865 _GL_WARN_ON_USE (ftello, "ftello is unportable - "
866 "use gnulib module ftello for portability");
867 # endif
868 #endif
869
870 #ifdef _GL_FTELL_WARN
871 # undef _GL_FTELL_WARN
872 /* Here, either ftell is undefined (but C89 guarantees that it is
873 declared), or it is defined as rpl_ftell (declared above). */
874 _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
875 "on 32-bit platforms - "
876 "use ftello function for handling of large files");
877 #endif
878
879
880 #if 1
881 # if 0 && (0 || 0)
882 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
883 # undef fwrite
884 # define fwrite rpl_fwrite
885 # endif
886 _GL_FUNCDECL_RPL (fwrite, size_t,
887 (const void *ptr, size_t s, size_t n, FILE *stream)
888 _GL_ARG_NONNULL ((1, 4)));
889 _GL_CXXALIAS_RPL (fwrite, size_t,
890 (const void *ptr, size_t s, size_t n, FILE *stream));
891 # else
892 _GL_CXXALIAS_SYS (fwrite, size_t,
893 (const void *ptr, size_t s, size_t n, FILE *stream));
894
895 /* Work around glibc bug 11959
896 <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
897 which sometimes causes an unwanted diagnostic for fwrite calls.
898 This affects only function declaration attributes, so it's not
899 needed for C++. */
900 # if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL
901 _GL_STDIO_INLINE size_t _GL_ARG_NONNULL ((1, 4))
rpl_fwrite(const void * ptr,size_t s,size_t n,FILE * stream)902 rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
903 {
904 size_t r = fwrite (ptr, s, n, stream);
905 (void) r;
906 return r;
907 }
908 # undef fwrite
909 # define fwrite rpl_fwrite
910 # endif
911 # endif
912 _GL_CXXALIASWARN (fwrite);
913 #endif
914
915 #if 1
916 # if 0 && 0
917 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
918 # undef getc
919 # define getc rpl_fgetc
920 # endif
921 _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
922 _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
923 # else
924 _GL_CXXALIAS_SYS (getc, int, (FILE *stream));
925 # endif
926 _GL_CXXALIASWARN (getc);
927 #endif
928
929 #if 1
930 # if 0 && 0
931 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
932 # undef getchar
933 # define getchar rpl_getchar
934 # endif
935 _GL_FUNCDECL_RPL (getchar, int, (void));
936 _GL_CXXALIAS_RPL (getchar, int, (void));
937 # else
938 _GL_CXXALIAS_SYS (getchar, int, (void));
939 # endif
940 _GL_CXXALIASWARN (getchar);
941 #endif
942
943 #if 1
944 /* Read input, up to (and including) the next occurrence of DELIMITER, from
945 STREAM, store it in *LINEPTR (and NUL-terminate it).
946 *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
947 bytes of space. It is realloc'd as necessary.
948 Return the number of bytes read and stored at *LINEPTR (not including the
949 NUL terminator), or -1 on error or EOF. */
950 # if 0
951 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
952 # undef getdelim
953 # define getdelim rpl_getdelim
954 # endif
955 _GL_FUNCDECL_RPL (getdelim, ssize_t,
956 (char **lineptr, size_t *linesize, int delimiter,
957 FILE *stream)
958 _GL_ARG_NONNULL ((1, 2, 4)));
959 _GL_CXXALIAS_RPL (getdelim, ssize_t,
960 (char **lineptr, size_t *linesize, int delimiter,
961 FILE *stream));
962 # else
963 # if !1
964 _GL_FUNCDECL_SYS (getdelim, ssize_t,
965 (char **lineptr, size_t *linesize, int delimiter,
966 FILE *stream)
967 _GL_ARG_NONNULL ((1, 2, 4)));
968 # endif
969 _GL_CXXALIAS_SYS (getdelim, ssize_t,
970 (char **lineptr, size_t *linesize, int delimiter,
971 FILE *stream));
972 # endif
973 _GL_CXXALIASWARN (getdelim);
974 #elif defined GNULIB_POSIXCHECK
975 # undef getdelim
976 # if HAVE_RAW_DECL_GETDELIM
977 _GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
978 "use gnulib module getdelim for portability");
979 # endif
980 #endif
981
982 #if 1
983 /* Read a line, up to (and including) the next newline, from STREAM, store it
984 in *LINEPTR (and NUL-terminate it).
985 *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
986 bytes of space. It is realloc'd as necessary.
987 Return the number of bytes read and stored at *LINEPTR (not including the
988 NUL terminator), or -1 on error or EOF. */
989 # if 0
990 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
991 # undef getline
992 # define getline rpl_getline
993 # endif
994 _GL_FUNCDECL_RPL (getline, ssize_t,
995 (char **lineptr, size_t *linesize, FILE *stream)
996 _GL_ARG_NONNULL ((1, 2, 3)));
997 _GL_CXXALIAS_RPL (getline, ssize_t,
998 (char **lineptr, size_t *linesize, FILE *stream));
999 # else
1000 # if !1
1001 _GL_FUNCDECL_SYS (getline, ssize_t,
1002 (char **lineptr, size_t *linesize, FILE *stream)
1003 _GL_ARG_NONNULL ((1, 2, 3)));
1004 # endif
1005 _GL_CXXALIAS_SYS (getline, ssize_t,
1006 (char **lineptr, size_t *linesize, FILE *stream));
1007 # endif
1008 # if 1
1009 _GL_CXXALIASWARN (getline);
1010 # endif
1011 #elif defined GNULIB_POSIXCHECK
1012 # undef getline
1013 # if HAVE_RAW_DECL_GETLINE
1014 _GL_WARN_ON_USE (getline, "getline is unportable - "
1015 "use gnulib module getline for portability");
1016 # endif
1017 #endif
1018
1019 /* It is very rare that the developer ever has full control of stdin,
1020 so any use of gets warrants an unconditional warning; besides, C11
1021 removed it. */
1022 #undef gets
1023 #if HAVE_RAW_DECL_GETS
1024 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
1025 #endif
1026
1027
1028 #if 1 || 0
1029 struct obstack;
1030 /* Grow an obstack with formatted output. Return the number of
1031 bytes added to OBS. No trailing nul byte is added, and the
1032 object should be closed with obstack_finish before use. Upon
1033 memory allocation error, call obstack_alloc_failed_handler. Upon
1034 other error, return -1. */
1035 # if 0
1036 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1037 # define obstack_printf rpl_obstack_printf
1038 # endif
1039 _GL_FUNCDECL_RPL (obstack_printf, int,
1040 (struct obstack *obs, const char *format, ...)
1041 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
1042 _GL_ARG_NONNULL ((1, 2)));
1043 _GL_CXXALIAS_RPL (obstack_printf, int,
1044 (struct obstack *obs, const char *format, ...));
1045 # else
1046 # if !0
1047 _GL_FUNCDECL_SYS (obstack_printf, int,
1048 (struct obstack *obs, const char *format, ...)
1049 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
1050 _GL_ARG_NONNULL ((1, 2)));
1051 # endif
1052 _GL_CXXALIAS_SYS (obstack_printf, int,
1053 (struct obstack *obs, const char *format, ...));
1054 # endif
1055 _GL_CXXALIASWARN (obstack_printf);
1056 # if 0
1057 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1058 # define obstack_vprintf rpl_obstack_vprintf
1059 # endif
1060 _GL_FUNCDECL_RPL (obstack_vprintf, int,
1061 (struct obstack *obs, const char *format, va_list args)
1062 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1063 _GL_ARG_NONNULL ((1, 2)));
1064 _GL_CXXALIAS_RPL (obstack_vprintf, int,
1065 (struct obstack *obs, const char *format, va_list args));
1066 # else
1067 # if !0
1068 _GL_FUNCDECL_SYS (obstack_vprintf, int,
1069 (struct obstack *obs, const char *format, va_list args)
1070 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1071 _GL_ARG_NONNULL ((1, 2)));
1072 # endif
1073 _GL_CXXALIAS_SYS (obstack_vprintf, int,
1074 (struct obstack *obs, const char *format, va_list args));
1075 # endif
1076 _GL_CXXALIASWARN (obstack_vprintf);
1077 #endif
1078
1079 #if 0
1080 # if !1
1081 _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
1082 # endif
1083 _GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
1084 _GL_CXXALIASWARN (pclose);
1085 #elif defined GNULIB_POSIXCHECK
1086 # undef pclose
1087 # if HAVE_RAW_DECL_PCLOSE
1088 _GL_WARN_ON_USE (pclose, "pclose is unportable - "
1089 "use gnulib module pclose for more portability");
1090 # endif
1091 #endif
1092
1093 #if 1
1094 /* Print a message to standard error, describing the value of ERRNO,
1095 (if STRING is not NULL and not empty) prefixed with STRING and ": ",
1096 and terminated with a newline. */
1097 # if 1
1098 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1099 # define perror rpl_perror
1100 # endif
1101 _GL_FUNCDECL_RPL (perror, void, (const char *string));
1102 _GL_CXXALIAS_RPL (perror, void, (const char *string));
1103 # else
1104 _GL_CXXALIAS_SYS (perror, void, (const char *string));
1105 # endif
1106 _GL_CXXALIASWARN (perror);
1107 #elif defined GNULIB_POSIXCHECK
1108 # undef perror
1109 /* Assume perror is always declared. */
1110 _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
1111 "use gnulib module perror for portability");
1112 #endif
1113
1114 #if 0
1115 # if 0
1116 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1117 # undef popen
1118 # define popen rpl_popen
1119 # endif
1120 _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
1121 _GL_ARG_NONNULL ((1, 2)));
1122 _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
1123 # else
1124 # if !1
1125 _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
1126 _GL_ARG_NONNULL ((1, 2)));
1127 # endif
1128 _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
1129 # endif
1130 _GL_CXXALIASWARN (popen);
1131 #elif defined GNULIB_POSIXCHECK
1132 # undef popen
1133 # if HAVE_RAW_DECL_POPEN
1134 _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
1135 "use gnulib module popen or pipe for more portability");
1136 # endif
1137 #endif
1138
1139 #if 1 || 1
1140 # if (1 && 1) \
1141 || (1 && 0 && (0 || 0))
1142 # if defined __GNUC__
1143 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1144 /* Don't break __attribute__((format(printf,M,N))). */
1145 # define printf __printf__
1146 # endif
1147 # if 1 || 1
1148 _GL_FUNCDECL_RPL_1 (__printf__, int,
1149 (const char *format, ...)
1150 __asm__ ("_"
1151 _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
1152 _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
1153 _GL_ARG_NONNULL ((1)));
1154 # else
1155 _GL_FUNCDECL_RPL_1 (__printf__, int,
1156 (const char *format, ...)
1157 __asm__ ("_"
1158 _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
1159 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
1160 _GL_ARG_NONNULL ((1)));
1161 # endif
1162 _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
1163 # else
1164 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1165 # define printf rpl_printf
1166 # endif
1167 _GL_FUNCDECL_RPL (printf, int,
1168 (const char *format, ...)
1169 _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
1170 _GL_ARG_NONNULL ((1)));
1171 _GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
1172 # endif
1173 # define GNULIB_overrides_printf 1
1174 # else
1175 _GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
1176 # endif
1177 _GL_CXXALIASWARN (printf);
1178 #endif
1179 #if !1 && defined GNULIB_POSIXCHECK
1180 # if !GNULIB_overrides_printf
1181 # undef printf
1182 # endif
1183 /* Assume printf is always declared. */
1184 _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
1185 "use gnulib module printf-posix for portable "
1186 "POSIX compliance");
1187 #endif
1188
1189 #if 1
1190 # if 0 && (0 || 0)
1191 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1192 # undef putc
1193 # define putc rpl_fputc
1194 # endif
1195 _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
1196 _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
1197 # else
1198 _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
1199 # endif
1200 _GL_CXXALIASWARN (putc);
1201 #endif
1202
1203 #if 1
1204 # if 0 && (0 || 0)
1205 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1206 # undef putchar
1207 # define putchar rpl_putchar
1208 # endif
1209 _GL_FUNCDECL_RPL (putchar, int, (int c));
1210 _GL_CXXALIAS_RPL (putchar, int, (int c));
1211 # else
1212 _GL_CXXALIAS_SYS (putchar, int, (int c));
1213 # endif
1214 _GL_CXXALIASWARN (putchar);
1215 #endif
1216
1217 #if 1
1218 # if 0 && (0 || 0)
1219 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1220 # undef puts
1221 # define puts rpl_puts
1222 # endif
1223 _GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
1224 _GL_CXXALIAS_RPL (puts, int, (const char *string));
1225 # else
1226 _GL_CXXALIAS_SYS (puts, int, (const char *string));
1227 # endif
1228 _GL_CXXALIASWARN (puts);
1229 #endif
1230
1231 #if 0
1232 # if 0
1233 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1234 # undef remove
1235 # define remove rpl_remove
1236 # endif
1237 _GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
1238 _GL_CXXALIAS_RPL (remove, int, (const char *name));
1239 # else
1240 _GL_CXXALIAS_SYS (remove, int, (const char *name));
1241 # endif
1242 _GL_CXXALIASWARN (remove);
1243 #elif defined GNULIB_POSIXCHECK
1244 # undef remove
1245 /* Assume remove is always declared. */
1246 _GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
1247 "use gnulib module remove for more portability");
1248 #endif
1249
1250 #if 0
1251 # if 0
1252 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1253 # undef rename
1254 # define rename rpl_rename
1255 # endif
1256 _GL_FUNCDECL_RPL (rename, int,
1257 (const char *old_filename, const char *new_filename)
1258 _GL_ARG_NONNULL ((1, 2)));
1259 _GL_CXXALIAS_RPL (rename, int,
1260 (const char *old_filename, const char *new_filename));
1261 # else
1262 _GL_CXXALIAS_SYS (rename, int,
1263 (const char *old_filename, const char *new_filename));
1264 # endif
1265 _GL_CXXALIASWARN (rename);
1266 #elif defined GNULIB_POSIXCHECK
1267 # undef rename
1268 /* Assume rename is always declared. */
1269 _GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
1270 "use gnulib module rename for more portability");
1271 #endif
1272
1273 #if 0
1274 # if 0
1275 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1276 # undef renameat
1277 # define renameat rpl_renameat
1278 # endif
1279 _GL_FUNCDECL_RPL (renameat, int,
1280 (int fd1, char const *file1, int fd2, char const *file2)
1281 _GL_ARG_NONNULL ((2, 4)));
1282 _GL_CXXALIAS_RPL (renameat, int,
1283 (int fd1, char const *file1, int fd2, char const *file2));
1284 # else
1285 # if !1
1286 _GL_FUNCDECL_SYS (renameat, int,
1287 (int fd1, char const *file1, int fd2, char const *file2)
1288 _GL_ARG_NONNULL ((2, 4)));
1289 # endif
1290 _GL_CXXALIAS_SYS (renameat, int,
1291 (int fd1, char const *file1, int fd2, char const *file2));
1292 # endif
1293 _GL_CXXALIASWARN (renameat);
1294 #elif defined GNULIB_POSIXCHECK
1295 # undef renameat
1296 # if HAVE_RAW_DECL_RENAMEAT
1297 _GL_WARN_ON_USE (renameat, "renameat is not portable - "
1298 "use gnulib module renameat for portability");
1299 # endif
1300 #endif
1301
1302 #if 1
1303 # if 0 && 0
1304 # if defined __GNUC__
1305 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1306 # undef scanf
1307 /* Don't break __attribute__((format(scanf,M,N))). */
1308 # define scanf __scanf__
1309 # endif
1310 _GL_FUNCDECL_RPL_1 (__scanf__, int,
1311 (const char *format, ...)
1312 __asm__ ("_"
1313 _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
1314 _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
1315 _GL_ARG_NONNULL ((1)));
1316 _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
1317 # else
1318 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1319 # undef scanf
1320 # define scanf rpl_scanf
1321 # endif
1322 _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
1323 _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
1324 _GL_ARG_NONNULL ((1)));
1325 _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
1326 # endif
1327 # else
1328 _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
1329 # endif
1330 _GL_CXXALIASWARN (scanf);
1331 #endif
1332
1333 #if 1
1334 # if 1
1335 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1336 # define snprintf rpl_snprintf
1337 # endif
1338 _GL_FUNCDECL_RPL (snprintf, int,
1339 (char *str, size_t size, const char *format, ...)
1340 _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
1341 _GL_ARG_NONNULL ((3)));
1342 _GL_CXXALIAS_RPL (snprintf, int,
1343 (char *str, size_t size, const char *format, ...));
1344 # else
1345 # if !1
1346 _GL_FUNCDECL_SYS (snprintf, int,
1347 (char *str, size_t size, const char *format, ...)
1348 _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
1349 _GL_ARG_NONNULL ((3)));
1350 # endif
1351 _GL_CXXALIAS_SYS (snprintf, int,
1352 (char *str, size_t size, const char *format, ...));
1353 # endif
1354 _GL_CXXALIASWARN (snprintf);
1355 #elif defined GNULIB_POSIXCHECK
1356 # undef snprintf
1357 # if HAVE_RAW_DECL_SNPRINTF
1358 _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
1359 "use gnulib module snprintf for portability");
1360 # endif
1361 #endif
1362
1363 /* Some people would argue that all sprintf uses should be warned about
1364 (for example, OpenBSD issues a link warning for it),
1365 since it can cause security holes due to buffer overruns.
1366 However, we believe that sprintf can be used safely, and is more
1367 efficient than snprintf in those safe cases; and as proof of our
1368 belief, we use sprintf in several gnulib modules. So this header
1369 intentionally avoids adding a warning to sprintf except when
1370 GNULIB_POSIXCHECK is defined. */
1371
1372 #if 1
1373 # if 1
1374 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1375 # define sprintf rpl_sprintf
1376 # endif
1377 _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
1378 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
1379 _GL_ARG_NONNULL ((1, 2)));
1380 _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
1381 # else
1382 _GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
1383 # endif
1384 _GL_CXXALIASWARN (sprintf);
1385 #elif defined GNULIB_POSIXCHECK
1386 # undef sprintf
1387 /* Assume sprintf is always declared. */
1388 _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
1389 "use gnulib module sprintf-posix for portable "
1390 "POSIX compliance");
1391 #endif
1392
1393 #if 0
1394 # if 0
1395 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1396 # define tmpfile rpl_tmpfile
1397 # endif
1398 _GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
1399 _GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
1400 # else
1401 _GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
1402 # endif
1403 _GL_CXXALIASWARN (tmpfile);
1404 #elif defined GNULIB_POSIXCHECK
1405 # undef tmpfile
1406 # if HAVE_RAW_DECL_TMPFILE
1407 _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
1408 "use gnulib module tmpfile for portability");
1409 # endif
1410 #endif
1411
1412 #if 0
1413 /* Write formatted output to a string dynamically allocated with malloc().
1414 If the memory allocation succeeds, store the address of the string in
1415 *RESULT and return the number of resulting bytes, excluding the trailing
1416 NUL. Upon memory allocation error, or some other error, return -1. */
1417 # if 0
1418 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1419 # define asprintf rpl_asprintf
1420 # endif
1421 _GL_FUNCDECL_RPL (asprintf, int,
1422 (char **result, const char *format, ...)
1423 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
1424 _GL_ARG_NONNULL ((1, 2)));
1425 _GL_CXXALIAS_RPL (asprintf, int,
1426 (char **result, const char *format, ...));
1427 # else
1428 # if !1
1429 _GL_FUNCDECL_SYS (asprintf, int,
1430 (char **result, const char *format, ...)
1431 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
1432 _GL_ARG_NONNULL ((1, 2)));
1433 # endif
1434 _GL_CXXALIAS_SYS (asprintf, int,
1435 (char **result, const char *format, ...));
1436 # endif
1437 _GL_CXXALIASWARN (asprintf);
1438 # if 0
1439 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1440 # define vasprintf rpl_vasprintf
1441 # endif
1442 _GL_FUNCDECL_RPL (vasprintf, int,
1443 (char **result, const char *format, va_list args)
1444 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1445 _GL_ARG_NONNULL ((1, 2)));
1446 _GL_CXXALIAS_RPL (vasprintf, int,
1447 (char **result, const char *format, va_list args));
1448 # else
1449 # if !1
1450 _GL_FUNCDECL_SYS (vasprintf, int,
1451 (char **result, const char *format, va_list args)
1452 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1453 _GL_ARG_NONNULL ((1, 2)));
1454 # endif
1455 _GL_CXXALIAS_SYS (vasprintf, int,
1456 (char **result, const char *format, va_list args));
1457 # endif
1458 _GL_CXXALIASWARN (vasprintf);
1459 #endif
1460
1461 #if 0
1462 # if 0
1463 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1464 # define vdprintf rpl_vdprintf
1465 # endif
1466 _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
1467 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1468 _GL_ARG_NONNULL ((2)));
1469 _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
1470 # else
1471 # if !1
1472 _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
1473 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1474 _GL_ARG_NONNULL ((2)));
1475 # endif
1476 /* Need to cast, because on Solaris, the third parameter will likely be
1477 __va_list args. */
1478 _GL_CXXALIAS_SYS_CAST (vdprintf, int,
1479 (int fd, const char *format, va_list args));
1480 # endif
1481 _GL_CXXALIASWARN (vdprintf);
1482 #elif defined GNULIB_POSIXCHECK
1483 # undef vdprintf
1484 # if HAVE_RAW_DECL_VDPRINTF
1485 _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
1486 "use gnulib module vdprintf for portability");
1487 # endif
1488 #endif
1489
1490 #if 1 || 1
1491 # if (1 && 1) \
1492 || (1 && 0 && (0 || 0))
1493 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1494 # define vfprintf rpl_vfprintf
1495 # endif
1496 # define GNULIB_overrides_vfprintf 1
1497 # if 1
1498 _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
1499 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1500 _GL_ARG_NONNULL ((1, 2)));
1501 # else
1502 _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
1503 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
1504 _GL_ARG_NONNULL ((1, 2)));
1505 # endif
1506 _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
1507 # else
1508 /* Need to cast, because on Solaris, the third parameter is
1509 __va_list args
1510 and GCC's fixincludes did not change this to __gnuc_va_list. */
1511 _GL_CXXALIAS_SYS_CAST (vfprintf, int,
1512 (FILE *fp, const char *format, va_list args));
1513 # endif
1514 _GL_CXXALIASWARN (vfprintf);
1515 #endif
1516 #if !1 && defined GNULIB_POSIXCHECK
1517 # if !GNULIB_overrides_vfprintf
1518 # undef vfprintf
1519 # endif
1520 /* Assume vfprintf is always declared. */
1521 _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
1522 "use gnulib module vfprintf-posix for portable "
1523 "POSIX compliance");
1524 #endif
1525
1526 #if 0
1527 # if 0 && 0
1528 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1529 # undef vfscanf
1530 # define vfscanf rpl_vfscanf
1531 # endif
1532 _GL_FUNCDECL_RPL (vfscanf, int,
1533 (FILE *stream, const char *format, va_list args)
1534 _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
1535 _GL_ARG_NONNULL ((1, 2)));
1536 _GL_CXXALIAS_RPL (vfscanf, int,
1537 (FILE *stream, const char *format, va_list args));
1538 # else
1539 _GL_CXXALIAS_SYS (vfscanf, int,
1540 (FILE *stream, const char *format, va_list args));
1541 # endif
1542 _GL_CXXALIASWARN (vfscanf);
1543 #endif
1544
1545 #if 0 || 1
1546 # if (0 && 0) \
1547 || (1 && 0 && (0 || 0))
1548 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1549 # define vprintf rpl_vprintf
1550 # endif
1551 # define GNULIB_overrides_vprintf 1
1552 # if 0 || 1
1553 _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
1554 _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
1555 _GL_ARG_NONNULL ((1)));
1556 # else
1557 _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
1558 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
1559 _GL_ARG_NONNULL ((1)));
1560 # endif
1561 _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
1562 # else
1563 /* Need to cast, because on Solaris, the second parameter is
1564 __va_list args
1565 and GCC's fixincludes did not change this to __gnuc_va_list. */
1566 _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
1567 # endif
1568 _GL_CXXALIASWARN (vprintf);
1569 #endif
1570 #if !0 && defined GNULIB_POSIXCHECK
1571 # if !GNULIB_overrides_vprintf
1572 # undef vprintf
1573 # endif
1574 /* Assume vprintf is always declared. */
1575 _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
1576 "use gnulib module vprintf-posix for portable "
1577 "POSIX compliance");
1578 #endif
1579
1580 #if 0
1581 # if 0 && 0
1582 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1583 # undef vscanf
1584 # define vscanf rpl_vscanf
1585 # endif
1586 _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
1587 _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
1588 _GL_ARG_NONNULL ((1)));
1589 _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
1590 # else
1591 _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
1592 # endif
1593 _GL_CXXALIASWARN (vscanf);
1594 #endif
1595
1596 #if 1
1597 # if 1
1598 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1599 # define vsnprintf rpl_vsnprintf
1600 # endif
1601 _GL_FUNCDECL_RPL (vsnprintf, int,
1602 (char *str, size_t size, const char *format, va_list args)
1603 _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
1604 _GL_ARG_NONNULL ((3)));
1605 _GL_CXXALIAS_RPL (vsnprintf, int,
1606 (char *str, size_t size, const char *format, va_list args));
1607 # else
1608 # if !1
1609 _GL_FUNCDECL_SYS (vsnprintf, int,
1610 (char *str, size_t size, const char *format, va_list args)
1611 _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
1612 _GL_ARG_NONNULL ((3)));
1613 # endif
1614 _GL_CXXALIAS_SYS (vsnprintf, int,
1615 (char *str, size_t size, const char *format, va_list args));
1616 # endif
1617 _GL_CXXALIASWARN (vsnprintf);
1618 #elif defined GNULIB_POSIXCHECK
1619 # undef vsnprintf
1620 # if HAVE_RAW_DECL_VSNPRINTF
1621 _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
1622 "use gnulib module vsnprintf for portability");
1623 # endif
1624 #endif
1625
1626 #if 1
1627 # if 1
1628 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1629 # define vsprintf rpl_vsprintf
1630 # endif
1631 _GL_FUNCDECL_RPL (vsprintf, int,
1632 (char *str, const char *format, va_list args)
1633 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
1634 _GL_ARG_NONNULL ((1, 2)));
1635 _GL_CXXALIAS_RPL (vsprintf, int,
1636 (char *str, const char *format, va_list args));
1637 # else
1638 /* Need to cast, because on Solaris, the third parameter is
1639 __va_list args
1640 and GCC's fixincludes did not change this to __gnuc_va_list. */
1641 _GL_CXXALIAS_SYS_CAST (vsprintf, int,
1642 (char *str, const char *format, va_list args));
1643 # endif
1644 _GL_CXXALIASWARN (vsprintf);
1645 #elif defined GNULIB_POSIXCHECK
1646 # undef vsprintf
1647 /* Assume vsprintf is always declared. */
1648 _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
1649 "use gnulib module vsprintf-posix for portable "
1650 "POSIX compliance");
1651 #endif
1652
1653 _GL_INLINE_HEADER_END
1654
1655 #endif /* _GL_STDIO_H */
1656 #endif /* _GL_STDIO_H */
1657 #endif
1658