Blame lib/stdio.in.h

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