105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A GNU-like <stdio.h>.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2004, 2007-2012 Free Software Foundation, Inc.
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software; you can redistribute it and/or modify
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3, or (at your option)
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   any later version.
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#pragma GCC system_header
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention:
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - Inside glibc header files.
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On OSF/1 5.1 we have a sequence of nested includes
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     In this situation, the functions are not yet declared, therefore we cannot
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     provide the C++ aliases.  */
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include_next <stdio.h>
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation convention.  */
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_STDIO_H
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_ALREADY_INCLUDING_STDIO_H
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include_next <stdio.h>
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef _GL_ALREADY_INCLUDING_STDIO_H
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_STDIO_H
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_STDIO_H
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_BEGIN
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_STDIO_INLINE
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_STDIO_INLINE _GL_INLINE
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get va_list.  Needed on many systems, including glibc 2.8.  */
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stdarg.h>
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stddef.h>
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get off_t and ssize_t.  Needed on many systems, including glibc 2.8
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and eglibc 2.11.2.
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   May also define off_t to a 64-bit type on native Windows.  */
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <sys/types.h>
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The __attribute__ feature is available in gcc versions 2.5 and later.
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The __-protected variants of the attributes 'format' and 'printf' are
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   gnulib and libintl do '#define printf __printf__' when they override
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the 'printf' function.  */
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ATTRIBUTE_FORMAT_PRINTF
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   indicates to GCC that the function takes a format string and arguments,
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   where the format string directives are the ones standardized by ISO C99
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and POSIX.  */
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that it indicates to GCC that the supported format string directives
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are the ones of the system printf(), rather than the ones standardized by
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   ISO C99 and POSIX.  */
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ATTRIBUTE_FORMAT_SCANF
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   indicates to GCC that the function takes a format string and arguments,
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   where the format string directives are the ones standardized by ISO C99
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and POSIX.  */
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that it indicates to GCC that the supported format string directives
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are the ones of the system scanf(), rather than the ones standardized by
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   ISO C99 and POSIX.  */
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Solaris 10 declares renameat in <unistd.h>, not in <stdio.h>.  */
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But in any case avoid namespace pollution on glibc systems.  */
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (0 || defined GNULIB_POSIXCHECK) && defined __sun \
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <unistd.h>
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_CXXDEFS_H
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXDEFS_H
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The three most frequent use cases of these macros are:
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a substitute for a function that is missing on some
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     platforms, but is declared and works fine on the platforms on which
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     it exists:
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if !@HAVE_FOO@
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on all platforms,
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some platforms:
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on some platforms
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some of them and
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     is additionally either missing or undeclared on some other platforms:
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang*/
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_EXTERN_C declaration;
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern "C"
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a replacement function, named rpl_func, with the given prototype,
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares the system function, named func, with the given prototype,
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype func parameters_and_attributes
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL (func, rettype, parameters);
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                \
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                         \
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters = ::rpl_func;          \
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                         \
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function rpl_func may have a slightly different
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declaration.  A cast is used to silence the "invalid conversion" error
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that would otherwise occur.  */
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                     \
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                              \
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters =                           \
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                              \
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS (func, rettype, parameters);
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to the system provided function func, if GNULIB_NAMESPACE
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is defined.
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* If we were to write
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       rettype (*const func) parameters = ::func;
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     better (remove an indirection through a 'static' pointer variable),
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but then the _GL_CXXALIASWARN macro below would cause a warning not only
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                     \
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                              \
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters = ::func;  \
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                              \
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function func may have a slightly different declaration.
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   A cast is used to silence the "invalid conversion" error that would
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   otherwise occur.  */
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                          \
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                   \
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =               \
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::func); \
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                   \
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function is picked among a set of overloaded functions,
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   namely the one with rettype2 and parameters2.  Two consecutive casts
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are used to silence the "cannot find a match" and "invalid conversion"
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errors that would otherwise occur.  */
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* The outer cast must be a reinterpret_cast.
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The inner cast: When the function is defined as a set of overloaded
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     functions, it works as a static_cast<>, choosing the designated variant.
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     When the function is defined as a single variant, it works as a
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                                \
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                                         \
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =                                     \
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(                               \
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (rettype2(*)parameters2)(::func));                                  \
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                                         \
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN (func);
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when ::func is used but not when
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   variants.  */
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN_1(func,namespace) \
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_2 (func, namespace)
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (func, \
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "The symbol ::" #func " refers to the system function. " \
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "Use " #namespace "::" #func " instead.")
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when the given overloaded variant of ::func
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is used but not when GNULIB_NAMESPACE::func is used.  */
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                        GNULIB_NAMESPACE)
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "The symbol ::" #func " refers to the system function. " \
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "Use " #namespace "::" #func " instead.")
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_CXXDEFS_H */
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here.  */
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that the values passed as arguments n, ..., m must be non-NULL pointers.
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_ARG_NONNULL
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params)
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function __attribute__ ((__warning__ (message)))
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like _GL_WARN_ON_USE (function, "string"), except that the function is
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared with the given prototype, consisting of return type, parameters,
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and attributes.
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not work in this case.  */
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE_CXX
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes \
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     __attribute__ ((__warning__ (msg)))
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_EXTERN_C declaration;
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_EXTERN_C
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __cplusplus
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern "C"
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Macros for stringification.  */
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_STDIO_STRINGIZE(token) #token
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dprintf rpl_dprintf
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((2)));
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((2)));
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dprintf);
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dprintf
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DPRINTF
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dprintf for portability");
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Close STREAM and its underlying file descriptor.  */
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fclose rpl_fclose
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fclose);
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fclose
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume fclose is always declared.  */
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fclose for portable POSIX compliance");
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fdopen
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fdopen rpl_fdopen
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((2)));
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fdopen);
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fdopen
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume fdopen is always declared.  */
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fdopen for portability");
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Flush all pending data on STREAM according to POSIX rules.  Both
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   output and seekable input streams are supported.
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Note! LOSS OF DATA can occur if fflush is applied on an input stream
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that is _not_seekable_ or on an update stream that is _not_seekable_
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and in which the most recent operation was input.  Seekability can
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   be tested with lseek(fileno(fp),0,SEEK_CUR).  */
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fflush rpl_fflush
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fflush);
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fflush
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume fflush is always declared.  */
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fflush for portable POSIX compliance");
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fgetc
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fgetc rpl_fgetc
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fgetc);
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fgets
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fgets rpl_fgets
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((1, 3)));
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fgets);
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fopen
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fopen rpl_fopen
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((1, 2)));
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fopen);
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fopen
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume fopen is always declared.  */
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fopen for portability");
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1 || 1
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (1 && 1) \
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || (1 && 0 && (0 || 0))
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fprintf rpl_fprintf
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_overrides_fprintf 1
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 1 || 1
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fprintf);
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1 && defined GNULIB_POSIXCHECK
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_overrides_fprintf
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef fprintf
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume fprintf is always declared.  */
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fprintf-posix for portable "
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "POSIX compliance");
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Discard all pending buffered I/O data on STREAM.
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   STREAM must not be wide-character oriented.
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   When discarding pending output, the file position is set back to where it
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   was before the write calls.  When discarding pending input, the file
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   position is advanced to match the end of the previously read input.
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful.  Upon error, return -1 and set errno.  */
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fpurge rpl_fpurge
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fpurge);
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fpurge
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FPURGE
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fpurge for portability");
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && (0 || 0)
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fputc
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fputc rpl_fputc
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fputc);
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && (0 || 0)
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fputs
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fputs rpl_fputs
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1, 2)));
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fputs);
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fread
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fread rpl_fread
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((4)));
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fread);
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef freopen
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define freopen rpl_freopen
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (freopen, FILE *,
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *filename, const char *mode, FILE *stream)
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 3)));
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (freopen, FILE *,
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *filename, const char *mode, FILE *stream));
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (freopen, FILE *,
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *filename, const char *mode, FILE *stream));
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (freopen);
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef freopen
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume freopen is always declared.  */
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (freopen,
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "freopen on native Windows platforms is not POSIX compliant - "
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module freopen for portability");
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fscanf
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fscanf rpl_fscanf
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1, 2)));
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fscanf);
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set up the following warnings, based on which modules are in use.
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU Coding Standards discourage the use of fseek, since it imposes
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   an arbitrary limitation on some 32-bit hosts.  Remember that the
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   fseek module depends on the fseeko module, so we only have three
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   cases to consider:
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   1. The developer is not using either module.  Issue a warning under
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_POSIXCHECK for both functions, to remind them that both
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   functions have bugs on some systems.  _GL_NO_LARGE_FILES has no
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   impact on this warning.
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   2. The developer is using both modules.  They may be unaware of the
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   arbitrary limitations of fseek, so issue a warning under
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_POSIXCHECK.  On the other hand, they may be using both
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   modules intentionally, so the developer can define
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_NO_LARGE_FILES in the compilation units where the use of fseek
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is safe, to silence the warning.
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   3. The developer is using the fseeko module, but not fseek.  Gnulib
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   guarantees that fseek will still work around platform bugs in that
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   case, but we presume that the developer is aware of the pitfalls of
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   fseek and was trying to avoid it, so issue a warning even when
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_POSIXCHECK is undefined.  Again, _GL_NO_LARGE_FILES can be
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   defined to silence the warning in particular compilation units.
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   fseek gets defined as a macro, it is recommended that the developer
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   uses the fseek module, even if he is not calling the fseek function.
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Most gnulib clients that perform stream operations should fall into
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   category 3.  */
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_FSEEK_WARN /* Category 2, above.  */
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef fseek
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fseek
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fseek rpl_fseek
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1)));
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fseek);
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !0 && !defined _GL_NO_LARGE_FILES
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_FSEEK_WARN /* Category 3, above.  */
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef fseek
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Provide an fseeko function that is aware of a preceding fflush(), and which
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   detects pipes.  */
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fseeko
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fseeko rpl_fseeko
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if ! 1
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fseeko);
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_FSEEK_WARN /* Category 1, above.  */
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fseek
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fseeko
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FSEEKO
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fseeko for portability");
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef _GL_FSEEK_WARN
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _GL_FSEEK_WARN
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here, either fseek is undefined (but C89 guarantees that it is
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared), or it is defined as rpl_fseek (declared above).  */
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "on 32-bit platforms - "
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use fseeko function for handling of large files");
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* ftell, ftello.  See the comments on fseek/fseeko.  */
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_FTELL_WARN /* Category 2, above.  */
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef ftell
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef ftell
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define ftell rpl_ftell
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (ftell);
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !0 && !defined _GL_NO_LARGE_FILES
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_FTELL_WARN /* Category 3, above.  */
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef ftell
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef ftello
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define ftello rpl_ftello
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if ! 1
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (ftello);
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_FTELL_WARN /* Category 1, above.  */
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef ftell
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef ftello
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FTELLO
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (ftello, "ftello is unportable - "
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module ftello for portability");
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef _GL_FTELL_WARN
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _GL_FTELL_WARN
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Here, either ftell is undefined (but C89 guarantees that it is
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared), or it is defined as rpl_ftell (declared above).  */
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "on 32-bit platforms - "
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use ftello function for handling of large files");
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && (0 || 0)
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fwrite
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fwrite rpl_fwrite
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fwrite, size_t,
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const void *ptr, size_t s, size_t n, FILE *stream)
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 4)));
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fwrite, size_t,
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const void *ptr, size_t s, size_t n, FILE *stream));
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fwrite, size_t,
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const void *ptr, size_t s, size_t n, FILE *stream));
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Work around glibc bug 11959
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   which sometimes causes an unwanted diagnostic for fwrite calls.
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This affects only function declaration attributes, so it's not
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   needed for C++.  */
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_STDIO_INLINE size_t _GL_ARG_NONNULL ((1, 4))
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  size_t r = fwrite (ptr, s, n, stream);
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  (void) r;
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return r;
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fwrite
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fwrite rpl_fwrite
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fwrite);
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getc
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getc rpl_fgetc
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getc);
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getchar
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getchar rpl_getchar
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getchar, int, (void));
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getchar, int, (void));
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getchar, int, (void));
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getchar);
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read input, up to (and including) the next occurrence of DELIMITER, from
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   STREAM, store it in *LINEPTR (and NUL-terminate it).
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   bytes of space.  It is realloc'd as necessary.
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the number of bytes read and stored at *LINEPTR (not including the
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NUL terminator), or -1 on error or EOF.  */
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getdelim
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getdelim rpl_getdelim
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getdelim, ssize_t,
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, int delimiter,
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   FILE *stream)
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2, 4)));
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getdelim, ssize_t,
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, int delimiter,
96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   FILE *stream));
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getdelim, ssize_t,
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, int delimiter,
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   FILE *stream)
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2, 4)));
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getdelim, ssize_t,
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, int delimiter,
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   FILE *stream));
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getdelim);
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getdelim
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETDELIM
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getdelim for portability");
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read a line, up to (and including) the next newline, from STREAM, store it
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   in *LINEPTR (and NUL-terminate it).
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   bytes of space.  It is realloc'd as necessary.
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the number of bytes read and stored at *LINEPTR (not including the
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NUL terminator), or -1 on error or EOF.  */
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getline
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getline rpl_getline
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getline, ssize_t,
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, FILE *stream)
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2, 3)));
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getline, ssize_t,
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, FILE *stream));
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getline, ssize_t,
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, FILE *stream)
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2, 3)));
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getline, ssize_t,
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **lineptr, size_t *linesize, FILE *stream));
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getline);
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getline
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETLINE
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getline, "getline is unportable - "
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getline for portability");
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* It is very rare that the developer ever has full control of stdin,
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   so any use of gets warrants an unconditional warning; besides, C11
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   removed it.  */
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef gets
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if HAVE_RAW_DECL_GETS
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1 || 0
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct obstack;
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Grow an obstack with formatted output.  Return the number of
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   bytes added to OBS.  No trailing nul byte is added, and the
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   object should be closed with obstack_finish before use.  Upon
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   memory allocation error, call obstack_alloc_failed_handler.  Upon
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   other error, return -1.  */
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define obstack_printf rpl_obstack_printf
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (obstack_printf, int,
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, ...)
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (obstack_printf, int,
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, ...));
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (obstack_printf, int,
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, ...)
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (obstack_printf, int,
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, ...));
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (obstack_printf);
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define obstack_vprintf rpl_obstack_vprintf
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (obstack_vprintf, int,
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, va_list args)
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (obstack_vprintf, int,
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, va_list args));
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (obstack_vprintf, int,
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, va_list args)
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (obstack_vprintf, int,
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (struct obstack *obs, const char *format, va_list args));
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (obstack_vprintf);
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pclose);
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pclose
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PCLOSE
108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pclose, "pclose is unportable - "
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pclose for more portability");
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Print a message to standard error, describing the value of ERRNO,
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (if STRING is not NULL and not empty) prefixed with STRING and ": ",
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and terminated with a newline.  */
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define perror rpl_perror
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (perror, void, (const char *string));
110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (perror, void, (const char *string));
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (perror, void, (const char *string));
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (perror);
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef perror
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume perror is always declared.  */
111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module perror for portability");
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef popen
111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define popen rpl_popen
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((1, 2)));
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((1, 2)));
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
112905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (popen);
113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef popen
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POPEN
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module popen or pipe for more portability");
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1 || 1
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (1 && 1) \
114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || (1 && 0 && (0 || 0))
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __GNUC__
114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Don't break __attribute__((format(printf,M,N))).  */
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define printf __printf__
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if 1 || 1
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL_1 (__printf__, int,
114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    (const char *format, ...)
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    __asm__ (""
115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    _GL_ARG_NONNULL ((1)));
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   else
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL_1 (__printf__, int,
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    (const char *format, ...)
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    __asm__ (""
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
115905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    _GL_ARG_NONNULL ((1)));
116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define printf rpl_printf
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
116705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (printf, int,
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *format, ...)
116905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1)));
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_overrides_printf 1
117405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
117505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
117705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (printf);
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1 && defined GNULIB_POSIXCHECK
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_overrides_printf
118105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef printf
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
118305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume printf is always declared.  */
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module printf-posix for portable "
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "POSIX compliance");
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && (0 || 0)
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef putc
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define putc rpl_fputc
119405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
119505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
119605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
119705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
119805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
119905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
120005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (putc);
120105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
120205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
120405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && (0 || 0)
120505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
120605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef putchar
120705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define putchar rpl_putchar
120805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
120905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (putchar, int, (int c));
121005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (putchar, int, (int c));
121105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
121205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (putchar, int, (int c));
121305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
121405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (putchar);
121505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
121805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && (0 || 0)
121905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
122005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef puts
122105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define puts rpl_puts
122205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
122305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
122405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (puts, int, (const char *string));
122505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (puts, int, (const char *string));
122705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
122805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (puts);
122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef remove
123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define remove rpl_remove
123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (remove, int, (const char *name));
123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (remove, int, (const char *name));
124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (remove);
124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef remove
124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume remove is always declared.  */
124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module remove for more portability");
124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef rename
125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define rename rpl_rename
125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
125605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (rename, int,
125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *old_filename, const char *new_filename)
125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (rename, int,
126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *old_filename, const char *new_filename));
126105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (rename, int,
126305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *old_filename, const char *new_filename));
126405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
126505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (rename);
126605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef rename
126805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume rename is always declared.  */
126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
127005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module rename for more portability");
127105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
127605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef renameat
127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define renameat rpl_renameat
127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (renameat, int,
128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, char const *file1, int fd2, char const *file2)
128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 4)));
128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (renameat, int,
128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, char const *file1, int fd2, char const *file2));
128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (renameat, int,
128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, char const *file1, int fd2, char const *file2)
128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 4)));
128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (renameat, int,
129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, char const *file1, int fd2, char const *file2));
129205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (renameat);
129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
129505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef renameat
129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_RENAMEAT
129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (renameat, "renameat is not portable - "
129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module renameat for portability");
129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
130005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
130105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __GNUC__
130505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    undef scanf
130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Don't break __attribute__((format(scanf,M,N))).  */
130805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define scanf __scanf__
130905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL_1 (__scanf__, int,
131105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    (const char *format, ...)
131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    __asm__ (""
131305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    _GL_ARG_NONNULL ((1)));
131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
131705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
131805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    undef scanf
132005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define scanf rpl_scanf
132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
132205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
132405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1)));
132505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (scanf);
133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define snprintf rpl_snprintf
133705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
133805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (snprintf, int,
133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, ...)
134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
134105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((3)));
134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (snprintf, int,
134305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, ...));
134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (snprintf, int,
134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, ...)
134805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((3)));
135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (snprintf, int,
135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, ...));
135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
135405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (snprintf);
135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef snprintf
135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SNPRINTF
135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module snprintf for portability");
136005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
136105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
136205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Some people would argue that all sprintf uses should be warned about
136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (for example, OpenBSD issues a link warning for it),
136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   since it can cause security holes due to buffer overruns.
136605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   However, we believe that sprintf can be used safely, and is more
136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   efficient than snprintf in those safe cases; and as proof of our
136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   belief, we use sprintf in several gnulib modules.  So this header
136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   intentionally avoids adding a warning to sprintf except when
137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_POSIXCHECK is defined.  */
137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
137305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
137405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
137505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sprintf rpl_sprintf
137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
138205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sprintf);
138505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
138605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sprintf
138705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume sprintf is always declared.  */
138805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
138905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module sprintf-posix for portable "
139005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "POSIX compliance");
139105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
139505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
139605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define tmpfile rpl_tmpfile
139705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
139805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
139905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
140105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
140205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
140305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (tmpfile);
140405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef tmpfile
140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_TMPFILE
140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module tmpfile for portability");
140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
141005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
141105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Write formatted output to a string dynamically allocated with malloc().
141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If the memory allocation succeeds, store the address of the string in
141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   *RESULT and return the number of resulting bytes, excluding the trailing
141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NUL.  Upon memory allocation error, or some other error, return -1.  */
141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
141805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define asprintf rpl_asprintf
142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
142105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (asprintf, int,
142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, ...)
142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (asprintf, int,
142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, ...));
142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (asprintf, int,
143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, ...)
143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (asprintf, int,
143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, ...));
143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (asprintf);
143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vasprintf rpl_vasprintf
144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vasprintf, int,
144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, va_list args)
144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vasprintf, int,
144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, va_list args));
144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (vasprintf, int,
145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, va_list args)
145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (vasprintf, int,
145605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char **result, const char *format, va_list args));
145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vasprintf);
145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
146305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vdprintf rpl_vdprintf
146505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
147105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris, the third parameter will likely be
147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                    __va_list args.  */
147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (vdprintf, int,
147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       (int fd, const char *format, va_list args));
148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vdprintf);
148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef vdprintf
148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_VDPRINTF
148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module vdprintf for portability");
148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1 || 1
149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (1 && 1) \
149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || (1 && 0 && (0 || 0))
149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vfprintf rpl_vfprintf
149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_overrides_vfprintf 1
149705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 1
149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((1, 2)));
150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((1, 2)));
150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris, the third parameter is
150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                      __va_list args
151005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and GCC's fixincludes did not change this to __gnuc_va_list.  */
151105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (vfprintf, int,
151205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       (FILE *fp, const char *format, va_list args));
151305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vfprintf);
151505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1 && defined GNULIB_POSIXCHECK
151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_overrides_vfprintf
151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef vfprintf
151905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume vfprintf is always declared.  */
152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module vfprintf-posix for portable "
152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                      "POSIX compliance");
152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef vfscanf
153005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vfscanf rpl_vfscanf
153105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
153205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vfscanf, int,
153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (FILE *stream, const char *format, va_list args)
153405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
153605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vfscanf, int,
153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (FILE *stream, const char *format, va_list args));
153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (vfscanf, int,
154005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (FILE *stream, const char *format, va_list args));
154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
154205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vfscanf);
154305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
154405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 || 1
154605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (0 && 0) \
154705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || (1 && 0 && (0 || 0))
154805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
154905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vprintf rpl_vprintf
155005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_overrides_vprintf 1
155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0 || 1
155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
155405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1)));
155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1)));
156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
156205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris, the second parameter is
156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                          __va_list args
156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and GCC's fixincludes did not change this to __gnuc_va_list.  */
156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
156805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vprintf);
156905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
157005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !0 && defined GNULIB_POSIXCHECK
157105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_overrides_vprintf
157205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef vprintf
157305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
157405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume vprintf is always declared.  */
157505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
157605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module vprintf-posix for portable "
157705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "POSIX compliance");
157805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
157905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
158105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 && 0
158205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
158305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef vscanf
158405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vscanf rpl_vscanf
158505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
158605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
158705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
158805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
158905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
159005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
159105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
159205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
159305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vscanf);
159405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
159505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
159705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
159805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
159905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vsnprintf rpl_vsnprintf
160005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
160105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vsnprintf, int,
160205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, va_list args)
160305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
160405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((3)));
160505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vsnprintf, int,
160605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, va_list args));
160705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
160805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
160905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (vsnprintf, int,
161005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, va_list args)
161105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
161205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((3)));
161305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
161405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (vsnprintf, int,
161505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, size_t size, const char *format, va_list args));
161605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
161705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vsnprintf);
161805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef vsnprintf
162005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_VSNPRINTF
162105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
162205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module vsnprintf for portability");
162305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
162405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
162505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
162705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
162805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
162905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define vsprintf rpl_vsprintf
163005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
163105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (vsprintf, int,
163205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, const char *format, va_list args)
163305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
163405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
163505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (vsprintf, int,
163605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char *str, const char *format, va_list args));
163705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
163805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris, the third parameter is
163905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                       __va_list args
164005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and GCC's fixincludes did not change this to __gnuc_va_list.  */
164105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (vsprintf, int,
164205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       (char *str, const char *format, va_list args));
164305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
164405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (vsprintf);
164505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
164605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef vsprintf
164705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume vsprintf is always declared.  */
164805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
164905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module vsprintf-posix for portable "
165005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                      "POSIX compliance");
165105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
165205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_END
165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_STDIO_H */
165605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_STDIO_H */
165705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
1658