1*820c1a8dSHiroo HAYASHI /* A GNU-like <stdlib.h>. 2*820c1a8dSHiroo HAYASHI 3*820c1a8dSHiroo HAYASHI Copyright (C) 1995, 2001-2004, 2006-2021 Free Software Foundation, Inc. 4*820c1a8dSHiroo HAYASHI 5*820c1a8dSHiroo HAYASHI This file is free software: you can redistribute it and/or modify 6*820c1a8dSHiroo HAYASHI it under the terms of the GNU Lesser General Public License as 7*820c1a8dSHiroo HAYASHI published by the Free Software Foundation; either version 2.1 of the 8*820c1a8dSHiroo HAYASHI License, or (at your option) any later version. 9*820c1a8dSHiroo HAYASHI 10*820c1a8dSHiroo HAYASHI This file is distributed in the hope that it will be useful, 11*820c1a8dSHiroo HAYASHI but WITHOUT ANY WARRANTY; without even the implied warranty of 12*820c1a8dSHiroo HAYASHI MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*820c1a8dSHiroo HAYASHI GNU Lesser General Public License for more details. 14*820c1a8dSHiroo HAYASHI 15*820c1a8dSHiroo HAYASHI You should have received a copy of the GNU Lesser General Public License 16*820c1a8dSHiroo HAYASHI along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17*820c1a8dSHiroo HAYASHI 18*820c1a8dSHiroo HAYASHI #if __GNUC__ >= 3 19*820c1a8dSHiroo HAYASHI @PRAGMA_SYSTEM_HEADER@ 20*820c1a8dSHiroo HAYASHI #endif 21*820c1a8dSHiroo HAYASHI @PRAGMA_COLUMNS@ 22*820c1a8dSHiroo HAYASHI 23*820c1a8dSHiroo HAYASHI #if defined __need_system_stdlib_h || defined __need_malloc_and_calloc 24*820c1a8dSHiroo HAYASHI /* Special invocation conventions inside some gnulib header files, 25*820c1a8dSHiroo HAYASHI and inside some glibc header files, respectively. */ 26*820c1a8dSHiroo HAYASHI 27*820c1a8dSHiroo HAYASHI #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ 28*820c1a8dSHiroo HAYASHI 29*820c1a8dSHiroo HAYASHI #else 30*820c1a8dSHiroo HAYASHI /* Normal invocation convention. */ 31*820c1a8dSHiroo HAYASHI 32*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_STDLIB_H 33*820c1a8dSHiroo HAYASHI 34*820c1a8dSHiroo HAYASHI /* The include_next requires a split double-inclusion guard. */ 35*820c1a8dSHiroo HAYASHI #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ 36*820c1a8dSHiroo HAYASHI 37*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_STDLIB_H 38*820c1a8dSHiroo HAYASHI #define _@GUARD_PREFIX@_STDLIB_H 39*820c1a8dSHiroo HAYASHI 40*820c1a8dSHiroo HAYASHI /* NetBSD 5.0 mis-defines NULL. */ 41*820c1a8dSHiroo HAYASHI #include <stddef.h> 42*820c1a8dSHiroo HAYASHI 43*820c1a8dSHiroo HAYASHI /* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>. */ 44*820c1a8dSHiroo HAYASHI #if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS 45*820c1a8dSHiroo HAYASHI # include <sys/wait.h> 46*820c1a8dSHiroo HAYASHI #endif 47*820c1a8dSHiroo HAYASHI 48*820c1a8dSHiroo HAYASHI /* Solaris declares getloadavg() in <sys/loadavg.h>. */ 49*820c1a8dSHiroo HAYASHI #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@ 50*820c1a8dSHiroo HAYASHI /* OpenIndiana has a bug: <sys/time.h> must be included before 51*820c1a8dSHiroo HAYASHI <sys/loadavg.h>. */ 52*820c1a8dSHiroo HAYASHI # include <sys/time.h> 53*820c1a8dSHiroo HAYASHI # include <sys/loadavg.h> 54*820c1a8dSHiroo HAYASHI #endif 55*820c1a8dSHiroo HAYASHI 56*820c1a8dSHiroo HAYASHI /* Native Windows platforms declare _mktemp() in <io.h>. */ 57*820c1a8dSHiroo HAYASHI #if defined _WIN32 && !defined __CYGWIN__ 58*820c1a8dSHiroo HAYASHI # include <io.h> 59*820c1a8dSHiroo HAYASHI #endif 60*820c1a8dSHiroo HAYASHI 61*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM_R@ 62*820c1a8dSHiroo HAYASHI 63*820c1a8dSHiroo HAYASHI /* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included 64*820c1a8dSHiroo HAYASHI from <stdlib.h> if _REENTRANT is defined. Include it whenever we need 65*820c1a8dSHiroo HAYASHI 'struct random_data'. */ 66*820c1a8dSHiroo HAYASHI # if @HAVE_RANDOM_H@ 67*820c1a8dSHiroo HAYASHI # include <random.h> 68*820c1a8dSHiroo HAYASHI # endif 69*820c1a8dSHiroo HAYASHI 70*820c1a8dSHiroo HAYASHI # if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@ 71*820c1a8dSHiroo HAYASHI # include <stdint.h> 72*820c1a8dSHiroo HAYASHI # endif 73*820c1a8dSHiroo HAYASHI 74*820c1a8dSHiroo HAYASHI # if !@HAVE_STRUCT_RANDOM_DATA@ 75*820c1a8dSHiroo HAYASHI /* Define 'struct random_data'. 76*820c1a8dSHiroo HAYASHI But allow multiple gnulib generated <stdlib.h> replacements to coexist. */ 77*820c1a8dSHiroo HAYASHI # if !GNULIB_defined_struct_random_data 78*820c1a8dSHiroo HAYASHI struct random_data 79*820c1a8dSHiroo HAYASHI { 80*820c1a8dSHiroo HAYASHI int32_t *fptr; /* Front pointer. */ 81*820c1a8dSHiroo HAYASHI int32_t *rptr; /* Rear pointer. */ 82*820c1a8dSHiroo HAYASHI int32_t *state; /* Array of state values. */ 83*820c1a8dSHiroo HAYASHI int rand_type; /* Type of random number generator. */ 84*820c1a8dSHiroo HAYASHI int rand_deg; /* Degree of random number generator. */ 85*820c1a8dSHiroo HAYASHI int rand_sep; /* Distance between front and rear. */ 86*820c1a8dSHiroo HAYASHI int32_t *end_ptr; /* Pointer behind state table. */ 87*820c1a8dSHiroo HAYASHI }; 88*820c1a8dSHiroo HAYASHI # define GNULIB_defined_struct_random_data 1 89*820c1a8dSHiroo HAYASHI # endif 90*820c1a8dSHiroo HAYASHI # endif 91*820c1a8dSHiroo HAYASHI #endif 92*820c1a8dSHiroo HAYASHI 93*820c1a8dSHiroo HAYASHI #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_MKOSTEMP@ || @GNULIB_MKOSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !(defined _WIN32 && ! defined __CYGWIN__) 94*820c1a8dSHiroo HAYASHI /* On Mac OS X 10.3, only <unistd.h> declares mkstemp. */ 95*820c1a8dSHiroo HAYASHI /* On Mac OS X 10.5, only <unistd.h> declares mkstemps. */ 96*820c1a8dSHiroo HAYASHI /* On Mac OS X 10.13, only <unistd.h> declares mkostemp and mkostemps. */ 97*820c1a8dSHiroo HAYASHI /* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */ 98*820c1a8dSHiroo HAYASHI /* But avoid namespace pollution on glibc systems and native Windows. */ 99*820c1a8dSHiroo HAYASHI # include <unistd.h> 100*820c1a8dSHiroo HAYASHI #endif 101*820c1a8dSHiroo HAYASHI 102*820c1a8dSHiroo HAYASHI /* The __attribute__ feature is available in gcc versions 2.5 and later. 103*820c1a8dSHiroo HAYASHI The attribute __pure__ was added in gcc 2.96. */ 104*820c1a8dSHiroo HAYASHI #ifndef _GL_ATTRIBUTE_PURE 105*820c1a8dSHiroo HAYASHI # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__ 106*820c1a8dSHiroo HAYASHI # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) 107*820c1a8dSHiroo HAYASHI # else 108*820c1a8dSHiroo HAYASHI # define _GL_ATTRIBUTE_PURE /* empty */ 109*820c1a8dSHiroo HAYASHI # endif 110*820c1a8dSHiroo HAYASHI #endif 111*820c1a8dSHiroo HAYASHI 112*820c1a8dSHiroo HAYASHI /* The definition of _Noreturn is copied here. */ 113*820c1a8dSHiroo HAYASHI 114*820c1a8dSHiroo HAYASHI /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 115*820c1a8dSHiroo HAYASHI 116*820c1a8dSHiroo HAYASHI /* The definition of _GL_ARG_NONNULL is copied here. */ 117*820c1a8dSHiroo HAYASHI 118*820c1a8dSHiroo HAYASHI /* The definition of _GL_WARN_ON_USE is copied here. */ 119*820c1a8dSHiroo HAYASHI 120*820c1a8dSHiroo HAYASHI 121*820c1a8dSHiroo HAYASHI /* Some systems do not define EXIT_*, despite otherwise supporting C89. */ 122*820c1a8dSHiroo HAYASHI #ifndef EXIT_SUCCESS 123*820c1a8dSHiroo HAYASHI # define EXIT_SUCCESS 0 124*820c1a8dSHiroo HAYASHI #endif 125*820c1a8dSHiroo HAYASHI /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere 126*820c1a8dSHiroo HAYASHI with proper operation of xargs. */ 127*820c1a8dSHiroo HAYASHI #ifndef EXIT_FAILURE 128*820c1a8dSHiroo HAYASHI # define EXIT_FAILURE 1 129*820c1a8dSHiroo HAYASHI #elif EXIT_FAILURE != 1 130*820c1a8dSHiroo HAYASHI # undef EXIT_FAILURE 131*820c1a8dSHiroo HAYASHI # define EXIT_FAILURE 1 132*820c1a8dSHiroo HAYASHI #endif 133*820c1a8dSHiroo HAYASHI 134*820c1a8dSHiroo HAYASHI 135*820c1a8dSHiroo HAYASHI #if @GNULIB__EXIT@ 136*820c1a8dSHiroo HAYASHI /* Terminate the current process with the given return code, without running 137*820c1a8dSHiroo HAYASHI the 'atexit' handlers. */ 138*820c1a8dSHiroo HAYASHI # if !@HAVE__EXIT@ 139*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); 140*820c1a8dSHiroo HAYASHI # endif 141*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (_Exit, void, (int status)); 142*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (_Exit); 143*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 144*820c1a8dSHiroo HAYASHI # undef _Exit 145*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL__EXIT 146*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (_Exit, "_Exit is unportable - " 147*820c1a8dSHiroo HAYASHI "use gnulib module _Exit for portability"); 148*820c1a8dSHiroo HAYASHI # endif 149*820c1a8dSHiroo HAYASHI #endif 150*820c1a8dSHiroo HAYASHI 151*820c1a8dSHiroo HAYASHI 152*820c1a8dSHiroo HAYASHI /* Allocate memory with indefinite extent and specified alignment. */ 153*820c1a8dSHiroo HAYASHI #if @GNULIB_ALIGNED_ALLOC@ 154*820c1a8dSHiroo HAYASHI # if @REPLACE_ALIGNED_ALLOC@ 155*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 156*820c1a8dSHiroo HAYASHI # undef aligned_alloc 157*820c1a8dSHiroo HAYASHI # define aligned_alloc rpl_aligned_alloc 158*820c1a8dSHiroo HAYASHI # endif 159*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (aligned_alloc, void *, (size_t alignment, size_t size)); 160*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (aligned_alloc, void *, (size_t alignment, size_t size)); 161*820c1a8dSHiroo HAYASHI # else 162*820c1a8dSHiroo HAYASHI # if @HAVE_ALIGNED_ALLOC@ 163*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (aligned_alloc, void *, (size_t alignment, size_t size)); 164*820c1a8dSHiroo HAYASHI # endif 165*820c1a8dSHiroo HAYASHI # endif 166*820c1a8dSHiroo HAYASHI # if @HAVE_ALIGNED_ALLOC@ 167*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (aligned_alloc); 168*820c1a8dSHiroo HAYASHI # endif 169*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 170*820c1a8dSHiroo HAYASHI # undef aligned_alloc 171*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_ALIGNED_ALLOC 172*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (aligned_alloc, "aligned_alloc is not portable - " 173*820c1a8dSHiroo HAYASHI "use gnulib module aligned_alloc for portability"); 174*820c1a8dSHiroo HAYASHI # endif 175*820c1a8dSHiroo HAYASHI #endif 176*820c1a8dSHiroo HAYASHI 177*820c1a8dSHiroo HAYASHI #if @GNULIB_ATOLL@ 178*820c1a8dSHiroo HAYASHI /* Parse a signed decimal integer. 179*820c1a8dSHiroo HAYASHI Returns the value of the integer. Errors are not detected. */ 180*820c1a8dSHiroo HAYASHI # if !@HAVE_ATOLL@ 181*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (atoll, long long, (const char *string) 182*820c1a8dSHiroo HAYASHI _GL_ATTRIBUTE_PURE 183*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 184*820c1a8dSHiroo HAYASHI # endif 185*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (atoll, long long, (const char *string)); 186*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (atoll); 187*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 188*820c1a8dSHiroo HAYASHI # undef atoll 189*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_ATOLL 190*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (atoll, "atoll is unportable - " 191*820c1a8dSHiroo HAYASHI "use gnulib module atoll for portability"); 192*820c1a8dSHiroo HAYASHI # endif 193*820c1a8dSHiroo HAYASHI #endif 194*820c1a8dSHiroo HAYASHI 195*820c1a8dSHiroo HAYASHI #if @GNULIB_CALLOC_POSIX@ 196*820c1a8dSHiroo HAYASHI # if @REPLACE_CALLOC@ 197*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 198*820c1a8dSHiroo HAYASHI # undef calloc 199*820c1a8dSHiroo HAYASHI # define calloc rpl_calloc 200*820c1a8dSHiroo HAYASHI # endif 201*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); 202*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); 203*820c1a8dSHiroo HAYASHI # else 204*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); 205*820c1a8dSHiroo HAYASHI # endif 206*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 207*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (calloc); 208*820c1a8dSHiroo HAYASHI # endif 209*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 210*820c1a8dSHiroo HAYASHI # undef calloc 211*820c1a8dSHiroo HAYASHI /* Assume calloc is always declared. */ 212*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " 213*820c1a8dSHiroo HAYASHI "use gnulib module calloc-posix for portability"); 214*820c1a8dSHiroo HAYASHI #endif 215*820c1a8dSHiroo HAYASHI 216*820c1a8dSHiroo HAYASHI #if @GNULIB_CANONICALIZE_FILE_NAME@ 217*820c1a8dSHiroo HAYASHI # if @REPLACE_CANONICALIZE_FILE_NAME@ 218*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 219*820c1a8dSHiroo HAYASHI # define canonicalize_file_name rpl_canonicalize_file_name 220*820c1a8dSHiroo HAYASHI # endif 221*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) 222*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 223*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); 224*820c1a8dSHiroo HAYASHI # else 225*820c1a8dSHiroo HAYASHI # if !@HAVE_CANONICALIZE_FILE_NAME@ 226*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) 227*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 228*820c1a8dSHiroo HAYASHI # endif 229*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); 230*820c1a8dSHiroo HAYASHI # endif 231*820c1a8dSHiroo HAYASHI # ifndef GNULIB_defined_canonicalize_file_name 232*820c1a8dSHiroo HAYASHI # define GNULIB_defined_canonicalize_file_name \ 233*820c1a8dSHiroo HAYASHI (!@HAVE_CANONICALIZE_FILE_NAME@ || @REPLACE_CANONICALIZE_FILE_NAME@) 234*820c1a8dSHiroo HAYASHI # endif 235*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (canonicalize_file_name); 236*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 237*820c1a8dSHiroo HAYASHI # undef canonicalize_file_name 238*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME 239*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (canonicalize_file_name, 240*820c1a8dSHiroo HAYASHI "canonicalize_file_name is unportable - " 241*820c1a8dSHiroo HAYASHI "use gnulib module canonicalize-lgpl for portability"); 242*820c1a8dSHiroo HAYASHI # endif 243*820c1a8dSHiroo HAYASHI #endif 244*820c1a8dSHiroo HAYASHI 245*820c1a8dSHiroo HAYASHI #if @GNULIB_MDA_ECVT@ 246*820c1a8dSHiroo HAYASHI /* On native Windows, map 'ecvt' to '_ecvt', so that -loldnames is not 247*820c1a8dSHiroo HAYASHI required. In C++ with GNULIB_NAMESPACE, avoid differences between 248*820c1a8dSHiroo HAYASHI platforms by defining GNULIB_NAMESPACE::ecvt on all platforms that have 249*820c1a8dSHiroo HAYASHI it. */ 250*820c1a8dSHiroo HAYASHI # if defined _WIN32 && !defined __CYGWIN__ 251*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 252*820c1a8dSHiroo HAYASHI # undef ecvt 253*820c1a8dSHiroo HAYASHI # define ecvt _ecvt 254*820c1a8dSHiroo HAYASHI # endif 255*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_MDA (ecvt, char *, 256*820c1a8dSHiroo HAYASHI (double number, int ndigits, int *decptp, int *signp)); 257*820c1a8dSHiroo HAYASHI # else 258*820c1a8dSHiroo HAYASHI # if @HAVE_DECL_ECVT@ 259*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (ecvt, char *, 260*820c1a8dSHiroo HAYASHI (double number, int ndigits, int *decptp, int *signp)); 261*820c1a8dSHiroo HAYASHI # endif 262*820c1a8dSHiroo HAYASHI # endif 263*820c1a8dSHiroo HAYASHI # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_ECVT@ 264*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (ecvt); 265*820c1a8dSHiroo HAYASHI # endif 266*820c1a8dSHiroo HAYASHI #endif 267*820c1a8dSHiroo HAYASHI 268*820c1a8dSHiroo HAYASHI #if @GNULIB_MDA_FCVT@ 269*820c1a8dSHiroo HAYASHI /* On native Windows, map 'fcvt' to '_fcvt', so that -loldnames is not 270*820c1a8dSHiroo HAYASHI required. In C++ with GNULIB_NAMESPACE, avoid differences between 271*820c1a8dSHiroo HAYASHI platforms by defining GNULIB_NAMESPACE::fcvt on all platforms that have 272*820c1a8dSHiroo HAYASHI it. */ 273*820c1a8dSHiroo HAYASHI # if defined _WIN32 && !defined __CYGWIN__ 274*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 275*820c1a8dSHiroo HAYASHI # undef fcvt 276*820c1a8dSHiroo HAYASHI # define fcvt _fcvt 277*820c1a8dSHiroo HAYASHI # endif 278*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_MDA (fcvt, char *, 279*820c1a8dSHiroo HAYASHI (double number, int ndigits, int *decptp, int *signp)); 280*820c1a8dSHiroo HAYASHI # else 281*820c1a8dSHiroo HAYASHI # if @HAVE_DECL_FCVT@ 282*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (fcvt, char *, 283*820c1a8dSHiroo HAYASHI (double number, int ndigits, int *decptp, int *signp)); 284*820c1a8dSHiroo HAYASHI # endif 285*820c1a8dSHiroo HAYASHI # endif 286*820c1a8dSHiroo HAYASHI # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_FCVT@ 287*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (fcvt); 288*820c1a8dSHiroo HAYASHI # endif 289*820c1a8dSHiroo HAYASHI #endif 290*820c1a8dSHiroo HAYASHI 291*820c1a8dSHiroo HAYASHI #if @GNULIB_FREE_POSIX@ 292*820c1a8dSHiroo HAYASHI # if @REPLACE_FREE@ 293*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 294*820c1a8dSHiroo HAYASHI # undef free 295*820c1a8dSHiroo HAYASHI # define free rpl_free 296*820c1a8dSHiroo HAYASHI # endif 297*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (free, void, (void *ptr)); 298*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (free, void, (void *ptr)); 299*820c1a8dSHiroo HAYASHI # else 300*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (free, void, (void *ptr)); 301*820c1a8dSHiroo HAYASHI # endif 302*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 303*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (free); 304*820c1a8dSHiroo HAYASHI # endif 305*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 306*820c1a8dSHiroo HAYASHI # undef free 307*820c1a8dSHiroo HAYASHI /* Assume free is always declared. */ 308*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (free, "free is not future POSIX compliant everywhere - " 309*820c1a8dSHiroo HAYASHI "use gnulib module free for portability"); 310*820c1a8dSHiroo HAYASHI #endif 311*820c1a8dSHiroo HAYASHI 312*820c1a8dSHiroo HAYASHI #if @GNULIB_MDA_GCVT@ 313*820c1a8dSHiroo HAYASHI /* On native Windows, map 'gcvt' to '_gcvt', so that -loldnames is not 314*820c1a8dSHiroo HAYASHI required. In C++ with GNULIB_NAMESPACE, avoid differences between 315*820c1a8dSHiroo HAYASHI platforms by defining GNULIB_NAMESPACE::gcvt on all platforms that have 316*820c1a8dSHiroo HAYASHI it. */ 317*820c1a8dSHiroo HAYASHI # if defined _WIN32 && !defined __CYGWIN__ 318*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 319*820c1a8dSHiroo HAYASHI # undef gcvt 320*820c1a8dSHiroo HAYASHI # define gcvt _gcvt 321*820c1a8dSHiroo HAYASHI # endif 322*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_MDA (gcvt, char *, (double number, int ndigits, char *buf)); 323*820c1a8dSHiroo HAYASHI # else 324*820c1a8dSHiroo HAYASHI # if @HAVE_DECL_GCVT@ 325*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (gcvt, char *, (double number, int ndigits, char *buf)); 326*820c1a8dSHiroo HAYASHI # endif 327*820c1a8dSHiroo HAYASHI # endif 328*820c1a8dSHiroo HAYASHI # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_GCVT@ 329*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (gcvt); 330*820c1a8dSHiroo HAYASHI # endif 331*820c1a8dSHiroo HAYASHI #endif 332*820c1a8dSHiroo HAYASHI 333*820c1a8dSHiroo HAYASHI #if @GNULIB_GETLOADAVG@ 334*820c1a8dSHiroo HAYASHI /* Store max(NELEM,3) load average numbers in LOADAVG[]. 335*820c1a8dSHiroo HAYASHI The three numbers are the load average of the last 1 minute, the last 5 336*820c1a8dSHiroo HAYASHI minutes, and the last 15 minutes, respectively. 337*820c1a8dSHiroo HAYASHI LOADAVG is an array of NELEM numbers. */ 338*820c1a8dSHiroo HAYASHI # if !@HAVE_DECL_GETLOADAVG@ 339*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) 340*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 341*820c1a8dSHiroo HAYASHI # endif 342*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); 343*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (getloadavg); 344*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 345*820c1a8dSHiroo HAYASHI # undef getloadavg 346*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_GETLOADAVG 347*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " 348*820c1a8dSHiroo HAYASHI "use gnulib module getloadavg for portability"); 349*820c1a8dSHiroo HAYASHI # endif 350*820c1a8dSHiroo HAYASHI #endif 351*820c1a8dSHiroo HAYASHI 352*820c1a8dSHiroo HAYASHI #if @GNULIB_GETSUBOPT@ 353*820c1a8dSHiroo HAYASHI /* Assuming *OPTIONP is a comma separated list of elements of the form 354*820c1a8dSHiroo HAYASHI "token" or "token=value", getsubopt parses the first of these elements. 355*820c1a8dSHiroo HAYASHI If the first element refers to a "token" that is member of the given 356*820c1a8dSHiroo HAYASHI NULL-terminated array of tokens: 357*820c1a8dSHiroo HAYASHI - It replaces the comma with a NUL byte, updates *OPTIONP to point past 358*820c1a8dSHiroo HAYASHI the first option and the comma, sets *VALUEP to the value of the 359*820c1a8dSHiroo HAYASHI element (or NULL if it doesn't contain an "=" sign), 360*820c1a8dSHiroo HAYASHI - It returns the index of the "token" in the given array of tokens. 361*820c1a8dSHiroo HAYASHI Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. 362*820c1a8dSHiroo HAYASHI For more details see the POSIX specification. 363*820c1a8dSHiroo HAYASHI https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */ 364*820c1a8dSHiroo HAYASHI # if !@HAVE_GETSUBOPT@ 365*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (getsubopt, int, 366*820c1a8dSHiroo HAYASHI (char **optionp, char *const *tokens, char **valuep) 367*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1, 2, 3))); 368*820c1a8dSHiroo HAYASHI # endif 369*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (getsubopt, int, 370*820c1a8dSHiroo HAYASHI (char **optionp, char *const *tokens, char **valuep)); 371*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (getsubopt); 372*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 373*820c1a8dSHiroo HAYASHI # undef getsubopt 374*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_GETSUBOPT 375*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " 376*820c1a8dSHiroo HAYASHI "use gnulib module getsubopt for portability"); 377*820c1a8dSHiroo HAYASHI # endif 378*820c1a8dSHiroo HAYASHI #endif 379*820c1a8dSHiroo HAYASHI 380*820c1a8dSHiroo HAYASHI #if @GNULIB_GRANTPT@ 381*820c1a8dSHiroo HAYASHI /* Change the ownership and access permission of the slave side of the 382*820c1a8dSHiroo HAYASHI pseudo-terminal whose master side is specified by FD. */ 383*820c1a8dSHiroo HAYASHI # if !@HAVE_GRANTPT@ 384*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (grantpt, int, (int fd)); 385*820c1a8dSHiroo HAYASHI # endif 386*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (grantpt, int, (int fd)); 387*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (grantpt); 388*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 389*820c1a8dSHiroo HAYASHI # undef grantpt 390*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_GRANTPT 391*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (grantpt, "grantpt is not portable - " 392*820c1a8dSHiroo HAYASHI "use gnulib module grantpt for portability"); 393*820c1a8dSHiroo HAYASHI # endif 394*820c1a8dSHiroo HAYASHI #endif 395*820c1a8dSHiroo HAYASHI 396*820c1a8dSHiroo HAYASHI /* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not 397*820c1a8dSHiroo HAYASHI rely on GNU or POSIX semantics for malloc and realloc (for example, 398*820c1a8dSHiroo HAYASHI by never specifying a zero size), so it does not need malloc or 399*820c1a8dSHiroo HAYASHI realloc to be redefined. */ 400*820c1a8dSHiroo HAYASHI #if @GNULIB_MALLOC_POSIX@ 401*820c1a8dSHiroo HAYASHI # if @REPLACE_MALLOC@ 402*820c1a8dSHiroo HAYASHI # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ 403*820c1a8dSHiroo HAYASHI || _GL_USE_STDLIB_ALLOC) 404*820c1a8dSHiroo HAYASHI # undef malloc 405*820c1a8dSHiroo HAYASHI # define malloc rpl_malloc 406*820c1a8dSHiroo HAYASHI # endif 407*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (malloc, void *, (size_t size)); 408*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (malloc, void *, (size_t size)); 409*820c1a8dSHiroo HAYASHI # else 410*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (malloc, void *, (size_t size)); 411*820c1a8dSHiroo HAYASHI # endif 412*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 413*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (malloc); 414*820c1a8dSHiroo HAYASHI # endif 415*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC 416*820c1a8dSHiroo HAYASHI # undef malloc 417*820c1a8dSHiroo HAYASHI /* Assume malloc is always declared. */ 418*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " 419*820c1a8dSHiroo HAYASHI "use gnulib module malloc-posix for portability"); 420*820c1a8dSHiroo HAYASHI #endif 421*820c1a8dSHiroo HAYASHI 422*820c1a8dSHiroo HAYASHI /* Convert a multibyte character to a wide character. */ 423*820c1a8dSHiroo HAYASHI #if @GNULIB_MBTOWC@ 424*820c1a8dSHiroo HAYASHI # if @REPLACE_MBTOWC@ 425*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 426*820c1a8dSHiroo HAYASHI # undef mbtowc 427*820c1a8dSHiroo HAYASHI # define mbtowc rpl_mbtowc 428*820c1a8dSHiroo HAYASHI # endif 429*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (mbtowc, int, 430*820c1a8dSHiroo HAYASHI (wchar_t *restrict pwc, const char *restrict s, size_t n)); 431*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (mbtowc, int, 432*820c1a8dSHiroo HAYASHI (wchar_t *restrict pwc, const char *restrict s, size_t n)); 433*820c1a8dSHiroo HAYASHI # else 434*820c1a8dSHiroo HAYASHI # if !@HAVE_MBTOWC@ 435*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (mbtowc, int, 436*820c1a8dSHiroo HAYASHI (wchar_t *restrict pwc, const char *restrict s, size_t n)); 437*820c1a8dSHiroo HAYASHI # endif 438*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mbtowc, int, 439*820c1a8dSHiroo HAYASHI (wchar_t *restrict pwc, const char *restrict s, size_t n)); 440*820c1a8dSHiroo HAYASHI # endif 441*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 442*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mbtowc); 443*820c1a8dSHiroo HAYASHI # endif 444*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 445*820c1a8dSHiroo HAYASHI # undef mbtowc 446*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_MBTOWC 447*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (mbtowc, "mbtowc is not portable - " 448*820c1a8dSHiroo HAYASHI "use gnulib module mbtowc for portability"); 449*820c1a8dSHiroo HAYASHI # endif 450*820c1a8dSHiroo HAYASHI #endif 451*820c1a8dSHiroo HAYASHI 452*820c1a8dSHiroo HAYASHI #if @GNULIB_MKDTEMP@ 453*820c1a8dSHiroo HAYASHI /* Create a unique temporary directory from TEMPLATE. 454*820c1a8dSHiroo HAYASHI The last six characters of TEMPLATE must be "XXXXXX"; 455*820c1a8dSHiroo HAYASHI they are replaced with a string that makes the directory name unique. 456*820c1a8dSHiroo HAYASHI Returns TEMPLATE, or a null pointer if it cannot get a unique name. 457*820c1a8dSHiroo HAYASHI The directory is created mode 700. */ 458*820c1a8dSHiroo HAYASHI # if !@HAVE_MKDTEMP@ 459*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); 460*820c1a8dSHiroo HAYASHI # endif 461*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); 462*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mkdtemp); 463*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 464*820c1a8dSHiroo HAYASHI # undef mkdtemp 465*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_MKDTEMP 466*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " 467*820c1a8dSHiroo HAYASHI "use gnulib module mkdtemp for portability"); 468*820c1a8dSHiroo HAYASHI # endif 469*820c1a8dSHiroo HAYASHI #endif 470*820c1a8dSHiroo HAYASHI 471*820c1a8dSHiroo HAYASHI #if @GNULIB_MKOSTEMP@ 472*820c1a8dSHiroo HAYASHI /* Create a unique temporary file from TEMPLATE. 473*820c1a8dSHiroo HAYASHI The last six characters of TEMPLATE must be "XXXXXX"; 474*820c1a8dSHiroo HAYASHI they are replaced with a string that makes the file name unique. 475*820c1a8dSHiroo HAYASHI The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) 476*820c1a8dSHiroo HAYASHI and O_TEXT, O_BINARY (defined in "binary-io.h"). 477*820c1a8dSHiroo HAYASHI The file is then created, with the specified flags, ensuring it didn't exist 478*820c1a8dSHiroo HAYASHI before. 479*820c1a8dSHiroo HAYASHI The file is created read-write (mask at least 0600 & ~umask), but it may be 480*820c1a8dSHiroo HAYASHI world-readable and world-writable (mask 0666 & ~umask), depending on the 481*820c1a8dSHiroo HAYASHI implementation. 482*820c1a8dSHiroo HAYASHI Returns the open file descriptor if successful, otherwise -1 and errno 483*820c1a8dSHiroo HAYASHI set. */ 484*820c1a8dSHiroo HAYASHI # if !@HAVE_MKOSTEMP@ 485*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) 486*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 487*820c1a8dSHiroo HAYASHI # endif 488*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); 489*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mkostemp); 490*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 491*820c1a8dSHiroo HAYASHI # undef mkostemp 492*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_MKOSTEMP 493*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " 494*820c1a8dSHiroo HAYASHI "use gnulib module mkostemp for portability"); 495*820c1a8dSHiroo HAYASHI # endif 496*820c1a8dSHiroo HAYASHI #endif 497*820c1a8dSHiroo HAYASHI 498*820c1a8dSHiroo HAYASHI #if @GNULIB_MKOSTEMPS@ 499*820c1a8dSHiroo HAYASHI /* Create a unique temporary file from TEMPLATE. 500*820c1a8dSHiroo HAYASHI The last six characters of TEMPLATE before a suffix of length 501*820c1a8dSHiroo HAYASHI SUFFIXLEN must be "XXXXXX"; 502*820c1a8dSHiroo HAYASHI they are replaced with a string that makes the file name unique. 503*820c1a8dSHiroo HAYASHI The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) 504*820c1a8dSHiroo HAYASHI and O_TEXT, O_BINARY (defined in "binary-io.h"). 505*820c1a8dSHiroo HAYASHI The file is then created, with the specified flags, ensuring it didn't exist 506*820c1a8dSHiroo HAYASHI before. 507*820c1a8dSHiroo HAYASHI The file is created read-write (mask at least 0600 & ~umask), but it may be 508*820c1a8dSHiroo HAYASHI world-readable and world-writable (mask 0666 & ~umask), depending on the 509*820c1a8dSHiroo HAYASHI implementation. 510*820c1a8dSHiroo HAYASHI Returns the open file descriptor if successful, otherwise -1 and errno 511*820c1a8dSHiroo HAYASHI set. */ 512*820c1a8dSHiroo HAYASHI # if !@HAVE_MKOSTEMPS@ 513*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (mkostemps, int, 514*820c1a8dSHiroo HAYASHI (char * /*template*/, int /*suffixlen*/, int /*flags*/) 515*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 516*820c1a8dSHiroo HAYASHI # endif 517*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mkostemps, int, 518*820c1a8dSHiroo HAYASHI (char * /*template*/, int /*suffixlen*/, int /*flags*/)); 519*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mkostemps); 520*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 521*820c1a8dSHiroo HAYASHI # undef mkostemps 522*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_MKOSTEMPS 523*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " 524*820c1a8dSHiroo HAYASHI "use gnulib module mkostemps for portability"); 525*820c1a8dSHiroo HAYASHI # endif 526*820c1a8dSHiroo HAYASHI #endif 527*820c1a8dSHiroo HAYASHI 528*820c1a8dSHiroo HAYASHI #if @GNULIB_MKSTEMP@ 529*820c1a8dSHiroo HAYASHI /* Create a unique temporary file from TEMPLATE. 530*820c1a8dSHiroo HAYASHI The last six characters of TEMPLATE must be "XXXXXX"; 531*820c1a8dSHiroo HAYASHI they are replaced with a string that makes the file name unique. 532*820c1a8dSHiroo HAYASHI The file is then created, ensuring it didn't exist before. 533*820c1a8dSHiroo HAYASHI The file is created read-write (mask at least 0600 & ~umask), but it may be 534*820c1a8dSHiroo HAYASHI world-readable and world-writable (mask 0666 & ~umask), depending on the 535*820c1a8dSHiroo HAYASHI implementation. 536*820c1a8dSHiroo HAYASHI Returns the open file descriptor if successful, otherwise -1 and errno 537*820c1a8dSHiroo HAYASHI set. */ 538*820c1a8dSHiroo HAYASHI # if @REPLACE_MKSTEMP@ 539*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 540*820c1a8dSHiroo HAYASHI # define mkstemp rpl_mkstemp 541*820c1a8dSHiroo HAYASHI # endif 542*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); 543*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); 544*820c1a8dSHiroo HAYASHI # else 545*820c1a8dSHiroo HAYASHI # if ! @HAVE_MKSTEMP@ 546*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); 547*820c1a8dSHiroo HAYASHI # endif 548*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); 549*820c1a8dSHiroo HAYASHI # endif 550*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mkstemp); 551*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 552*820c1a8dSHiroo HAYASHI # undef mkstemp 553*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_MKSTEMP 554*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " 555*820c1a8dSHiroo HAYASHI "use gnulib module mkstemp for portability"); 556*820c1a8dSHiroo HAYASHI # endif 557*820c1a8dSHiroo HAYASHI #endif 558*820c1a8dSHiroo HAYASHI 559*820c1a8dSHiroo HAYASHI #if @GNULIB_MKSTEMPS@ 560*820c1a8dSHiroo HAYASHI /* Create a unique temporary file from TEMPLATE. 561*820c1a8dSHiroo HAYASHI The last six characters of TEMPLATE prior to a suffix of length 562*820c1a8dSHiroo HAYASHI SUFFIXLEN must be "XXXXXX"; 563*820c1a8dSHiroo HAYASHI they are replaced with a string that makes the file name unique. 564*820c1a8dSHiroo HAYASHI The file is then created, ensuring it didn't exist before. 565*820c1a8dSHiroo HAYASHI The file is created read-write (mask at least 0600 & ~umask), but it may be 566*820c1a8dSHiroo HAYASHI world-readable and world-writable (mask 0666 & ~umask), depending on the 567*820c1a8dSHiroo HAYASHI implementation. 568*820c1a8dSHiroo HAYASHI Returns the open file descriptor if successful, otherwise -1 and errno 569*820c1a8dSHiroo HAYASHI set. */ 570*820c1a8dSHiroo HAYASHI # if !@HAVE_MKSTEMPS@ 571*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) 572*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 573*820c1a8dSHiroo HAYASHI # endif 574*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); 575*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mkstemps); 576*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 577*820c1a8dSHiroo HAYASHI # undef mkstemps 578*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_MKSTEMPS 579*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " 580*820c1a8dSHiroo HAYASHI "use gnulib module mkstemps for portability"); 581*820c1a8dSHiroo HAYASHI # endif 582*820c1a8dSHiroo HAYASHI #endif 583*820c1a8dSHiroo HAYASHI 584*820c1a8dSHiroo HAYASHI #if @GNULIB_MDA_MKTEMP@ 585*820c1a8dSHiroo HAYASHI /* On native Windows, map 'mktemp' to '_mktemp', so that -loldnames is not 586*820c1a8dSHiroo HAYASHI required. In C++ with GNULIB_NAMESPACE, avoid differences between 587*820c1a8dSHiroo HAYASHI platforms by defining GNULIB_NAMESPACE::mktemp always. */ 588*820c1a8dSHiroo HAYASHI # if defined _WIN32 && !defined __CYGWIN__ 589*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 590*820c1a8dSHiroo HAYASHI # undef mktemp 591*820c1a8dSHiroo HAYASHI # define mktemp _mktemp 592*820c1a8dSHiroo HAYASHI # endif 593*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_MDA (mktemp, char *, (char * /*template*/)); 594*820c1a8dSHiroo HAYASHI # else 595*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (mktemp, char *, (char * /*template*/)); 596*820c1a8dSHiroo HAYASHI # endif 597*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (mktemp); 598*820c1a8dSHiroo HAYASHI #endif 599*820c1a8dSHiroo HAYASHI 600*820c1a8dSHiroo HAYASHI /* Allocate memory with indefinite extent and specified alignment. */ 601*820c1a8dSHiroo HAYASHI #if @GNULIB_POSIX_MEMALIGN@ 602*820c1a8dSHiroo HAYASHI # if @REPLACE_POSIX_MEMALIGN@ 603*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 604*820c1a8dSHiroo HAYASHI # undef posix_memalign 605*820c1a8dSHiroo HAYASHI # define posix_memalign rpl_posix_memalign 606*820c1a8dSHiroo HAYASHI # endif 607*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (posix_memalign, int, 608*820c1a8dSHiroo HAYASHI (void **memptr, size_t alignment, size_t size) 609*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 610*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (posix_memalign, int, 611*820c1a8dSHiroo HAYASHI (void **memptr, size_t alignment, size_t size)); 612*820c1a8dSHiroo HAYASHI # else 613*820c1a8dSHiroo HAYASHI # if @HAVE_POSIX_MEMALIGN@ 614*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (posix_memalign, int, 615*820c1a8dSHiroo HAYASHI (void **memptr, size_t alignment, size_t size)); 616*820c1a8dSHiroo HAYASHI # endif 617*820c1a8dSHiroo HAYASHI # endif 618*820c1a8dSHiroo HAYASHI # if @HAVE_POSIX_MEMALIGN@ 619*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (posix_memalign); 620*820c1a8dSHiroo HAYASHI # endif 621*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 622*820c1a8dSHiroo HAYASHI # undef posix_memalign 623*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_POSIX_MEMALIGN 624*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (posix_memalign, "posix_memalign is not portable - " 625*820c1a8dSHiroo HAYASHI "use gnulib module posix_memalign for portability"); 626*820c1a8dSHiroo HAYASHI # endif 627*820c1a8dSHiroo HAYASHI #endif 628*820c1a8dSHiroo HAYASHI 629*820c1a8dSHiroo HAYASHI #if @GNULIB_POSIX_OPENPT@ 630*820c1a8dSHiroo HAYASHI /* Return an FD open to the master side of a pseudo-terminal. Flags should 631*820c1a8dSHiroo HAYASHI include O_RDWR, and may also include O_NOCTTY. */ 632*820c1a8dSHiroo HAYASHI # if !@HAVE_POSIX_OPENPT@ 633*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); 634*820c1a8dSHiroo HAYASHI # endif 635*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); 636*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (posix_openpt); 637*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 638*820c1a8dSHiroo HAYASHI # undef posix_openpt 639*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_POSIX_OPENPT 640*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " 641*820c1a8dSHiroo HAYASHI "use gnulib module posix_openpt for portability"); 642*820c1a8dSHiroo HAYASHI # endif 643*820c1a8dSHiroo HAYASHI #endif 644*820c1a8dSHiroo HAYASHI 645*820c1a8dSHiroo HAYASHI #if @GNULIB_PTSNAME@ 646*820c1a8dSHiroo HAYASHI /* Return the pathname of the pseudo-terminal slave associated with 647*820c1a8dSHiroo HAYASHI the master FD is open on, or NULL on errors. */ 648*820c1a8dSHiroo HAYASHI # if @REPLACE_PTSNAME@ 649*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 650*820c1a8dSHiroo HAYASHI # undef ptsname 651*820c1a8dSHiroo HAYASHI # define ptsname rpl_ptsname 652*820c1a8dSHiroo HAYASHI # endif 653*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (ptsname, char *, (int fd)); 654*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (ptsname, char *, (int fd)); 655*820c1a8dSHiroo HAYASHI # else 656*820c1a8dSHiroo HAYASHI # if !@HAVE_PTSNAME@ 657*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (ptsname, char *, (int fd)); 658*820c1a8dSHiroo HAYASHI # endif 659*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (ptsname, char *, (int fd)); 660*820c1a8dSHiroo HAYASHI # endif 661*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (ptsname); 662*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 663*820c1a8dSHiroo HAYASHI # undef ptsname 664*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_PTSNAME 665*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (ptsname, "ptsname is not portable - " 666*820c1a8dSHiroo HAYASHI "use gnulib module ptsname for portability"); 667*820c1a8dSHiroo HAYASHI # endif 668*820c1a8dSHiroo HAYASHI #endif 669*820c1a8dSHiroo HAYASHI 670*820c1a8dSHiroo HAYASHI #if @GNULIB_PTSNAME_R@ 671*820c1a8dSHiroo HAYASHI /* Set the pathname of the pseudo-terminal slave associated with 672*820c1a8dSHiroo HAYASHI the master FD is open on and return 0, or set errno and return 673*820c1a8dSHiroo HAYASHI non-zero on errors. */ 674*820c1a8dSHiroo HAYASHI # if @REPLACE_PTSNAME_R@ 675*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 676*820c1a8dSHiroo HAYASHI # undef ptsname_r 677*820c1a8dSHiroo HAYASHI # define ptsname_r rpl_ptsname_r 678*820c1a8dSHiroo HAYASHI # endif 679*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); 680*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); 681*820c1a8dSHiroo HAYASHI # else 682*820c1a8dSHiroo HAYASHI # if !@HAVE_PTSNAME_R@ 683*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); 684*820c1a8dSHiroo HAYASHI # endif 685*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); 686*820c1a8dSHiroo HAYASHI # endif 687*820c1a8dSHiroo HAYASHI # ifndef GNULIB_defined_ptsname_r 688*820c1a8dSHiroo HAYASHI # define GNULIB_defined_ptsname_r (!@HAVE_PTSNAME_R@ || @REPLACE_PTSNAME_R@) 689*820c1a8dSHiroo HAYASHI # endif 690*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (ptsname_r); 691*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 692*820c1a8dSHiroo HAYASHI # undef ptsname_r 693*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_PTSNAME_R 694*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " 695*820c1a8dSHiroo HAYASHI "use gnulib module ptsname_r for portability"); 696*820c1a8dSHiroo HAYASHI # endif 697*820c1a8dSHiroo HAYASHI #endif 698*820c1a8dSHiroo HAYASHI 699*820c1a8dSHiroo HAYASHI #if @GNULIB_PUTENV@ 700*820c1a8dSHiroo HAYASHI # if @REPLACE_PUTENV@ 701*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 702*820c1a8dSHiroo HAYASHI # undef putenv 703*820c1a8dSHiroo HAYASHI # define putenv rpl_putenv 704*820c1a8dSHiroo HAYASHI # endif 705*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); 706*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (putenv, int, (char *string)); 707*820c1a8dSHiroo HAYASHI # elif defined _WIN32 && !defined __CYGWIN__ 708*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 709*820c1a8dSHiroo HAYASHI # undef putenv 710*820c1a8dSHiroo HAYASHI # define putenv _putenv 711*820c1a8dSHiroo HAYASHI # endif 712*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_MDA (putenv, int, (char *string)); 713*820c1a8dSHiroo HAYASHI # else 714*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (putenv, int, (char *string)); 715*820c1a8dSHiroo HAYASHI # endif 716*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (putenv); 717*820c1a8dSHiroo HAYASHI #elif @GNULIB_MDA_PUTENV@ 718*820c1a8dSHiroo HAYASHI /* On native Windows, map 'putenv' to '_putenv', so that -loldnames is not 719*820c1a8dSHiroo HAYASHI required. In C++ with GNULIB_NAMESPACE, avoid differences between 720*820c1a8dSHiroo HAYASHI platforms by defining GNULIB_NAMESPACE::putenv always. */ 721*820c1a8dSHiroo HAYASHI # if defined _WIN32 && !defined __CYGWIN__ 722*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 723*820c1a8dSHiroo HAYASHI # undef putenv 724*820c1a8dSHiroo HAYASHI # define putenv _putenv 725*820c1a8dSHiroo HAYASHI # endif 726*820c1a8dSHiroo HAYASHI /* Need to cast, because on mingw, the parameter is either 727*820c1a8dSHiroo HAYASHI 'const char *string' or 'char *string'. */ 728*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_MDA_CAST (putenv, int, (char *string)); 729*820c1a8dSHiroo HAYASHI # else 730*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (putenv, int, (char *string)); 731*820c1a8dSHiroo HAYASHI # endif 732*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (putenv); 733*820c1a8dSHiroo HAYASHI #endif 734*820c1a8dSHiroo HAYASHI 735*820c1a8dSHiroo HAYASHI #if @GNULIB_QSORT_R@ 736*820c1a8dSHiroo HAYASHI /* Sort an array of NMEMB elements, starting at address BASE, each element 737*820c1a8dSHiroo HAYASHI occupying SIZE bytes, in ascending order according to the comparison 738*820c1a8dSHiroo HAYASHI function COMPARE. */ 739*820c1a8dSHiroo HAYASHI # if @REPLACE_QSORT_R@ 740*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 741*820c1a8dSHiroo HAYASHI # undef qsort_r 742*820c1a8dSHiroo HAYASHI # define qsort_r rpl_qsort_r 743*820c1a8dSHiroo HAYASHI # endif 744*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, 745*820c1a8dSHiroo HAYASHI int (*compare) (void const *, void const *, 746*820c1a8dSHiroo HAYASHI void *), 747*820c1a8dSHiroo HAYASHI void *arg) _GL_ARG_NONNULL ((1, 4))); 748*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, 749*820c1a8dSHiroo HAYASHI int (*compare) (void const *, void const *, 750*820c1a8dSHiroo HAYASHI void *), 751*820c1a8dSHiroo HAYASHI void *arg)); 752*820c1a8dSHiroo HAYASHI # else 753*820c1a8dSHiroo HAYASHI # if !@HAVE_QSORT_R@ 754*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, 755*820c1a8dSHiroo HAYASHI int (*compare) (void const *, void const *, 756*820c1a8dSHiroo HAYASHI void *), 757*820c1a8dSHiroo HAYASHI void *arg) _GL_ARG_NONNULL ((1, 4))); 758*820c1a8dSHiroo HAYASHI # endif 759*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, 760*820c1a8dSHiroo HAYASHI int (*compare) (void const *, void const *, 761*820c1a8dSHiroo HAYASHI void *), 762*820c1a8dSHiroo HAYASHI void *arg)); 763*820c1a8dSHiroo HAYASHI # endif 764*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (qsort_r); 765*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 766*820c1a8dSHiroo HAYASHI # undef qsort_r 767*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_QSORT_R 768*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - " 769*820c1a8dSHiroo HAYASHI "use gnulib module qsort_r for portability"); 770*820c1a8dSHiroo HAYASHI # endif 771*820c1a8dSHiroo HAYASHI #endif 772*820c1a8dSHiroo HAYASHI 773*820c1a8dSHiroo HAYASHI 774*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM_R@ 775*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM_R@ 776*820c1a8dSHiroo HAYASHI # ifndef RAND_MAX 777*820c1a8dSHiroo HAYASHI # define RAND_MAX 2147483647 778*820c1a8dSHiroo HAYASHI # endif 779*820c1a8dSHiroo HAYASHI # endif 780*820c1a8dSHiroo HAYASHI #endif 781*820c1a8dSHiroo HAYASHI 782*820c1a8dSHiroo HAYASHI 783*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM@ 784*820c1a8dSHiroo HAYASHI # if @REPLACE_RANDOM@ 785*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 786*820c1a8dSHiroo HAYASHI # undef random 787*820c1a8dSHiroo HAYASHI # define random rpl_random 788*820c1a8dSHiroo HAYASHI # endif 789*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (random, long, (void)); 790*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (random, long, (void)); 791*820c1a8dSHiroo HAYASHI # else 792*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM@ 793*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (random, long, (void)); 794*820c1a8dSHiroo HAYASHI # endif 795*820c1a8dSHiroo HAYASHI /* Need to cast, because on Haiku, the return type is 796*820c1a8dSHiroo HAYASHI int. */ 797*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (random, long, (void)); 798*820c1a8dSHiroo HAYASHI # endif 799*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (random); 800*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 801*820c1a8dSHiroo HAYASHI # undef random 802*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_RANDOM 803*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (random, "random is unportable - " 804*820c1a8dSHiroo HAYASHI "use gnulib module random for portability"); 805*820c1a8dSHiroo HAYASHI # endif 806*820c1a8dSHiroo HAYASHI #endif 807*820c1a8dSHiroo HAYASHI 808*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM@ 809*820c1a8dSHiroo HAYASHI # if @REPLACE_RANDOM@ 810*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 811*820c1a8dSHiroo HAYASHI # undef srandom 812*820c1a8dSHiroo HAYASHI # define srandom rpl_srandom 813*820c1a8dSHiroo HAYASHI # endif 814*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (srandom, void, (unsigned int seed)); 815*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (srandom, void, (unsigned int seed)); 816*820c1a8dSHiroo HAYASHI # else 817*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM@ 818*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); 819*820c1a8dSHiroo HAYASHI # endif 820*820c1a8dSHiroo HAYASHI /* Need to cast, because on FreeBSD, the first parameter is 821*820c1a8dSHiroo HAYASHI unsigned long seed. */ 822*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (srandom, void, (unsigned int seed)); 823*820c1a8dSHiroo HAYASHI # endif 824*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (srandom); 825*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 826*820c1a8dSHiroo HAYASHI # undef srandom 827*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SRANDOM 828*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (srandom, "srandom is unportable - " 829*820c1a8dSHiroo HAYASHI "use gnulib module random for portability"); 830*820c1a8dSHiroo HAYASHI # endif 831*820c1a8dSHiroo HAYASHI #endif 832*820c1a8dSHiroo HAYASHI 833*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM@ 834*820c1a8dSHiroo HAYASHI # if @REPLACE_INITSTATE@ 835*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 836*820c1a8dSHiroo HAYASHI # undef initstate 837*820c1a8dSHiroo HAYASHI # define initstate rpl_initstate 838*820c1a8dSHiroo HAYASHI # endif 839*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (initstate, char *, 840*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size) 841*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2))); 842*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (initstate, char *, 843*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size)); 844*820c1a8dSHiroo HAYASHI # else 845*820c1a8dSHiroo HAYASHI # if !@HAVE_INITSTATE@ || !@HAVE_DECL_INITSTATE@ 846*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (initstate, char *, 847*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size) 848*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2))); 849*820c1a8dSHiroo HAYASHI # endif 850*820c1a8dSHiroo HAYASHI /* Need to cast, because on FreeBSD, the first parameter is 851*820c1a8dSHiroo HAYASHI unsigned long seed. */ 852*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (initstate, char *, 853*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size)); 854*820c1a8dSHiroo HAYASHI # endif 855*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (initstate); 856*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 857*820c1a8dSHiroo HAYASHI # undef initstate 858*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_INITSTATE 859*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (initstate, "initstate is unportable - " 860*820c1a8dSHiroo HAYASHI "use gnulib module random for portability"); 861*820c1a8dSHiroo HAYASHI # endif 862*820c1a8dSHiroo HAYASHI #endif 863*820c1a8dSHiroo HAYASHI 864*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM@ 865*820c1a8dSHiroo HAYASHI # if @REPLACE_SETSTATE@ 866*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 867*820c1a8dSHiroo HAYASHI # undef setstate 868*820c1a8dSHiroo HAYASHI # define setstate rpl_setstate 869*820c1a8dSHiroo HAYASHI # endif 870*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); 871*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (setstate, char *, (char *arg_state)); 872*820c1a8dSHiroo HAYASHI # else 873*820c1a8dSHiroo HAYASHI # if !@HAVE_SETSTATE@ || !@HAVE_DECL_SETSTATE@ 874*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); 875*820c1a8dSHiroo HAYASHI # endif 876*820c1a8dSHiroo HAYASHI /* Need to cast, because on Mac OS X 10.13, HP-UX, Solaris the first parameter 877*820c1a8dSHiroo HAYASHI is const char *arg_state. */ 878*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state)); 879*820c1a8dSHiroo HAYASHI # endif 880*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (setstate); 881*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 882*820c1a8dSHiroo HAYASHI # undef setstate 883*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SETSTATE 884*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (setstate, "setstate is unportable - " 885*820c1a8dSHiroo HAYASHI "use gnulib module random for portability"); 886*820c1a8dSHiroo HAYASHI # endif 887*820c1a8dSHiroo HAYASHI #endif 888*820c1a8dSHiroo HAYASHI 889*820c1a8dSHiroo HAYASHI 890*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM_R@ 891*820c1a8dSHiroo HAYASHI # if @REPLACE_RANDOM_R@ 892*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 893*820c1a8dSHiroo HAYASHI # undef random_r 894*820c1a8dSHiroo HAYASHI # define random_r rpl_random_r 895*820c1a8dSHiroo HAYASHI # endif 896*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) 897*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1, 2))); 898*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); 899*820c1a8dSHiroo HAYASHI # else 900*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM_R@ 901*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) 902*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1, 2))); 903*820c1a8dSHiroo HAYASHI # endif 904*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); 905*820c1a8dSHiroo HAYASHI # endif 906*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (random_r); 907*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 908*820c1a8dSHiroo HAYASHI # undef random_r 909*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_RANDOM_R 910*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (random_r, "random_r is unportable - " 911*820c1a8dSHiroo HAYASHI "use gnulib module random_r for portability"); 912*820c1a8dSHiroo HAYASHI # endif 913*820c1a8dSHiroo HAYASHI #endif 914*820c1a8dSHiroo HAYASHI 915*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM_R@ 916*820c1a8dSHiroo HAYASHI # if @REPLACE_RANDOM_R@ 917*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 918*820c1a8dSHiroo HAYASHI # undef srandom_r 919*820c1a8dSHiroo HAYASHI # define srandom_r rpl_srandom_r 920*820c1a8dSHiroo HAYASHI # endif 921*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (srandom_r, int, 922*820c1a8dSHiroo HAYASHI (unsigned int seed, struct random_data *rand_state) 923*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2))); 924*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (srandom_r, int, 925*820c1a8dSHiroo HAYASHI (unsigned int seed, struct random_data *rand_state)); 926*820c1a8dSHiroo HAYASHI # else 927*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM_R@ 928*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (srandom_r, int, 929*820c1a8dSHiroo HAYASHI (unsigned int seed, struct random_data *rand_state) 930*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2))); 931*820c1a8dSHiroo HAYASHI # endif 932*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (srandom_r, int, 933*820c1a8dSHiroo HAYASHI (unsigned int seed, struct random_data *rand_state)); 934*820c1a8dSHiroo HAYASHI # endif 935*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (srandom_r); 936*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 937*820c1a8dSHiroo HAYASHI # undef srandom_r 938*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SRANDOM_R 939*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " 940*820c1a8dSHiroo HAYASHI "use gnulib module random_r for portability"); 941*820c1a8dSHiroo HAYASHI # endif 942*820c1a8dSHiroo HAYASHI #endif 943*820c1a8dSHiroo HAYASHI 944*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM_R@ 945*820c1a8dSHiroo HAYASHI # if @REPLACE_RANDOM_R@ 946*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 947*820c1a8dSHiroo HAYASHI # undef initstate_r 948*820c1a8dSHiroo HAYASHI # define initstate_r rpl_initstate_r 949*820c1a8dSHiroo HAYASHI # endif 950*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (initstate_r, int, 951*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size, 952*820c1a8dSHiroo HAYASHI struct random_data *rand_state) 953*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2, 4))); 954*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (initstate_r, int, 955*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size, 956*820c1a8dSHiroo HAYASHI struct random_data *rand_state)); 957*820c1a8dSHiroo HAYASHI # else 958*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM_R@ 959*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (initstate_r, int, 960*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size, 961*820c1a8dSHiroo HAYASHI struct random_data *rand_state) 962*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2, 4))); 963*820c1a8dSHiroo HAYASHI # endif 964*820c1a8dSHiroo HAYASHI /* Need to cast, because on Haiku, the third parameter is 965*820c1a8dSHiroo HAYASHI unsigned long buf_size. */ 966*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (initstate_r, int, 967*820c1a8dSHiroo HAYASHI (unsigned int seed, char *buf, size_t buf_size, 968*820c1a8dSHiroo HAYASHI struct random_data *rand_state)); 969*820c1a8dSHiroo HAYASHI # endif 970*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (initstate_r); 971*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 972*820c1a8dSHiroo HAYASHI # undef initstate_r 973*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_INITSTATE_R 974*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " 975*820c1a8dSHiroo HAYASHI "use gnulib module random_r for portability"); 976*820c1a8dSHiroo HAYASHI # endif 977*820c1a8dSHiroo HAYASHI #endif 978*820c1a8dSHiroo HAYASHI 979*820c1a8dSHiroo HAYASHI #if @GNULIB_RANDOM_R@ 980*820c1a8dSHiroo HAYASHI # if @REPLACE_RANDOM_R@ 981*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 982*820c1a8dSHiroo HAYASHI # undef setstate_r 983*820c1a8dSHiroo HAYASHI # define setstate_r rpl_setstate_r 984*820c1a8dSHiroo HAYASHI # endif 985*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (setstate_r, int, 986*820c1a8dSHiroo HAYASHI (char *arg_state, struct random_data *rand_state) 987*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1, 2))); 988*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (setstate_r, int, 989*820c1a8dSHiroo HAYASHI (char *arg_state, struct random_data *rand_state)); 990*820c1a8dSHiroo HAYASHI # else 991*820c1a8dSHiroo HAYASHI # if !@HAVE_RANDOM_R@ 992*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (setstate_r, int, 993*820c1a8dSHiroo HAYASHI (char *arg_state, struct random_data *rand_state) 994*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1, 2))); 995*820c1a8dSHiroo HAYASHI # endif 996*820c1a8dSHiroo HAYASHI /* Need to cast, because on Haiku, the first parameter is 997*820c1a8dSHiroo HAYASHI void *arg_state. */ 998*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (setstate_r, int, 999*820c1a8dSHiroo HAYASHI (char *arg_state, struct random_data *rand_state)); 1000*820c1a8dSHiroo HAYASHI # endif 1001*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (setstate_r); 1002*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1003*820c1a8dSHiroo HAYASHI # undef setstate_r 1004*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SETSTATE_R 1005*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " 1006*820c1a8dSHiroo HAYASHI "use gnulib module random_r for portability"); 1007*820c1a8dSHiroo HAYASHI # endif 1008*820c1a8dSHiroo HAYASHI #endif 1009*820c1a8dSHiroo HAYASHI 1010*820c1a8dSHiroo HAYASHI 1011*820c1a8dSHiroo HAYASHI #if @GNULIB_REALLOC_POSIX@ 1012*820c1a8dSHiroo HAYASHI # if @REPLACE_REALLOC@ 1013*820c1a8dSHiroo HAYASHI # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ 1014*820c1a8dSHiroo HAYASHI || _GL_USE_STDLIB_ALLOC) 1015*820c1a8dSHiroo HAYASHI # undef realloc 1016*820c1a8dSHiroo HAYASHI # define realloc rpl_realloc 1017*820c1a8dSHiroo HAYASHI # endif 1018*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); 1019*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); 1020*820c1a8dSHiroo HAYASHI # else 1021*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); 1022*820c1a8dSHiroo HAYASHI # endif 1023*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 1024*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (realloc); 1025*820c1a8dSHiroo HAYASHI # endif 1026*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC 1027*820c1a8dSHiroo HAYASHI # undef realloc 1028*820c1a8dSHiroo HAYASHI /* Assume realloc is always declared. */ 1029*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " 1030*820c1a8dSHiroo HAYASHI "use gnulib module realloc-posix for portability"); 1031*820c1a8dSHiroo HAYASHI #endif 1032*820c1a8dSHiroo HAYASHI 1033*820c1a8dSHiroo HAYASHI 1034*820c1a8dSHiroo HAYASHI #if @GNULIB_REALLOCARRAY@ 1035*820c1a8dSHiroo HAYASHI # if @REPLACE_REALLOCARRAY@ 1036*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1037*820c1a8dSHiroo HAYASHI # undef reallocarray 1038*820c1a8dSHiroo HAYASHI # define reallocarray rpl_reallocarray 1039*820c1a8dSHiroo HAYASHI # endif 1040*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (reallocarray, void *, 1041*820c1a8dSHiroo HAYASHI (void *ptr, size_t nmemb, size_t size)); 1042*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (reallocarray, void *, 1043*820c1a8dSHiroo HAYASHI (void *ptr, size_t nmemb, size_t size)); 1044*820c1a8dSHiroo HAYASHI # else 1045*820c1a8dSHiroo HAYASHI # if ! @HAVE_REALLOCARRAY@ 1046*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (reallocarray, void *, 1047*820c1a8dSHiroo HAYASHI (void *ptr, size_t nmemb, size_t size)); 1048*820c1a8dSHiroo HAYASHI # endif 1049*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (reallocarray, void *, 1050*820c1a8dSHiroo HAYASHI (void *ptr, size_t nmemb, size_t size)); 1051*820c1a8dSHiroo HAYASHI # endif 1052*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (reallocarray); 1053*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1054*820c1a8dSHiroo HAYASHI # undef reallocarray 1055*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_REALLOCARRAY 1056*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (reallocarray, "reallocarray is not portable - " 1057*820c1a8dSHiroo HAYASHI "use gnulib module reallocarray for portability"); 1058*820c1a8dSHiroo HAYASHI # endif 1059*820c1a8dSHiroo HAYASHI #endif 1060*820c1a8dSHiroo HAYASHI 1061*820c1a8dSHiroo HAYASHI #if @GNULIB_REALPATH@ 1062*820c1a8dSHiroo HAYASHI # if @REPLACE_REALPATH@ 1063*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1064*820c1a8dSHiroo HAYASHI # define realpath rpl_realpath 1065*820c1a8dSHiroo HAYASHI # endif 1066*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (realpath, char *, 1067*820c1a8dSHiroo HAYASHI (const char *restrict name, char *restrict resolved) 1068*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1069*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (realpath, char *, 1070*820c1a8dSHiroo HAYASHI (const char *restrict name, char *restrict resolved)); 1071*820c1a8dSHiroo HAYASHI # else 1072*820c1a8dSHiroo HAYASHI # if !@HAVE_REALPATH@ 1073*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (realpath, char *, 1074*820c1a8dSHiroo HAYASHI (const char *restrict name, char *restrict resolved) 1075*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1076*820c1a8dSHiroo HAYASHI # endif 1077*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (realpath, char *, 1078*820c1a8dSHiroo HAYASHI (const char *restrict name, char *restrict resolved)); 1079*820c1a8dSHiroo HAYASHI # endif 1080*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (realpath); 1081*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1082*820c1a8dSHiroo HAYASHI # undef realpath 1083*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_REALPATH 1084*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " 1085*820c1a8dSHiroo HAYASHI "canonicalize or canonicalize-lgpl for portability"); 1086*820c1a8dSHiroo HAYASHI # endif 1087*820c1a8dSHiroo HAYASHI #endif 1088*820c1a8dSHiroo HAYASHI 1089*820c1a8dSHiroo HAYASHI #if @GNULIB_RPMATCH@ 1090*820c1a8dSHiroo HAYASHI /* Test a user response to a question. 1091*820c1a8dSHiroo HAYASHI Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ 1092*820c1a8dSHiroo HAYASHI # if !@HAVE_RPMATCH@ 1093*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); 1094*820c1a8dSHiroo HAYASHI # endif 1095*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); 1096*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (rpmatch); 1097*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1098*820c1a8dSHiroo HAYASHI # undef rpmatch 1099*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_RPMATCH 1100*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " 1101*820c1a8dSHiroo HAYASHI "use gnulib module rpmatch for portability"); 1102*820c1a8dSHiroo HAYASHI # endif 1103*820c1a8dSHiroo HAYASHI #endif 1104*820c1a8dSHiroo HAYASHI 1105*820c1a8dSHiroo HAYASHI #if @GNULIB_SECURE_GETENV@ 1106*820c1a8dSHiroo HAYASHI /* Look up NAME in the environment, returning 0 in insecure situations. */ 1107*820c1a8dSHiroo HAYASHI # if !@HAVE_SECURE_GETENV@ 1108*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (secure_getenv, char *, 1109*820c1a8dSHiroo HAYASHI (char const *name) _GL_ARG_NONNULL ((1))); 1110*820c1a8dSHiroo HAYASHI # endif 1111*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); 1112*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (secure_getenv); 1113*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1114*820c1a8dSHiroo HAYASHI # undef secure_getenv 1115*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SECURE_GETENV 1116*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " 1117*820c1a8dSHiroo HAYASHI "use gnulib module secure_getenv for portability"); 1118*820c1a8dSHiroo HAYASHI # endif 1119*820c1a8dSHiroo HAYASHI #endif 1120*820c1a8dSHiroo HAYASHI 1121*820c1a8dSHiroo HAYASHI #if @GNULIB_SETENV@ 1122*820c1a8dSHiroo HAYASHI /* Set NAME to VALUE in the environment. 1123*820c1a8dSHiroo HAYASHI If REPLACE is nonzero, overwrite an existing value. */ 1124*820c1a8dSHiroo HAYASHI # if @REPLACE_SETENV@ 1125*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1126*820c1a8dSHiroo HAYASHI # undef setenv 1127*820c1a8dSHiroo HAYASHI # define setenv rpl_setenv 1128*820c1a8dSHiroo HAYASHI # endif 1129*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (setenv, int, 1130*820c1a8dSHiroo HAYASHI (const char *name, const char *value, int replace) 1131*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1132*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (setenv, int, 1133*820c1a8dSHiroo HAYASHI (const char *name, const char *value, int replace)); 1134*820c1a8dSHiroo HAYASHI # else 1135*820c1a8dSHiroo HAYASHI # if !@HAVE_DECL_SETENV@ 1136*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (setenv, int, 1137*820c1a8dSHiroo HAYASHI (const char *name, const char *value, int replace) 1138*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1139*820c1a8dSHiroo HAYASHI # endif 1140*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (setenv, int, 1141*820c1a8dSHiroo HAYASHI (const char *name, const char *value, int replace)); 1142*820c1a8dSHiroo HAYASHI # endif 1143*820c1a8dSHiroo HAYASHI # if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@) 1144*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (setenv); 1145*820c1a8dSHiroo HAYASHI # endif 1146*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1147*820c1a8dSHiroo HAYASHI # undef setenv 1148*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SETENV 1149*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (setenv, "setenv is unportable - " 1150*820c1a8dSHiroo HAYASHI "use gnulib module setenv for portability"); 1151*820c1a8dSHiroo HAYASHI # endif 1152*820c1a8dSHiroo HAYASHI #endif 1153*820c1a8dSHiroo HAYASHI 1154*820c1a8dSHiroo HAYASHI #if @GNULIB_STRTOD@ 1155*820c1a8dSHiroo HAYASHI /* Parse a double from STRING, updating ENDP if appropriate. */ 1156*820c1a8dSHiroo HAYASHI # if @REPLACE_STRTOD@ 1157*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1158*820c1a8dSHiroo HAYASHI # define strtod rpl_strtod 1159*820c1a8dSHiroo HAYASHI # endif 1160*820c1a8dSHiroo HAYASHI # define GNULIB_defined_strtod_function 1 1161*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (strtod, double, 1162*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp) 1163*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1164*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (strtod, double, 1165*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp)); 1166*820c1a8dSHiroo HAYASHI # else 1167*820c1a8dSHiroo HAYASHI # if !@HAVE_STRTOD@ 1168*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (strtod, double, 1169*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp) 1170*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1171*820c1a8dSHiroo HAYASHI # endif 1172*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (strtod, double, 1173*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp)); 1174*820c1a8dSHiroo HAYASHI # endif 1175*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 1176*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (strtod); 1177*820c1a8dSHiroo HAYASHI # endif 1178*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1179*820c1a8dSHiroo HAYASHI # undef strtod 1180*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_STRTOD 1181*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (strtod, "strtod is unportable - " 1182*820c1a8dSHiroo HAYASHI "use gnulib module strtod for portability"); 1183*820c1a8dSHiroo HAYASHI # endif 1184*820c1a8dSHiroo HAYASHI #endif 1185*820c1a8dSHiroo HAYASHI 1186*820c1a8dSHiroo HAYASHI #if @GNULIB_STRTOLD@ 1187*820c1a8dSHiroo HAYASHI /* Parse a 'long double' from STRING, updating ENDP if appropriate. */ 1188*820c1a8dSHiroo HAYASHI # if @REPLACE_STRTOLD@ 1189*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1190*820c1a8dSHiroo HAYASHI # define strtold rpl_strtold 1191*820c1a8dSHiroo HAYASHI # endif 1192*820c1a8dSHiroo HAYASHI # define GNULIB_defined_strtold_function 1 1193*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (strtold, long double, 1194*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp) 1195*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1196*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (strtold, long double, 1197*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp)); 1198*820c1a8dSHiroo HAYASHI # else 1199*820c1a8dSHiroo HAYASHI # if !@HAVE_STRTOLD@ 1200*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (strtold, long double, 1201*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp) 1202*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1203*820c1a8dSHiroo HAYASHI # endif 1204*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (strtold, long double, 1205*820c1a8dSHiroo HAYASHI (const char *restrict str, char **restrict endp)); 1206*820c1a8dSHiroo HAYASHI # endif 1207*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (strtold); 1208*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1209*820c1a8dSHiroo HAYASHI # undef strtold 1210*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_STRTOLD 1211*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (strtold, "strtold is unportable - " 1212*820c1a8dSHiroo HAYASHI "use gnulib module strtold for portability"); 1213*820c1a8dSHiroo HAYASHI # endif 1214*820c1a8dSHiroo HAYASHI #endif 1215*820c1a8dSHiroo HAYASHI 1216*820c1a8dSHiroo HAYASHI #if @GNULIB_STRTOL@ 1217*820c1a8dSHiroo HAYASHI /* Parse a signed integer whose textual representation starts at STRING. 1218*820c1a8dSHiroo HAYASHI The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, 1219*820c1a8dSHiroo HAYASHI it may be decimal or octal (with prefix "0") or hexadecimal (with prefix 1220*820c1a8dSHiroo HAYASHI "0x"). 1221*820c1a8dSHiroo HAYASHI If ENDPTR is not NULL, the address of the first byte after the integer is 1222*820c1a8dSHiroo HAYASHI stored in *ENDPTR. 1223*820c1a8dSHiroo HAYASHI Upon overflow, the return value is LONG_MAX or LONG_MIN, and errno is set 1224*820c1a8dSHiroo HAYASHI to ERANGE. */ 1225*820c1a8dSHiroo HAYASHI # if @REPLACE_STRTOL@ 1226*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1227*820c1a8dSHiroo HAYASHI # define strtol rpl_strtol 1228*820c1a8dSHiroo HAYASHI # endif 1229*820c1a8dSHiroo HAYASHI # define GNULIB_defined_strtol_function 1 1230*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (strtol, long, 1231*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1232*820c1a8dSHiroo HAYASHI int base) 1233*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1234*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (strtol, long, 1235*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1236*820c1a8dSHiroo HAYASHI int base)); 1237*820c1a8dSHiroo HAYASHI # else 1238*820c1a8dSHiroo HAYASHI # if !@HAVE_STRTOL@ 1239*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (strtol, long, 1240*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1241*820c1a8dSHiroo HAYASHI int base) 1242*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1243*820c1a8dSHiroo HAYASHI # endif 1244*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (strtol, long, 1245*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1246*820c1a8dSHiroo HAYASHI int base)); 1247*820c1a8dSHiroo HAYASHI # endif 1248*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (strtol); 1249*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1250*820c1a8dSHiroo HAYASHI # undef strtol 1251*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_STRTOL 1252*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (strtol, "strtol is unportable - " 1253*820c1a8dSHiroo HAYASHI "use gnulib module strtol for portability"); 1254*820c1a8dSHiroo HAYASHI # endif 1255*820c1a8dSHiroo HAYASHI #endif 1256*820c1a8dSHiroo HAYASHI 1257*820c1a8dSHiroo HAYASHI #if @GNULIB_STRTOLL@ 1258*820c1a8dSHiroo HAYASHI /* Parse a signed integer whose textual representation starts at STRING. 1259*820c1a8dSHiroo HAYASHI The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, 1260*820c1a8dSHiroo HAYASHI it may be decimal or octal (with prefix "0") or hexadecimal (with prefix 1261*820c1a8dSHiroo HAYASHI "0x"). 1262*820c1a8dSHiroo HAYASHI If ENDPTR is not NULL, the address of the first byte after the integer is 1263*820c1a8dSHiroo HAYASHI stored in *ENDPTR. 1264*820c1a8dSHiroo HAYASHI Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set 1265*820c1a8dSHiroo HAYASHI to ERANGE. */ 1266*820c1a8dSHiroo HAYASHI # if @REPLACE_STRTOLL@ 1267*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1268*820c1a8dSHiroo HAYASHI # define strtoll rpl_strtoll 1269*820c1a8dSHiroo HAYASHI # endif 1270*820c1a8dSHiroo HAYASHI # define GNULIB_defined_strtoll_function 1 1271*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (strtoll, long long, 1272*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1273*820c1a8dSHiroo HAYASHI int base) 1274*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1275*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (strtoll, long long, 1276*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1277*820c1a8dSHiroo HAYASHI int base)); 1278*820c1a8dSHiroo HAYASHI # else 1279*820c1a8dSHiroo HAYASHI # if !@HAVE_STRTOLL@ 1280*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (strtoll, long long, 1281*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1282*820c1a8dSHiroo HAYASHI int base) 1283*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1284*820c1a8dSHiroo HAYASHI # endif 1285*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (strtoll, long long, 1286*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1287*820c1a8dSHiroo HAYASHI int base)); 1288*820c1a8dSHiroo HAYASHI # endif 1289*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (strtoll); 1290*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1291*820c1a8dSHiroo HAYASHI # undef strtoll 1292*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_STRTOLL 1293*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (strtoll, "strtoll is unportable - " 1294*820c1a8dSHiroo HAYASHI "use gnulib module strtoll for portability"); 1295*820c1a8dSHiroo HAYASHI # endif 1296*820c1a8dSHiroo HAYASHI #endif 1297*820c1a8dSHiroo HAYASHI 1298*820c1a8dSHiroo HAYASHI #if @GNULIB_STRTOUL@ 1299*820c1a8dSHiroo HAYASHI /* Parse an unsigned integer whose textual representation starts at STRING. 1300*820c1a8dSHiroo HAYASHI The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, 1301*820c1a8dSHiroo HAYASHI it may be decimal or octal (with prefix "0") or hexadecimal (with prefix 1302*820c1a8dSHiroo HAYASHI "0x"). 1303*820c1a8dSHiroo HAYASHI If ENDPTR is not NULL, the address of the first byte after the integer is 1304*820c1a8dSHiroo HAYASHI stored in *ENDPTR. 1305*820c1a8dSHiroo HAYASHI Upon overflow, the return value is ULONG_MAX, and errno is set to ERANGE. */ 1306*820c1a8dSHiroo HAYASHI # if @REPLACE_STRTOUL@ 1307*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1308*820c1a8dSHiroo HAYASHI # define strtoul rpl_strtoul 1309*820c1a8dSHiroo HAYASHI # endif 1310*820c1a8dSHiroo HAYASHI # define GNULIB_defined_strtoul_function 1 1311*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (strtoul, unsigned long, 1312*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1313*820c1a8dSHiroo HAYASHI int base) 1314*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1315*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (strtoul, unsigned long, 1316*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1317*820c1a8dSHiroo HAYASHI int base)); 1318*820c1a8dSHiroo HAYASHI # else 1319*820c1a8dSHiroo HAYASHI # if !@HAVE_STRTOUL@ 1320*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (strtoul, unsigned long, 1321*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1322*820c1a8dSHiroo HAYASHI int base) 1323*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1324*820c1a8dSHiroo HAYASHI # endif 1325*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (strtoul, unsigned long, 1326*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1327*820c1a8dSHiroo HAYASHI int base)); 1328*820c1a8dSHiroo HAYASHI # endif 1329*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (strtoul); 1330*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1331*820c1a8dSHiroo HAYASHI # undef strtoul 1332*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_STRTOUL 1333*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (strtoul, "strtoul is unportable - " 1334*820c1a8dSHiroo HAYASHI "use gnulib module strtoul for portability"); 1335*820c1a8dSHiroo HAYASHI # endif 1336*820c1a8dSHiroo HAYASHI #endif 1337*820c1a8dSHiroo HAYASHI 1338*820c1a8dSHiroo HAYASHI #if @GNULIB_STRTOULL@ 1339*820c1a8dSHiroo HAYASHI /* Parse an unsigned integer whose textual representation starts at STRING. 1340*820c1a8dSHiroo HAYASHI The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, 1341*820c1a8dSHiroo HAYASHI it may be decimal or octal (with prefix "0") or hexadecimal (with prefix 1342*820c1a8dSHiroo HAYASHI "0x"). 1343*820c1a8dSHiroo HAYASHI If ENDPTR is not NULL, the address of the first byte after the integer is 1344*820c1a8dSHiroo HAYASHI stored in *ENDPTR. 1345*820c1a8dSHiroo HAYASHI Upon overflow, the return value is ULLONG_MAX, and errno is set to 1346*820c1a8dSHiroo HAYASHI ERANGE. */ 1347*820c1a8dSHiroo HAYASHI # if @REPLACE_STRTOULL@ 1348*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1349*820c1a8dSHiroo HAYASHI # define strtoull rpl_strtoull 1350*820c1a8dSHiroo HAYASHI # endif 1351*820c1a8dSHiroo HAYASHI # define GNULIB_defined_strtoull_function 1 1352*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (strtoull, unsigned long long, 1353*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1354*820c1a8dSHiroo HAYASHI int base) 1355*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1356*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (strtoull, unsigned long long, 1357*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1358*820c1a8dSHiroo HAYASHI int base)); 1359*820c1a8dSHiroo HAYASHI # else 1360*820c1a8dSHiroo HAYASHI # if !@HAVE_STRTOULL@ 1361*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (strtoull, unsigned long long, 1362*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1363*820c1a8dSHiroo HAYASHI int base) 1364*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((1))); 1365*820c1a8dSHiroo HAYASHI # endif 1366*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (strtoull, unsigned long long, 1367*820c1a8dSHiroo HAYASHI (const char *restrict string, char **restrict endptr, 1368*820c1a8dSHiroo HAYASHI int base)); 1369*820c1a8dSHiroo HAYASHI # endif 1370*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (strtoull); 1371*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1372*820c1a8dSHiroo HAYASHI # undef strtoull 1373*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_STRTOULL 1374*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (strtoull, "strtoull is unportable - " 1375*820c1a8dSHiroo HAYASHI "use gnulib module strtoull for portability"); 1376*820c1a8dSHiroo HAYASHI # endif 1377*820c1a8dSHiroo HAYASHI #endif 1378*820c1a8dSHiroo HAYASHI 1379*820c1a8dSHiroo HAYASHI #if @GNULIB_UNLOCKPT@ 1380*820c1a8dSHiroo HAYASHI /* Unlock the slave side of the pseudo-terminal whose master side is specified 1381*820c1a8dSHiroo HAYASHI by FD, so that it can be opened. */ 1382*820c1a8dSHiroo HAYASHI # if !@HAVE_UNLOCKPT@ 1383*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (unlockpt, int, (int fd)); 1384*820c1a8dSHiroo HAYASHI # endif 1385*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (unlockpt, int, (int fd)); 1386*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (unlockpt); 1387*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1388*820c1a8dSHiroo HAYASHI # undef unlockpt 1389*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_UNLOCKPT 1390*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " 1391*820c1a8dSHiroo HAYASHI "use gnulib module unlockpt for portability"); 1392*820c1a8dSHiroo HAYASHI # endif 1393*820c1a8dSHiroo HAYASHI #endif 1394*820c1a8dSHiroo HAYASHI 1395*820c1a8dSHiroo HAYASHI #if @GNULIB_UNSETENV@ 1396*820c1a8dSHiroo HAYASHI /* Remove the variable NAME from the environment. */ 1397*820c1a8dSHiroo HAYASHI # if @REPLACE_UNSETENV@ 1398*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1399*820c1a8dSHiroo HAYASHI # undef unsetenv 1400*820c1a8dSHiroo HAYASHI # define unsetenv rpl_unsetenv 1401*820c1a8dSHiroo HAYASHI # endif 1402*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); 1403*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); 1404*820c1a8dSHiroo HAYASHI # else 1405*820c1a8dSHiroo HAYASHI # if !@HAVE_DECL_UNSETENV@ 1406*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); 1407*820c1a8dSHiroo HAYASHI # endif 1408*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); 1409*820c1a8dSHiroo HAYASHI # endif 1410*820c1a8dSHiroo HAYASHI # if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@) 1411*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (unsetenv); 1412*820c1a8dSHiroo HAYASHI # endif 1413*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 1414*820c1a8dSHiroo HAYASHI # undef unsetenv 1415*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_UNSETENV 1416*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " 1417*820c1a8dSHiroo HAYASHI "use gnulib module unsetenv for portability"); 1418*820c1a8dSHiroo HAYASHI # endif 1419*820c1a8dSHiroo HAYASHI #endif 1420*820c1a8dSHiroo HAYASHI 1421*820c1a8dSHiroo HAYASHI /* Convert a wide character to a multibyte character. */ 1422*820c1a8dSHiroo HAYASHI #if @GNULIB_WCTOMB@ 1423*820c1a8dSHiroo HAYASHI # if @REPLACE_WCTOMB@ 1424*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1425*820c1a8dSHiroo HAYASHI # undef wctomb 1426*820c1a8dSHiroo HAYASHI # define wctomb rpl_wctomb 1427*820c1a8dSHiroo HAYASHI # endif 1428*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); 1429*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); 1430*820c1a8dSHiroo HAYASHI # else 1431*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); 1432*820c1a8dSHiroo HAYASHI # endif 1433*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 1434*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (wctomb); 1435*820c1a8dSHiroo HAYASHI # endif 1436*820c1a8dSHiroo HAYASHI #endif 1437*820c1a8dSHiroo HAYASHI 1438*820c1a8dSHiroo HAYASHI 1439*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_STDLIB_H */ 1440*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_STDLIB_H */ 1441*820c1a8dSHiroo HAYASHI #endif 1442