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