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