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