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