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