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