Blame src/gl/stdio.in.h

Packit aea12f
/* A GNU-like <stdio.h>.
Packit aea12f
Packit Service 991b93
   Copyright (C) 2004, 2007-2020 Free Software Foundation, Inc.
Packit aea12f
Packit aea12f
   This program is free software; you can redistribute it and/or modify
Packit aea12f
   it under the terms of the GNU General Public License as published by
Packit aea12f
   the Free Software Foundation; either version 3, or (at your option)
Packit aea12f
   any later version.
Packit aea12f
Packit aea12f
   This program is distributed in the hope that it will be useful,
Packit aea12f
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit aea12f
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit aea12f
   GNU General Public License for more details.
Packit aea12f
Packit aea12f
   You should have received a copy of the GNU General Public License
Packit aea12f
   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
Packit aea12f
Packit aea12f
#if __GNUC__ >= 3
Packit aea12f
@PRAGMA_SYSTEM_HEADER@
Packit aea12f
#endif
Packit aea12f
@PRAGMA_COLUMNS@
Packit aea12f
Packit aea12f
#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
Packit aea12f
/* Special invocation convention:
Packit aea12f
   - Inside glibc header files.
Packit aea12f
   - On OSF/1 5.1 we have a sequence of nested includes
Packit aea12f
     <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
Packit aea12f
     <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
Packit aea12f
     In this situation, the functions are not yet declared, therefore we cannot
Packit aea12f
     provide the C++ aliases.  */
Packit aea12f
Packit aea12f
#@INCLUDE_NEXT@ @NEXT_STDIO_H@
Packit aea12f
Packit aea12f
#else
Packit aea12f
/* Normal invocation convention.  */
Packit aea12f
Packit aea12f
#ifndef _@GUARD_PREFIX@_STDIO_H
Packit aea12f
Packit aea12f
#define _GL_ALREADY_INCLUDING_STDIO_H
Packit aea12f
Packit aea12f
/* The include_next requires a split double-inclusion guard.  */
Packit aea12f
#@INCLUDE_NEXT@ @NEXT_STDIO_H@
Packit aea12f
Packit aea12f
#undef _GL_ALREADY_INCLUDING_STDIO_H
Packit aea12f
Packit aea12f
#ifndef _@GUARD_PREFIX@_STDIO_H
Packit aea12f
#define _@GUARD_PREFIX@_STDIO_H
Packit aea12f
Packit aea12f
/* Get va_list.  Needed on many systems, including glibc 2.8.  */
Packit aea12f
#include <stdarg.h>
Packit aea12f
Packit aea12f
#include <stddef.h>
Packit aea12f
Packit aea12f
/* Get off_t and ssize_t.  Needed on many systems, including glibc 2.8
Packit aea12f
   and eglibc 2.11.2.
Packit aea12f
   May also define off_t to a 64-bit type on native Windows.  */
Packit aea12f
#include <sys/types.h>
Packit aea12f
Packit aea12f
/* The __attribute__ feature is available in gcc versions 2.5 and later.
Packit aea12f
   The __-protected variants of the attributes 'format' and 'printf' are
Packit aea12f
   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
Packit aea12f
   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
Packit aea12f
   gnulib and libintl do '#define printf __printf__' when they override
Packit aea12f
   the 'printf' function.  */
Packit Service 991b93
#ifndef _GL_ATTRIBUTE_FORMAT
Packit Service 991b93
# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
Packit Service 991b93
#  define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
Packit Service 991b93
# else
Packit Service 991b93
#  define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* _GL_ATTRIBUTE_FORMAT_PRINTF
Packit aea12f
   indicates to GCC that the function takes a format string and arguments,
Packit aea12f
   where the format string directives are the ones standardized by ISO C99
Packit aea12f
   and POSIX.  */
Packit aea12f
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
Packit aea12f
# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
Packit aea12f
   _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
Packit aea12f
#else
Packit aea12f
# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
Packit aea12f
   _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
Packit aea12f
   except that it indicates to GCC that the supported format string directives
Packit aea12f
   are the ones of the system printf(), rather than the ones standardized by
Packit aea12f
   ISO C99 and POSIX.  */
Packit aea12f
#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
Packit aea12f
# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
Packit aea12f
  _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument)
Packit aea12f
#else
Packit aea12f
# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
Packit aea12f
  _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* _GL_ATTRIBUTE_FORMAT_SCANF
Packit aea12f
   indicates to GCC that the function takes a format string and arguments,
Packit aea12f
   where the format string directives are the ones standardized by ISO C99
Packit aea12f
   and POSIX.  */
Packit aea12f
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
Packit aea12f
# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
Packit aea12f
   _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
Packit aea12f
#else
Packit aea12f
# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
Packit aea12f
   _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
Packit aea12f
   except that it indicates to GCC that the supported format string directives
Packit aea12f
   are the ones of the system scanf(), rather than the ones standardized by
Packit aea12f
   ISO C99 and POSIX.  */
Packit aea12f
#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
Packit aea12f
  _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
Packit aea12f
Packit aea12f
/* Solaris 10 and NetBSD 7.0 declare renameat in <unistd.h>, not in <stdio.h>.  */
Packit aea12f
/* But in any case avoid namespace pollution on glibc systems.  */
Packit aea12f
#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \
Packit aea12f
    && ! defined __GLIBC__
Packit aea12f
# include <unistd.h>
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* Android 4.3 declares renameat in <sys/stat.h>, not in <stdio.h>.  */
Packit aea12f
/* But in any case avoid namespace pollution on glibc systems.  */
Packit aea12f
#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
Packit aea12f
    && ! defined __GLIBC__
Packit aea12f
# include <sys/stat.h>
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>.  We must include
Packit aea12f
   it before we  #define perror rpl_perror.  */
Packit aea12f
/* But in any case avoid namespace pollution on glibc systems.  */
Packit aea12f
#if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \
Packit aea12f
    && (defined _WIN32 && ! defined __CYGWIN__) \
Packit aea12f
    && ! defined __GLIBC__
Packit aea12f
# include <stdlib.h>
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* MSVC declares 'remove' in <io.h>, not in <stdio.h>.  We must include
Packit aea12f
   it before we  #define remove rpl_remove.  */
Packit aea12f
/* MSVC declares 'rename' in <io.h>, not in <stdio.h>.  We must include
Packit aea12f
   it before we  #define rename rpl_rename.  */
Packit aea12f
/* But in any case avoid namespace pollution on glibc systems.  */
Packit aea12f
#if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \
Packit aea12f
    && (defined _WIN32 && ! defined __CYGWIN__) \
Packit aea12f
    && ! defined __GLIBC__
Packit aea12f
# include <io.h>
Packit aea12f
#endif
Packit aea12f
Packit aea12f
Packit aea12f
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit aea12f
Packit aea12f
/* The definition of _GL_ARG_NONNULL is copied here.  */
Packit aea12f
Packit aea12f
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit aea12f
Packit aea12f
/* Macros for stringification.  */
Packit aea12f
#define _GL_STDIO_STRINGIZE(token) #token
Packit aea12f
#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
Packit aea12f
Packit aea12f
/* When also using extern inline, suppress the use of static inline in
Packit aea12f
   standard headers of problematic Apple configurations, as Libc at
Packit aea12f
   least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
Packit aea12f
   <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
Packit aea12f
   Perhaps Apple will fix this some day.  */
Packit aea12f
#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
Packit aea12f
     && defined __GNUC__ && defined __STDC__)
Packit aea12f
# undef putc_unlocked
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_DPRINTF@
Packit aea12f
# if @REPLACE_DPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define dprintf rpl_dprintf
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *restrict format, ...)
Packit aea12f
                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit aea12f
                                _GL_ARG_NONNULL ((2)));
Packit Service 991b93
_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *restrict format, ...));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DPRINTF@
Packit Service 991b93
_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *restrict format, ...)
Packit aea12f
                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit aea12f
                                _GL_ARG_NONNULL ((2)));
Packit aea12f
#  endif
Packit Service 991b93
_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *restrict format, ...));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (dprintf);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef dprintf
Packit aea12f
# if HAVE_RAW_DECL_DPRINTF
Packit aea12f
_GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
Packit aea12f
                 "use gnulib module dprintf for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FCLOSE@
Packit aea12f
/* Close STREAM and its underlying file descriptor.  */
Packit aea12f
# if @REPLACE_FCLOSE@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define fclose rpl_fclose
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fclose);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef fclose
Packit aea12f
/* Assume fclose is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module fclose for portable POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FDOPEN@
Packit aea12f
# if @REPLACE_FDOPEN@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fdopen
Packit aea12f
#   define fdopen rpl_fdopen
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
Packit aea12f
                                  _GL_ARG_NONNULL ((2)));
Packit aea12f
_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (fdopen);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef fdopen
Packit aea12f
/* Assume fdopen is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
Packit aea12f
                 "use gnulib module fdopen for portability");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FFLUSH@
Packit aea12f
/* Flush all pending data on STREAM according to POSIX rules.  Both
Packit aea12f
   output and seekable input streams are supported.
Packit aea12f
   Note! LOSS OF DATA can occur if fflush is applied on an input stream
Packit aea12f
   that is _not_seekable_ or on an update stream that is _not_seekable_
Packit aea12f
   and in which the most recent operation was input.  Seekability can
Packit aea12f
   be tested with lseek(fileno(fp),0,SEEK_CUR).  */
Packit aea12f
# if @REPLACE_FFLUSH@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define fflush rpl_fflush
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
Packit aea12f
_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fflush);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef fflush
Packit aea12f
/* Assume fflush is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module fflush for portable POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FGETC@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fgetc
Packit aea12f
#   define fgetc rpl_fgetc
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fgetc);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FGETS@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fgets
Packit aea12f
#   define fgets rpl_fgets
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (fgets, char *,
Packit Service 991b93
                  (char *restrict s, int n, FILE *restrict stream)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 3)));
Packit Service 991b93
_GL_CXXALIAS_RPL (fgets, char *,
Packit Service 991b93
                  (char *restrict s, int n, FILE *restrict stream));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (fgets, char *,
Packit Service 991b93
                  (char *restrict s, int n, FILE *restrict stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fgets);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FOPEN@
Packit aea12f
# if @REPLACE_FOPEN@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fopen
Packit aea12f
#   define fopen rpl_fopen
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (fopen, FILE *,
Packit Service 991b93
                  (const char *restrict filename, const char *restrict mode)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit Service 991b93
_GL_CXXALIAS_RPL (fopen, FILE *,
Packit Service 991b93
                  (const char *restrict filename, const char *restrict mode));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (fopen, FILE *,
Packit Service 991b93
                  (const char *restrict filename, const char *restrict mode));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fopen);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef fopen
Packit aea12f
/* Assume fopen is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
Packit aea12f
                 "use gnulib module fopen for portability");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
Packit aea12f
# if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
Packit aea12f
     || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define fprintf rpl_fprintf
Packit aea12f
#  endif
Packit aea12f
#  define GNULIB_overrides_fprintf 1
Packit aea12f
#  if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
Packit Service 991b93
_GL_FUNCDECL_RPL (fprintf, int,
Packit Service 991b93
                  (FILE *restrict fp, const char *restrict format, ...)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  else
Packit Service 991b93
_GL_FUNCDECL_RPL (fprintf, int,
Packit Service 991b93
                  (FILE *restrict fp, const char *restrict format, ...)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit Service 991b93
_GL_CXXALIAS_RPL (fprintf, int,
Packit Service 991b93
                  (FILE *restrict fp, const char *restrict format, ...));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (fprintf, int,
Packit Service 991b93
                  (FILE *restrict fp, const char *restrict format, ...));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fprintf);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
#if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
Packit aea12f
# if !GNULIB_overrides_fprintf
Packit aea12f
#  undef fprintf
Packit aea12f
# endif
Packit aea12f
/* Assume fprintf is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module fprintf-posix for portable "
Packit aea12f
                 "POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FPURGE@
Packit aea12f
/* Discard all pending buffered I/O data on STREAM.
Packit aea12f
   STREAM must not be wide-character oriented.
Packit aea12f
   When discarding pending output, the file position is set back to where it
Packit aea12f
   was before the write calls.  When discarding pending input, the file
Packit aea12f
   position is advanced to match the end of the previously read input.
Packit aea12f
   Return 0 if successful.  Upon error, return -1 and set errno.  */
Packit aea12f
# if @REPLACE_FPURGE@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define fpurge rpl_fpurge
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_FPURGE@
Packit aea12f
_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (fpurge);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef fpurge
Packit aea12f
# if HAVE_RAW_DECL_FPURGE
Packit aea12f
_GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
Packit aea12f
                 "use gnulib module fpurge for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FPUTC@
Packit aea12f
# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fputc
Packit aea12f
#   define fputc rpl_fputc
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
Packit aea12f
_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fputc);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FPUTS@
Packit aea12f
# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fputs
Packit aea12f
#   define fputs rpl_fputs
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (fputs, int,
Packit Service 991b93
                  (const char *restrict string, FILE *restrict stream)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit Service 991b93
_GL_CXXALIAS_RPL (fputs, int,
Packit Service 991b93
                  (const char *restrict string, FILE *restrict stream));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (fputs, int,
Packit Service 991b93
                  (const char *restrict string, FILE *restrict stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fputs);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FREAD@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fread
Packit aea12f
#   define fread rpl_fread
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (fread, size_t,
Packit Service 991b93
                  (void *restrict ptr, size_t s, size_t n,
Packit Service 991b93
                   FILE *restrict stream)
Packit Service 991b93
                  _GL_ARG_NONNULL ((4)));
Packit Service 991b93
_GL_CXXALIAS_RPL (fread, size_t,
Packit Service 991b93
                  (void *restrict ptr, size_t s, size_t n,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (fread, size_t,
Packit Service 991b93
                  (void *restrict ptr, size_t s, size_t n,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fread);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FREOPEN@
Packit aea12f
# if @REPLACE_FREOPEN@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef freopen
Packit aea12f
#   define freopen rpl_freopen
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (freopen, FILE *,
Packit Service 991b93
                  (const char *restrict filename, const char *restrict mode,
Packit Service 991b93
                   FILE *restrict stream)
Packit aea12f
                  _GL_ARG_NONNULL ((2, 3)));
Packit aea12f
_GL_CXXALIAS_RPL (freopen, FILE *,
Packit Service 991b93
                  (const char *restrict filename, const char *restrict mode,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (freopen, FILE *,
Packit Service 991b93
                  (const char *restrict filename, const char *restrict mode,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (freopen);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef freopen
Packit aea12f
/* Assume freopen is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (freopen,
Packit aea12f
                 "freopen on native Windows platforms is not POSIX compliant - "
Packit aea12f
                 "use gnulib module freopen for portability");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FSCANF@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fscanf
Packit aea12f
#   define fscanf rpl_fscanf
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (fscanf, int,
Packit Service 991b93
                  (FILE *restrict stream, const char *restrict format, ...)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit Service 991b93
_GL_CXXALIAS_RPL (fscanf, int,
Packit Service 991b93
                  (FILE *restrict stream, const char *restrict format, ...));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (fscanf, int,
Packit Service 991b93
                  (FILE *restrict stream, const char *restrict format, ...));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fscanf);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
Packit aea12f
/* Set up the following warnings, based on which modules are in use.
Packit aea12f
   GNU Coding Standards discourage the use of fseek, since it imposes
Packit aea12f
   an arbitrary limitation on some 32-bit hosts.  Remember that the
Packit aea12f
   fseek module depends on the fseeko module, so we only have three
Packit aea12f
   cases to consider:
Packit aea12f
Packit aea12f
   1. The developer is not using either module.  Issue a warning under
Packit aea12f
   GNULIB_POSIXCHECK for both functions, to remind them that both
Packit aea12f
   functions have bugs on some systems.  _GL_NO_LARGE_FILES has no
Packit aea12f
   impact on this warning.
Packit aea12f
Packit aea12f
   2. The developer is using both modules.  They may be unaware of the
Packit aea12f
   arbitrary limitations of fseek, so issue a warning under
Packit aea12f
   GNULIB_POSIXCHECK.  On the other hand, they may be using both
Packit aea12f
   modules intentionally, so the developer can define
Packit aea12f
   _GL_NO_LARGE_FILES in the compilation units where the use of fseek
Packit aea12f
   is safe, to silence the warning.
Packit aea12f
Packit aea12f
   3. The developer is using the fseeko module, but not fseek.  Gnulib
Packit aea12f
   guarantees that fseek will still work around platform bugs in that
Packit aea12f
   case, but we presume that the developer is aware of the pitfalls of
Packit aea12f
   fseek and was trying to avoid it, so issue a warning even when
Packit aea12f
   GNULIB_POSIXCHECK is undefined.  Again, _GL_NO_LARGE_FILES can be
Packit aea12f
   defined to silence the warning in particular compilation units.
Packit aea12f
   In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
Packit aea12f
   fseek gets defined as a macro, it is recommended that the developer
Packit aea12f
   uses the fseek module, even if he is not calling the fseek function.
Packit aea12f
Packit aea12f
   Most gnulib clients that perform stream operations should fall into
Packit aea12f
   category 3.  */
Packit aea12f
Packit aea12f
#if @GNULIB_FSEEK@
Packit aea12f
# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
Packit aea12f
#  define _GL_FSEEK_WARN /* Category 2, above.  */
Packit aea12f
#  undef fseek
Packit aea12f
# endif
Packit aea12f
# if @REPLACE_FSEEK@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fseek
Packit aea12f
#   define fseek rpl_fseek
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
Packit aea12f
                              _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fseek);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FSEEKO@
Packit aea12f
# if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES
Packit aea12f
#  define _GL_FSEEK_WARN /* Category 3, above.  */
Packit aea12f
#  undef fseek
Packit aea12f
# endif
Packit aea12f
# if @REPLACE_FSEEKO@
Packit aea12f
/* Provide an fseeko function that is aware of a preceding fflush(), and which
Packit aea12f
   detects pipes.  */
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fseeko
Packit aea12f
#   define fseeko rpl_fseeko
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
Packit aea12f
                               _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
Packit aea12f
# else
Packit aea12f
#  if ! @HAVE_DECL_FSEEKO@
Packit aea12f
_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
Packit aea12f
                               _GL_ARG_NONNULL ((1)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (fseeko);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# define _GL_FSEEK_WARN /* Category 1, above.  */
Packit aea12f
# undef fseek
Packit aea12f
# undef fseeko
Packit aea12f
# if HAVE_RAW_DECL_FSEEKO
Packit aea12f
_GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
Packit aea12f
                 "use gnulib module fseeko for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#ifdef _GL_FSEEK_WARN
Packit aea12f
# undef _GL_FSEEK_WARN
Packit aea12f
/* Here, either fseek is undefined (but C89 guarantees that it is
Packit aea12f
   declared), or it is defined as rpl_fseek (declared above).  */
Packit aea12f
_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
Packit aea12f
                 "on 32-bit platforms - "
Packit aea12f
                 "use fseeko function for handling of large files");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
Packit aea12f
/* ftell, ftello.  See the comments on fseek/fseeko.  */
Packit aea12f
Packit aea12f
#if @GNULIB_FTELL@
Packit aea12f
# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
Packit aea12f
#  define _GL_FTELL_WARN /* Category 2, above.  */
Packit aea12f
#  undef ftell
Packit aea12f
# endif
Packit aea12f
# if @REPLACE_FTELL@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef ftell
Packit aea12f
#   define ftell rpl_ftell
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (ftell);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_FTELLO@
Packit aea12f
# if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES
Packit aea12f
#  define _GL_FTELL_WARN /* Category 3, above.  */
Packit aea12f
#  undef ftell
Packit aea12f
# endif
Packit aea12f
# if @REPLACE_FTELLO@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef ftello
Packit aea12f
#   define ftello rpl_ftello
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
Packit aea12f
# else
Packit aea12f
#  if ! @HAVE_DECL_FTELLO@
Packit aea12f
_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (ftello);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# define _GL_FTELL_WARN /* Category 1, above.  */
Packit aea12f
# undef ftell
Packit aea12f
# undef ftello
Packit aea12f
# if HAVE_RAW_DECL_FTELLO
Packit aea12f
_GL_WARN_ON_USE (ftello, "ftello is unportable - "
Packit aea12f
                 "use gnulib module ftello for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#ifdef _GL_FTELL_WARN
Packit aea12f
# undef _GL_FTELL_WARN
Packit aea12f
/* Here, either ftell is undefined (but C89 guarantees that it is
Packit aea12f
   declared), or it is defined as rpl_ftell (declared above).  */
Packit aea12f
_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
Packit aea12f
                 "on 32-bit platforms - "
Packit aea12f
                 "use ftello function for handling of large files");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
Packit aea12f
#if @GNULIB_FWRITE@
Packit aea12f
# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef fwrite
Packit aea12f
#   define fwrite rpl_fwrite
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fwrite, size_t,
Packit Service 991b93
                  (const void *restrict ptr, size_t s, size_t n,
Packit Service 991b93
                   FILE *restrict stream)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 4)));
Packit aea12f
_GL_CXXALIAS_RPL (fwrite, size_t,
Packit Service 991b93
                  (const void *restrict ptr, size_t s, size_t n,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (fwrite, size_t,
Packit Service 991b93
                  (const void *restrict ptr, size_t s, size_t n,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
Packit aea12f
/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
Packit aea12f
   <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>,
Packit aea12f
   which sometimes causes an unwanted diagnostic for fwrite calls.
Packit aea12f
   This affects only function declaration attributes under certain
Packit aea12f
   versions of gcc and clang, and is not needed for C++.  */
Packit aea12f
#  if (0 < __USE_FORTIFY_LEVEL                                          \
Packit aea12f
       && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
Packit aea12f
       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
Packit aea12f
       && !defined __cplusplus)
Packit aea12f
#   undef fwrite
Packit aea12f
#   undef fwrite_unlocked
Packit aea12f
extern size_t __REDIRECT (rpl_fwrite,
Packit aea12f
                          (const void *__restrict, size_t, size_t,
Packit aea12f
                           FILE *__restrict),
Packit aea12f
                          fwrite);
Packit aea12f
extern size_t __REDIRECT (rpl_fwrite_unlocked,
Packit aea12f
                          (const void *__restrict, size_t, size_t,
Packit aea12f
                           FILE *__restrict),
Packit aea12f
                          fwrite_unlocked);
Packit aea12f
#   define fwrite rpl_fwrite
Packit aea12f
#   define fwrite_unlocked rpl_fwrite_unlocked
Packit aea12f
#  endif
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (fwrite);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_GETC@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef getc
Packit aea12f
#   define getc rpl_fgetc
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (getc);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_GETCHAR@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef getchar
Packit aea12f
#   define getchar rpl_getchar
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (getchar, int, (void));
Packit aea12f
_GL_CXXALIAS_RPL (getchar, int, (void));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (getchar, int, (void));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (getchar);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_GETDELIM@
Packit aea12f
/* Read input, up to (and including) the next occurrence of DELIMITER, from
Packit aea12f
   STREAM, store it in *LINEPTR (and NUL-terminate it).
Packit aea12f
   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
Packit aea12f
   bytes of space.  It is realloc'd as necessary.
Packit aea12f
   Return the number of bytes read and stored at *LINEPTR (not including the
Packit aea12f
   NUL terminator), or -1 on error or EOF.  */
Packit aea12f
# if @REPLACE_GETDELIM@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef getdelim
Packit aea12f
#   define getdelim rpl_getdelim
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (getdelim, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   int delimiter,
Packit Service 991b93
                   FILE *restrict stream)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2, 4)));
Packit aea12f
_GL_CXXALIAS_RPL (getdelim, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   int delimiter,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_GETDELIM@
Packit aea12f
_GL_FUNCDECL_SYS (getdelim, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   int delimiter,
Packit Service 991b93
                   FILE *restrict stream)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2, 4)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (getdelim, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   int delimiter,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (getdelim);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef getdelim
Packit aea12f
# if HAVE_RAW_DECL_GETDELIM
Packit aea12f
_GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
Packit aea12f
                 "use gnulib module getdelim for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_GETLINE@
Packit aea12f
/* Read a line, up to (and including) the next newline, from STREAM, store it
Packit aea12f
   in *LINEPTR (and NUL-terminate it).
Packit aea12f
   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
Packit aea12f
   bytes of space.  It is realloc'd as necessary.
Packit aea12f
   Return the number of bytes read and stored at *LINEPTR (not including the
Packit aea12f
   NUL terminator), or -1 on error or EOF.  */
Packit aea12f
# if @REPLACE_GETLINE@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef getline
Packit aea12f
#   define getline rpl_getline
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (getline, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   FILE *restrict stream)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2, 3)));
Packit aea12f
_GL_CXXALIAS_RPL (getline, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_GETLINE@
Packit aea12f
_GL_FUNCDECL_SYS (getline, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   FILE *restrict stream)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2, 3)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (getline, ssize_t,
Packit Service 991b93
                  (char **restrict lineptr, size_t *restrict linesize,
Packit Service 991b93
                   FILE *restrict stream));
Packit aea12f
# endif
Packit aea12f
# if @HAVE_DECL_GETLINE@
Packit aea12f
_GL_CXXALIASWARN (getline);
Packit aea12f
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef getline
Packit aea12f
# if HAVE_RAW_DECL_GETLINE
Packit aea12f
_GL_WARN_ON_USE (getline, "getline is unportable - "
Packit aea12f
                 "use gnulib module getline for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* It is very rare that the developer ever has full control of stdin,
Packit aea12f
   so any use of gets warrants an unconditional warning; besides, C11
Packit aea12f
   removed it.  */
Packit aea12f
#undef gets
Packit aea12f
#if HAVE_RAW_DECL_GETS && !defined __cplusplus
Packit aea12f
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
Packit aea12f
struct obstack;
Packit aea12f
/* Grow an obstack with formatted output.  Return the number of
Packit aea12f
   bytes added to OBS.  No trailing nul byte is added, and the
Packit aea12f
   object should be closed with obstack_finish before use.  Upon
Packit aea12f
   memory allocation error, call obstack_alloc_failed_handler.  Upon
Packit aea12f
   other error, return -1.  */
Packit aea12f
# if @REPLACE_OBSTACK_PRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define obstack_printf rpl_obstack_printf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (obstack_printf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (obstack_printf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, ...));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_OBSTACK_PRINTF@
Packit aea12f
_GL_FUNCDECL_SYS (obstack_printf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (obstack_printf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, ...));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (obstack_printf);
Packit aea12f
# if @REPLACE_OBSTACK_PRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define obstack_vprintf rpl_obstack_vprintf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (obstack_vprintf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (obstack_vprintf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, va_list args));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_OBSTACK_PRINTF@
Packit aea12f
_GL_FUNCDECL_SYS (obstack_vprintf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (obstack_vprintf, int,
Packit aea12f
                  (struct obstack *obs, const char *format, va_list args));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (obstack_vprintf);
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_PCLOSE@
Packit aea12f
# if !@HAVE_PCLOSE@
Packit aea12f
_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
Packit aea12f
_GL_CXXALIASWARN (pclose);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef pclose
Packit aea12f
# if HAVE_RAW_DECL_PCLOSE
Packit aea12f
_GL_WARN_ON_USE (pclose, "pclose is unportable - "
Packit aea12f
                 "use gnulib module pclose for more portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_PERROR@
Packit aea12f
/* Print a message to standard error, describing the value of ERRNO,
Packit aea12f
   (if STRING is not NULL and not empty) prefixed with STRING and ": ",
Packit aea12f
   and terminated with a newline.  */
Packit aea12f
# if @REPLACE_PERROR@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define perror rpl_perror
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (perror, void, (const char *string));
Packit aea12f
_GL_CXXALIAS_RPL (perror, void, (const char *string));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (perror, void, (const char *string));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (perror);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef perror
Packit aea12f
/* Assume perror is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module perror for portability");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_POPEN@
Packit aea12f
# if @REPLACE_POPEN@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef popen
Packit aea12f
#   define popen rpl_popen
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
Packit aea12f
                                 _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_POPEN@
Packit aea12f
_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
Packit aea12f
                                 _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (popen);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef popen
Packit aea12f
# if HAVE_RAW_DECL_POPEN
Packit aea12f
_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
Packit aea12f
                 "use gnulib module popen or pipe for more portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
Packit aea12f
# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
Packit aea12f
     || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
Packit aea12f
#  if defined __GNUC__
Packit aea12f
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
/* Don't break __attribute__((format(printf,M,N))).  */
Packit aea12f
#    define printf __printf__
Packit aea12f
#   endif
Packit aea12f
#   if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
Packit aea12f
_GL_FUNCDECL_RPL_1 (__printf__, int,
Packit Service 991b93
                    (const char *restrict format, ...)
Packit aea12f
                    __asm__ (@ASM_SYMBOL_PREFIX@
Packit aea12f
                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
Packit aea12f
                    _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
Packit aea12f
                    _GL_ARG_NONNULL ((1)));
Packit aea12f
#   else
Packit aea12f
_GL_FUNCDECL_RPL_1 (__printf__, int,
Packit Service 991b93
                    (const char *restrict format, ...)
Packit aea12f
                    __asm__ (@ASM_SYMBOL_PREFIX@
Packit aea12f
                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
Packit aea12f
                    _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
Packit aea12f
                    _GL_ARG_NONNULL ((1)));
Packit aea12f
#   endif
Packit aea12f
_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
Packit aea12f
#  else
Packit aea12f
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#    define printf rpl_printf
Packit aea12f
#   endif
Packit aea12f
_GL_FUNCDECL_RPL (printf, int,
Packit Service 991b93
                  (const char *restrict format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
Packit aea12f
                  _GL_ARG_NONNULL ((1)));
Packit Service 991b93
_GL_CXXALIAS_RPL (printf, int, (const char *restrict format, ...));
Packit aea12f
#  endif
Packit aea12f
#  define GNULIB_overrides_printf 1
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (printf, int, (const char *restrict format, ...));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (printf);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
#if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK
Packit aea12f
# if !GNULIB_overrides_printf
Packit aea12f
#  undef printf
Packit aea12f
# endif
Packit aea12f
/* Assume printf is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module printf-posix for portable "
Packit aea12f
                 "POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_PUTC@
Packit aea12f
# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef putc
Packit aea12f
#   define putc rpl_fputc
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
Packit aea12f
_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (putc);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_PUTCHAR@
Packit aea12f
# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef putchar
Packit aea12f
#   define putchar rpl_putchar
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (putchar, int, (int c));
Packit aea12f
_GL_CXXALIAS_RPL (putchar, int, (int c));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (putchar, int, (int c));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (putchar);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_PUTS@
Packit aea12f
# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef puts
Packit aea12f
#   define puts rpl_puts
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (puts, int, (const char *string));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (puts, int, (const char *string));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (puts);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_REMOVE@
Packit aea12f
# if @REPLACE_REMOVE@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef remove
Packit aea12f
#   define remove rpl_remove
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
Packit aea12f
_GL_CXXALIAS_RPL (remove, int, (const char *name));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (remove, int, (const char *name));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (remove);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef remove
Packit aea12f
/* Assume remove is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
Packit aea12f
                 "use gnulib module remove for more portability");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_RENAME@
Packit aea12f
# if @REPLACE_RENAME@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef rename
Packit aea12f
#   define rename rpl_rename
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (rename, int,
Packit aea12f
                  (const char *old_filename, const char *new_filename)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (rename, int,
Packit aea12f
                  (const char *old_filename, const char *new_filename));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (rename, int,
Packit aea12f
                  (const char *old_filename, const char *new_filename));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (rename);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef rename
Packit aea12f
/* Assume rename is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
Packit aea12f
                 "use gnulib module rename for more portability");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_RENAMEAT@
Packit aea12f
# if @REPLACE_RENAMEAT@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef renameat
Packit aea12f
#   define renameat rpl_renameat
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (renameat, int,
Packit aea12f
                  (int fd1, char const *file1, int fd2, char const *file2)
Packit aea12f
                  _GL_ARG_NONNULL ((2, 4)));
Packit aea12f
_GL_CXXALIAS_RPL (renameat, int,
Packit aea12f
                  (int fd1, char const *file1, int fd2, char const *file2));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_RENAMEAT@
Packit aea12f
_GL_FUNCDECL_SYS (renameat, int,
Packit aea12f
                  (int fd1, char const *file1, int fd2, char const *file2)
Packit aea12f
                  _GL_ARG_NONNULL ((2, 4)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (renameat, int,
Packit aea12f
                  (int fd1, char const *file1, int fd2, char const *file2));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (renameat);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef renameat
Packit aea12f
# if HAVE_RAW_DECL_RENAMEAT
Packit aea12f
_GL_WARN_ON_USE (renameat, "renameat is not portable - "
Packit aea12f
                 "use gnulib module renameat for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_SCANF@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if defined __GNUC__
Packit aea12f
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#    undef scanf
Packit aea12f
/* Don't break __attribute__((format(scanf,M,N))).  */
Packit aea12f
#    define scanf __scanf__
Packit aea12f
#   endif
Packit aea12f
_GL_FUNCDECL_RPL_1 (__scanf__, int,
Packit Service 991b93
                    (const char *restrict format, ...)
Packit aea12f
                    __asm__ (@ASM_SYMBOL_PREFIX@
Packit aea12f
                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
Packit aea12f
                    _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
Packit aea12f
                    _GL_ARG_NONNULL ((1)));
Packit Service 991b93
_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *restrict format, ...));
Packit aea12f
#  else
Packit aea12f
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#    undef scanf
Packit aea12f
#    define scanf rpl_scanf
Packit aea12f
#   endif
Packit Service 991b93
_GL_FUNCDECL_RPL (scanf, int, (const char *restrict format, ...)
Packit aea12f
                              _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
Packit aea12f
                              _GL_ARG_NONNULL ((1)));
Packit Service 991b93
_GL_CXXALIAS_RPL (scanf, int, (const char *restrict format, ...));
Packit aea12f
#  endif
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (scanf, int, (const char *restrict format, ...));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (scanf);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_SNPRINTF@
Packit aea12f
# if @REPLACE_SNPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define snprintf rpl_snprintf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (snprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
Packit aea12f
                  _GL_ARG_NONNULL ((3)));
Packit aea12f
_GL_CXXALIAS_RPL (snprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, ...));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_SNPRINTF@
Packit aea12f
_GL_FUNCDECL_SYS (snprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
Packit aea12f
                  _GL_ARG_NONNULL ((3)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (snprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, ...));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (snprintf);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef snprintf
Packit aea12f
# if HAVE_RAW_DECL_SNPRINTF
Packit aea12f
_GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
Packit aea12f
                 "use gnulib module snprintf for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
/* Some people would argue that all sprintf uses should be warned about
Packit aea12f
   (for example, OpenBSD issues a link warning for it),
Packit aea12f
   since it can cause security holes due to buffer overruns.
Packit aea12f
   However, we believe that sprintf can be used safely, and is more
Packit aea12f
   efficient than snprintf in those safe cases; and as proof of our
Packit aea12f
   belief, we use sprintf in several gnulib modules.  So this header
Packit aea12f
   intentionally avoids adding a warning to sprintf except when
Packit aea12f
   GNULIB_POSIXCHECK is defined.  */
Packit aea12f
Packit aea12f
#if @GNULIB_SPRINTF_POSIX@
Packit aea12f
# if @REPLACE_SPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define sprintf rpl_sprintf
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (sprintf, int,
Packit Service 991b93
                  (char *restrict str, const char *restrict format, ...)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit Service 991b93
_GL_CXXALIAS_RPL (sprintf, int,
Packit Service 991b93
                  (char *restrict str, const char *restrict format, ...));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (sprintf, int,
Packit Service 991b93
                  (char *restrict str, const char *restrict format, ...));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (sprintf);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef sprintf
Packit aea12f
/* Assume sprintf is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module sprintf-posix for portable "
Packit aea12f
                 "POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_TMPFILE@
Packit aea12f
# if @REPLACE_TMPFILE@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define tmpfile rpl_tmpfile
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
Packit aea12f
_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (tmpfile);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef tmpfile
Packit aea12f
# if HAVE_RAW_DECL_TMPFILE
Packit aea12f
_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
Packit aea12f
                 "use gnulib module tmpfile for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VASPRINTF@
Packit aea12f
/* Write formatted output to a string dynamically allocated with malloc().
Packit aea12f
   If the memory allocation succeeds, store the address of the string in
Packit aea12f
   *RESULT and return the number of resulting bytes, excluding the trailing
Packit aea12f
   NUL.  Upon memory allocation error, or some other error, return -1.  */
Packit aea12f
# if @REPLACE_VASPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define asprintf rpl_asprintf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (asprintf, int,
Packit aea12f
                  (char **result, const char *format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (asprintf, int,
Packit aea12f
                  (char **result, const char *format, ...));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_VASPRINTF@
Packit aea12f
_GL_FUNCDECL_SYS (asprintf, int,
Packit aea12f
                  (char **result, const char *format, ...)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (asprintf, int,
Packit aea12f
                  (char **result, const char *format, ...));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (asprintf);
Packit aea12f
# if @REPLACE_VASPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define vasprintf rpl_vasprintf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (vasprintf, int,
Packit aea12f
                  (char **result, const char *format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (vasprintf, int,
Packit aea12f
                  (char **result, const char *format, va_list args));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_VASPRINTF@
Packit aea12f
_GL_FUNCDECL_SYS (vasprintf, int,
Packit aea12f
                  (char **result, const char *format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (vasprintf, int,
Packit aea12f
                  (char **result, const char *format, va_list args));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (vasprintf);
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VDPRINTF@
Packit aea12f
# if @REPLACE_VDPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define vdprintf rpl_vdprintf
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (vdprintf, int,
Packit Service 991b93
                  (int fd, const char *restrict format, va_list args)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit Service 991b93
                  _GL_ARG_NONNULL ((2)));
Packit Service 991b93
_GL_CXXALIAS_RPL (vdprintf, int,
Packit Service 991b93
                  (int fd, const char *restrict format, va_list args));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_VDPRINTF@
Packit Service 991b93
_GL_FUNCDECL_SYS (vdprintf, int,
Packit Service 991b93
                  (int fd, const char *restrict format, va_list args)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit Service 991b93
                  _GL_ARG_NONNULL ((2)));
Packit aea12f
#  endif
Packit aea12f
/* Need to cast, because on Solaris, the third parameter will likely be
Packit aea12f
                                                    __va_list args.  */
Packit aea12f
_GL_CXXALIAS_SYS_CAST (vdprintf, int,
Packit Service 991b93
                       (int fd, const char *restrict format, va_list args));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (vdprintf);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef vdprintf
Packit aea12f
# if HAVE_RAW_DECL_VDPRINTF
Packit aea12f
_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
Packit aea12f
                 "use gnulib module vdprintf for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
Packit aea12f
# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
Packit aea12f
     || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define vfprintf rpl_vfprintf
Packit aea12f
#  endif
Packit aea12f
#  define GNULIB_overrides_vfprintf 1
Packit aea12f
#  if @GNULIB_VFPRINTF_POSIX@
Packit Service 991b93
_GL_FUNCDECL_RPL (vfprintf, int,
Packit Service 991b93
                  (FILE *restrict fp,
Packit Service 991b93
                   const char *restrict format, va_list args)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  else
Packit Service 991b93
_GL_FUNCDECL_RPL (vfprintf, int,
Packit Service 991b93
                  (FILE *restrict fp,
Packit Service 991b93
                   const char *restrict format, va_list args)
Packit Service 991b93
                  _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
Packit Service 991b93
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
#  endif
Packit Service 991b93
_GL_CXXALIAS_RPL (vfprintf, int,
Packit Service 991b93
                  (FILE *restrict fp,
Packit Service 991b93
                   const char *restrict format, va_list args));
Packit aea12f
# else
Packit aea12f
/* Need to cast, because on Solaris, the third parameter is
Packit aea12f
                                                      __va_list args
Packit aea12f
   and GCC's fixincludes did not change this to __gnuc_va_list.  */
Packit aea12f
_GL_CXXALIAS_SYS_CAST (vfprintf, int,
Packit Service 991b93
                       (FILE *restrict fp,
Packit Service 991b93
                        const char *restrict format, va_list args));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (vfprintf);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
#if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
Packit aea12f
# if !GNULIB_overrides_vfprintf
Packit aea12f
#  undef vfprintf
Packit aea12f
# endif
Packit aea12f
/* Assume vfprintf is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module vfprintf-posix for portable "
Packit aea12f
                      "POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VFSCANF@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef vfscanf
Packit aea12f
#   define vfscanf rpl_vfscanf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (vfscanf, int,
Packit Service 991b93
                  (FILE *restrict stream,
Packit Service 991b93
                   const char *restrict format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (vfscanf, int,
Packit Service 991b93
                  (FILE *restrict stream,
Packit Service 991b93
                   const char *restrict format, va_list args));
Packit aea12f
# else
Packit aea12f
_GL_CXXALIAS_SYS (vfscanf, int,
Packit Service 991b93
                  (FILE *restrict stream,
Packit Service 991b93
                   const char *restrict format, va_list args));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (vfscanf);
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
Packit aea12f
# if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
Packit aea12f
     || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define vprintf rpl_vprintf
Packit aea12f
#  endif
Packit aea12f
#  define GNULIB_overrides_vprintf 1
Packit aea12f
#  if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
Packit Service 991b93
_GL_FUNCDECL_RPL (vprintf, int, (const char *restrict format, va_list args)
Packit aea12f
                                _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
Packit aea12f
                                _GL_ARG_NONNULL ((1)));
Packit aea12f
#  else
Packit Service 991b93
_GL_FUNCDECL_RPL (vprintf, int, (const char *restrict format, va_list args)
Packit aea12f
                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
Packit aea12f
                                _GL_ARG_NONNULL ((1)));
Packit aea12f
#  endif
Packit Service 991b93
_GL_CXXALIAS_RPL (vprintf, int, (const char *restrict format, va_list args));
Packit aea12f
# else
Packit aea12f
/* Need to cast, because on Solaris, the second parameter is
Packit aea12f
                                                          __va_list args
Packit aea12f
   and GCC's fixincludes did not change this to __gnuc_va_list.  */
Packit Service 991b93
_GL_CXXALIAS_SYS_CAST (vprintf, int,
Packit Service 991b93
                       (const char *restrict format, va_list args));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (vprintf);
Packit Service 991b93
# endif
Packit aea12f
#endif
Packit aea12f
#if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
Packit aea12f
# if !GNULIB_overrides_vprintf
Packit aea12f
#  undef vprintf
Packit aea12f
# endif
Packit aea12f
/* Assume vprintf is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module vprintf-posix for portable "
Packit aea12f
                 "POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VSCANF@
Packit aea12f
# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   undef vscanf
Packit aea12f
#   define vscanf rpl_vscanf
Packit aea12f
#  endif
Packit Service 991b93
_GL_FUNCDECL_RPL (vscanf, int, (const char *restrict format, va_list args)
Packit aea12f
                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
Packit aea12f
                               _GL_ARG_NONNULL ((1)));
Packit Service 991b93
_GL_CXXALIAS_RPL (vscanf, int, (const char *restrict format, va_list args));
Packit aea12f
# else
Packit Service 991b93
_GL_CXXALIAS_SYS (vscanf, int, (const char *restrict format, va_list args));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (vscanf);
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VSNPRINTF@
Packit aea12f
# if @REPLACE_VSNPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define vsnprintf rpl_vsnprintf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (vsnprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((3)));
Packit aea12f
_GL_CXXALIAS_RPL (vsnprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, va_list args));
Packit aea12f
# else
Packit aea12f
#  if !@HAVE_DECL_VSNPRINTF@
Packit aea12f
_GL_FUNCDECL_SYS (vsnprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((3)));
Packit aea12f
#  endif
Packit aea12f
_GL_CXXALIAS_SYS (vsnprintf, int,
Packit Service 991b93
                  (char *restrict str, size_t size,
Packit Service 991b93
                   const char *restrict format, va_list args));
Packit aea12f
# endif
Packit aea12f
_GL_CXXALIASWARN (vsnprintf);
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef vsnprintf
Packit aea12f
# if HAVE_RAW_DECL_VSNPRINTF
Packit aea12f
_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
Packit aea12f
                 "use gnulib module vsnprintf for portability");
Packit aea12f
# endif
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#if @GNULIB_VSPRINTF_POSIX@
Packit aea12f
# if @REPLACE_VSPRINTF@
Packit aea12f
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit aea12f
#   define vsprintf rpl_vsprintf
Packit aea12f
#  endif
Packit aea12f
_GL_FUNCDECL_RPL (vsprintf, int,
Packit Service 991b93
                  (char *restrict str,
Packit Service 991b93
                   const char *restrict format, va_list args)
Packit aea12f
                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
Packit aea12f
                  _GL_ARG_NONNULL ((1, 2)));
Packit aea12f
_GL_CXXALIAS_RPL (vsprintf, int,
Packit Service 991b93
                  (char *restrict str,
Packit Service 991b93
                   const char *restrict format, va_list args));
Packit aea12f
# else
Packit aea12f
/* Need to cast, because on Solaris, the third parameter is
Packit aea12f
                                                       __va_list args
Packit aea12f
   and GCC's fixincludes did not change this to __gnuc_va_list.  */
Packit aea12f
_GL_CXXALIAS_SYS_CAST (vsprintf, int,
Packit Service 991b93
                       (char *restrict str,
Packit Service 991b93
                        const char *restrict format, va_list args));
Packit aea12f
# endif
Packit Service 991b93
# if __GLIBC__ >= 2
Packit aea12f
_GL_CXXALIASWARN (vsprintf);
Packit Service 991b93
# endif
Packit aea12f
#elif defined GNULIB_POSIXCHECK
Packit aea12f
# undef vsprintf
Packit aea12f
/* Assume vsprintf is always declared.  */
Packit aea12f
_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
Packit aea12f
                 "use gnulib module vsprintf-posix for portable "
Packit aea12f
                      "POSIX compliance");
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#endif /* _@GUARD_PREFIX@_STDIO_H */
Packit aea12f
#endif /* _@GUARD_PREFIX@_STDIO_H */
Packit aea12f
#endif