• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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