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