1
/* A GNU-like <stdlib.h>.
3
Copyright (C) 1995, 2001-2004, 2006-2011 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 <http://www.gnu.org/licenses/>. */
19
@PRAGMA_SYSTEM_HEADER@
23
#if defined __need_malloc_and_calloc
24
/* Special invocation convention inside glibc header files. */
26
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
29
/* Normal invocation convention. */
31
#ifndef _@GUARD_PREFIX@_STDLIB_H
33
/* The include_next requires a split double-inclusion guard. */
34
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
36
#ifndef _@GUARD_PREFIX@_STDLIB_H
37
#define _@GUARD_PREFIX@_STDLIB_H
39
/* NetBSD 5.0 mis-defines NULL. */
42
/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>. */
43
#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
44
# include <sys/wait.h>
47
/* Solaris declares getloadavg() in <sys/loadavg.h>. */
48
#if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
49
# include <sys/loadavg.h>
54
/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
55
from <stdlib.h> if _REENTRANT is defined. Include it whenever we need
56
'struct random_data'. */
61
# if !@HAVE_STRUCT_RANDOM_DATA@ || !@HAVE_RANDOM_R@
65
# if !@HAVE_STRUCT_RANDOM_DATA@
66
/* Define 'struct random_data'.
67
But allow multiple gnulib generated <stdlib.h> replacements to coexist. */
68
# if !GNULIB_defined_struct_random_data
71
int32_t *fptr; /* Front pointer. */
72
int32_t *rptr; /* Rear pointer. */
73
int32_t *state; /* Array of state values. */
74
int rand_type; /* Type of random number generator. */
75
int rand_deg; /* Degree of random number generator. */
76
int rand_sep; /* Distance between front and rear. */
77
int32_t *end_ptr; /* Pointer behind state table. */
79
# define GNULIB_defined_struct_random_data 1
84
#if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
85
/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
86
/* On MacOS X 10.5, only <unistd.h> declares mkstemps. */
87
/* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */
88
/* But avoid namespace pollution on glibc systems and native Windows. */
92
/* The definition of _Noreturn is copied here. */
94
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
96
/* The definition of _GL_ARG_NONNULL is copied here. */
98
/* The definition of _GL_WARN_ON_USE is copied here. */
101
/* Some systems do not define EXIT_*, despite otherwise supporting C89. */
103
# define EXIT_SUCCESS 0
105
/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
106
with proper operation of xargs. */
108
# define EXIT_FAILURE 1
109
#elif EXIT_FAILURE != 1
111
# define EXIT_FAILURE 1
116
/* Terminate the current process with the given return code, without running
117
the 'atexit' handlers. */
119
_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
121
_GL_CXXALIAS_SYS (_Exit, void, (int status));
122
_GL_CXXALIASWARN (_Exit);
123
#elif defined GNULIB_POSIXCHECK
125
# if HAVE_RAW_DECL__EXIT
126
_GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
127
"use gnulib module _Exit for portability");
133
/* Parse a signed decimal integer.
134
Returns the value of the integer. Errors are not detected. */
136
_GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ARG_NONNULL ((1)));
138
_GL_CXXALIAS_SYS (atoll, long long, (const char *string));
139
_GL_CXXALIASWARN (atoll);
140
#elif defined GNULIB_POSIXCHECK
142
# if HAVE_RAW_DECL_ATOLL
143
_GL_WARN_ON_USE (atoll, "atoll is unportable - "
144
"use gnulib module atoll for portability");
148
#if @GNULIB_CALLOC_POSIX@
149
# if @REPLACE_CALLOC@
150
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
152
# define calloc rpl_calloc
154
_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size));
155
_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
157
_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
159
_GL_CXXALIASWARN (calloc);
160
#elif defined GNULIB_POSIXCHECK
162
/* Assume calloc is always declared. */
163
_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - "
164
"use gnulib module calloc-posix for portability");
167
#if @GNULIB_CANONICALIZE_FILE_NAME@
168
# if @REPLACE_CANONICALIZE_FILE_NAME@
169
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
170
# define canonicalize_file_name rpl_canonicalize_file_name
172
_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name)
173
_GL_ARG_NONNULL ((1)));
174
_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
176
# if !@HAVE_CANONICALIZE_FILE_NAME@
177
_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
178
_GL_ARG_NONNULL ((1)));
180
_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
182
_GL_CXXALIASWARN (canonicalize_file_name);
183
#elif defined GNULIB_POSIXCHECK
184
# undef canonicalize_file_name
185
# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
186
_GL_WARN_ON_USE (canonicalize_file_name,
187
"canonicalize_file_name is unportable - "
188
"use gnulib module canonicalize-lgpl for portability");
192
#if @GNULIB_GETLOADAVG@
193
/* Store max(NELEM,3) load average numbers in LOADAVG[].
194
The three numbers are the load average of the last 1 minute, the last 5
195
minutes, and the last 15 minutes, respectively.
196
LOADAVG is an array of NELEM numbers. */
197
# if !@HAVE_DECL_GETLOADAVG@
198
_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
199
_GL_ARG_NONNULL ((1)));
201
_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
202
_GL_CXXALIASWARN (getloadavg);
203
#elif defined GNULIB_POSIXCHECK
205
# if HAVE_RAW_DECL_GETLOADAVG
206
_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
207
"use gnulib module getloadavg for portability");
211
#if @GNULIB_GETSUBOPT@
212
/* Assuming *OPTIONP is a comma separated list of elements of the form
213
"token" or "token=value", getsubopt parses the first of these elements.
214
If the first element refers to a "token" that is member of the given
215
NULL-terminated array of tokens:
216
- It replaces the comma with a NUL byte, updates *OPTIONP to point past
217
the first option and the comma, sets *VALUEP to the value of the
218
element (or NULL if it doesn't contain an "=" sign),
219
- It returns the index of the "token" in the given array of tokens.
220
Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
221
For more details see the POSIX:2001 specification.
222
http://www.opengroup.org/susv3xsh/getsubopt.html */
223
# if !@HAVE_GETSUBOPT@
224
_GL_FUNCDECL_SYS (getsubopt, int,
225
(char **optionp, char *const *tokens, char **valuep)
226
_GL_ARG_NONNULL ((1, 2, 3)));
228
_GL_CXXALIAS_SYS (getsubopt, int,
229
(char **optionp, char *const *tokens, char **valuep));
230
_GL_CXXALIASWARN (getsubopt);
231
#elif defined GNULIB_POSIXCHECK
233
# if HAVE_RAW_DECL_GETSUBOPT
234
_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
235
"use gnulib module getsubopt for portability");
240
/* Change the ownership and access permission of the slave side of the
241
pseudo-terminal whose master side is specified by FD. */
243
_GL_FUNCDECL_SYS (grantpt, int, (int fd));
245
_GL_CXXALIAS_SYS (grantpt, int, (int fd));
246
_GL_CXXALIASWARN (grantpt);
247
#elif defined GNULIB_POSIXCHECK
249
# if HAVE_RAW_DECL_GRANTPT
250
_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
251
"use gnulib module grantpt for portability");
255
/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
256
rely on GNU or POSIX semantics for malloc and realloc (for example,
257
by never specifying a zero size), so it does not need malloc or
258
realloc to be redefined. */
259
#if @GNULIB_MALLOC_POSIX@
260
# if @REPLACE_MALLOC@
261
# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
262
|| _GL_USE_STDLIB_ALLOC)
264
# define malloc rpl_malloc
266
_GL_FUNCDECL_RPL (malloc, void *, (size_t size));
267
_GL_CXXALIAS_RPL (malloc, void *, (size_t size));
269
_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
271
_GL_CXXALIASWARN (malloc);
272
#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
274
/* Assume malloc is always declared. */
275
_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
276
"use gnulib module malloc-posix for portability");
279
/* Convert a multibyte character to a wide character. */
281
# if @REPLACE_MBTOWC@
282
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
284
# define mbtowc rpl_mbtowc
286
_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
287
_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
289
_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
291
_GL_CXXALIASWARN (mbtowc);
295
/* Create a unique temporary directory from TEMPLATE.
296
The last six characters of TEMPLATE must be "XXXXXX";
297
they are replaced with a string that makes the directory name unique.
298
Returns TEMPLATE, or a null pointer if it cannot get a unique name.
299
The directory is created mode 700. */
301
_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1)));
303
_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/));
304
_GL_CXXALIASWARN (mkdtemp);
305
#elif defined GNULIB_POSIXCHECK
307
# if HAVE_RAW_DECL_MKDTEMP
308
_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
309
"use gnulib module mkdtemp for portability");
313
#if @GNULIB_MKOSTEMP@
314
/* Create a unique temporary file from TEMPLATE.
315
The last six characters of TEMPLATE must be "XXXXXX";
316
they are replaced with a string that makes the file name unique.
317
The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
318
and O_TEXT, O_BINARY (defined in "binary-io.h").
319
The file is then created, with the specified flags, ensuring it didn't exist
321
The file is created read-write (mask at least 0600 & ~umask), but it may be
322
world-readable and world-writable (mask 0666 & ~umask), depending on the
324
Returns the open file descriptor if successful, otherwise -1 and errno
326
# if !@HAVE_MKOSTEMP@
327
_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
328
_GL_ARG_NONNULL ((1)));
330
_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
331
_GL_CXXALIASWARN (mkostemp);
332
#elif defined GNULIB_POSIXCHECK
334
# if HAVE_RAW_DECL_MKOSTEMP
335
_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
336
"use gnulib module mkostemp for portability");
340
#if @GNULIB_MKOSTEMPS@
341
/* Create a unique temporary file from TEMPLATE.
342
The last six characters of TEMPLATE before a suffix of length
343
SUFFIXLEN must be "XXXXXX";
344
they are replaced with a string that makes the file name unique.
345
The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
346
and O_TEXT, O_BINARY (defined in "binary-io.h").
347
The file is then created, with the specified flags, ensuring it didn't exist
349
The file is created read-write (mask at least 0600 & ~umask), but it may be
350
world-readable and world-writable (mask 0666 & ~umask), depending on the
352
Returns the open file descriptor if successful, otherwise -1 and errno
354
# if !@HAVE_MKOSTEMPS@
355
_GL_FUNCDECL_SYS (mkostemps, int,
356
(char * /*template*/, int /*suffixlen*/, int /*flags*/)
357
_GL_ARG_NONNULL ((1)));
359
_GL_CXXALIAS_SYS (mkostemps, int,
360
(char * /*template*/, int /*suffixlen*/, int /*flags*/));
361
_GL_CXXALIASWARN (mkostemps);
362
#elif defined GNULIB_POSIXCHECK
364
# if HAVE_RAW_DECL_MKOSTEMPS
365
_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
366
"use gnulib module mkostemps for portability");
371
/* Create a unique temporary file from TEMPLATE.
372
The last six characters of TEMPLATE must be "XXXXXX";
373
they are replaced with a string that makes the file name unique.
374
The file is then created, ensuring it didn't exist before.
375
The file is created read-write (mask at least 0600 & ~umask), but it may be
376
world-readable and world-writable (mask 0666 & ~umask), depending on the
378
Returns the open file descriptor if successful, otherwise -1 and errno
380
# if @REPLACE_MKSTEMP@
381
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
382
# define mkstemp rpl_mkstemp
384
_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
385
_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
387
# if ! @HAVE_MKSTEMP@
388
_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
390
_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
392
_GL_CXXALIASWARN (mkstemp);
393
#elif defined GNULIB_POSIXCHECK
395
# if HAVE_RAW_DECL_MKSTEMP
396
_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - "
397
"use gnulib module mkstemp for portability");
401
#if @GNULIB_MKSTEMPS@
402
/* Create a unique temporary file from TEMPLATE.
403
The last six characters of TEMPLATE prior to a suffix of length
404
SUFFIXLEN must be "XXXXXX";
405
they are replaced with a string that makes the file name unique.
406
The file is then created, ensuring it didn't exist before.
407
The file is created read-write (mask at least 0600 & ~umask), but it may be
408
world-readable and world-writable (mask 0666 & ~umask), depending on the
410
Returns the open file descriptor if successful, otherwise -1 and errno
412
# if !@HAVE_MKSTEMPS@
413
_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)
414
_GL_ARG_NONNULL ((1)));
416
_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/));
417
_GL_CXXALIASWARN (mkstemps);
418
#elif defined GNULIB_POSIXCHECK
420
# if HAVE_RAW_DECL_MKSTEMPS
421
_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
422
"use gnulib module mkstemps for portability");
426
#if @GNULIB_POSIX_OPENPT@
427
/* Return an FD open to the master side of a pseudo-terminal. Flags should
428
include O_RDWR, and may also include O_NOCTTY. */
429
# if !@HAVE_POSIX_OPENPT@
430
_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
432
_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
433
_GL_CXXALIASWARN (posix_openpt);
434
#elif defined GNULIB_POSIXCHECK
436
# if HAVE_RAW_DECL_POSIX_OPENPT
437
_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
438
"use gnulib module posix_openpt for portability");
443
/* Return the pathname of the pseudo-terminal slave associated with
444
the master FD is open on, or NULL on errors. */
446
_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
448
_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
449
_GL_CXXALIASWARN (ptsname);
450
#elif defined GNULIB_POSIXCHECK
452
# if HAVE_RAW_DECL_PTSNAME
453
_GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
454
"use gnulib module ptsname for portability");
458
#if @GNULIB_PTSNAME_R@
459
/* Set the pathname of the pseudo-terminal slave associated with
460
the master FD is open on and return 0, or set errno and return
461
non-zero on errors. */
462
# if @REPLACE_PTSNAME_R@
463
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
465
# define ptsname_r rpl_ptsname_r
467
_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
468
_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
470
# if !@HAVE_PTSNAME_R@
471
_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
473
_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
475
_GL_CXXALIASWARN (ptsname_r);
476
#elif defined GNULIB_POSIXCHECK
478
# if HAVE_RAW_DECL_PTSNAME_R
479
_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
480
"use gnulib module ptsname_r for portability");
485
# if @REPLACE_PUTENV@
486
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
488
# define putenv rpl_putenv
490
_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1)));
491
_GL_CXXALIAS_RPL (putenv, int, (char *string));
493
_GL_CXXALIAS_SYS (putenv, int, (char *string));
495
_GL_CXXALIASWARN (putenv);
499
#if @GNULIB_RANDOM_R@
500
# if !@HAVE_RANDOM_R@
502
# define RAND_MAX 2147483647
507
#if @GNULIB_RANDOM_R@
508
# if !@HAVE_RANDOM_R@
509
_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
510
_GL_ARG_NONNULL ((1, 2)));
512
_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result));
513
_GL_CXXALIASWARN (random_r);
514
#elif defined GNULIB_POSIXCHECK
516
# if HAVE_RAW_DECL_RANDOM_R
517
_GL_WARN_ON_USE (random_r, "random_r is unportable - "
518
"use gnulib module random_r for portability");
522
#if @GNULIB_RANDOM_R@
523
# if !@HAVE_RANDOM_R@
524
_GL_FUNCDECL_SYS (srandom_r, int,
525
(unsigned int seed, struct random_data *rand_state)
526
_GL_ARG_NONNULL ((2)));
528
_GL_CXXALIAS_SYS (srandom_r, int,
529
(unsigned int seed, struct random_data *rand_state));
530
_GL_CXXALIASWARN (srandom_r);
531
#elif defined GNULIB_POSIXCHECK
533
# if HAVE_RAW_DECL_SRANDOM_R
534
_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
535
"use gnulib module random_r for portability");
539
#if @GNULIB_RANDOM_R@
540
# if !@HAVE_RANDOM_R@
541
_GL_FUNCDECL_SYS (initstate_r, int,
542
(unsigned int seed, char *buf, size_t buf_size,
543
struct random_data *rand_state)
544
_GL_ARG_NONNULL ((2, 4)));
546
_GL_CXXALIAS_SYS (initstate_r, int,
547
(unsigned int seed, char *buf, size_t buf_size,
548
struct random_data *rand_state));
549
_GL_CXXALIASWARN (initstate_r);
550
#elif defined GNULIB_POSIXCHECK
552
# if HAVE_RAW_DECL_INITSTATE_R
553
_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
554
"use gnulib module random_r for portability");
558
#if @GNULIB_RANDOM_R@
559
# if !@HAVE_RANDOM_R@
560
_GL_FUNCDECL_SYS (setstate_r, int,
561
(char *arg_state, struct random_data *rand_state)
562
_GL_ARG_NONNULL ((1, 2)));
564
_GL_CXXALIAS_SYS (setstate_r, int,
565
(char *arg_state, struct random_data *rand_state));
566
_GL_CXXALIASWARN (setstate_r);
567
#elif defined GNULIB_POSIXCHECK
569
# if HAVE_RAW_DECL_SETSTATE_R
570
_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
571
"use gnulib module random_r for portability");
576
#if @GNULIB_REALLOC_POSIX@
577
# if @REPLACE_REALLOC@
578
# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
579
|| _GL_USE_STDLIB_ALLOC)
581
# define realloc rpl_realloc
583
_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
584
_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
586
_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
588
_GL_CXXALIASWARN (realloc);
589
#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
591
/* Assume realloc is always declared. */
592
_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
593
"use gnulib module realloc-posix for portability");
596
#if @GNULIB_REALPATH@
597
# if @REPLACE_REALPATH@
598
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
599
# define realpath rpl_realpath
601
_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved)
602
_GL_ARG_NONNULL ((1)));
603
_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved));
605
# if !@HAVE_REALPATH@
606
_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved)
607
_GL_ARG_NONNULL ((1)));
609
_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved));
611
_GL_CXXALIASWARN (realpath);
612
#elif defined GNULIB_POSIXCHECK
614
# if HAVE_RAW_DECL_REALPATH
615
_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module "
616
"canonicalize or canonicalize-lgpl for portability");
621
/* Test a user response to a question.
622
Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */
624
_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1)));
626
_GL_CXXALIAS_SYS (rpmatch, int, (const char *response));
627
_GL_CXXALIASWARN (rpmatch);
628
#elif defined GNULIB_POSIXCHECK
630
# if HAVE_RAW_DECL_RPMATCH
631
_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
632
"use gnulib module rpmatch for portability");
637
/* Set NAME to VALUE in the environment.
638
If REPLACE is nonzero, overwrite an existing value. */
639
# if @REPLACE_SETENV@
640
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
642
# define setenv rpl_setenv
644
_GL_FUNCDECL_RPL (setenv, int,
645
(const char *name, const char *value, int replace)
646
_GL_ARG_NONNULL ((1)));
647
_GL_CXXALIAS_RPL (setenv, int,
648
(const char *name, const char *value, int replace));
650
# if !@HAVE_DECL_SETENV@
651
_GL_FUNCDECL_SYS (setenv, int,
652
(const char *name, const char *value, int replace)
653
_GL_ARG_NONNULL ((1)));
655
_GL_CXXALIAS_SYS (setenv, int,
656
(const char *name, const char *value, int replace));
658
# if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@)
659
_GL_CXXALIASWARN (setenv);
661
#elif defined GNULIB_POSIXCHECK
663
# if HAVE_RAW_DECL_SETENV
664
_GL_WARN_ON_USE (setenv, "setenv is unportable - "
665
"use gnulib module setenv for portability");
670
/* Parse a double from STRING, updating ENDP if appropriate. */
671
# if @REPLACE_STRTOD@
672
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
673
# define strtod rpl_strtod
675
_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp)
676
_GL_ARG_NONNULL ((1)));
677
_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp));
680
_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp)
681
_GL_ARG_NONNULL ((1)));
683
_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp));
685
_GL_CXXALIASWARN (strtod);
686
#elif defined GNULIB_POSIXCHECK
688
# if HAVE_RAW_DECL_STRTOD
689
_GL_WARN_ON_USE (strtod, "strtod is unportable - "
690
"use gnulib module strtod for portability");
695
/* Parse a signed integer whose textual representation starts at STRING.
696
The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
697
it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
699
If ENDPTR is not NULL, the address of the first byte after the integer is
701
Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
704
_GL_FUNCDECL_SYS (strtoll, long long,
705
(const char *string, char **endptr, int base)
706
_GL_ARG_NONNULL ((1)));
708
_GL_CXXALIAS_SYS (strtoll, long long,
709
(const char *string, char **endptr, int base));
710
_GL_CXXALIASWARN (strtoll);
711
#elif defined GNULIB_POSIXCHECK
713
# if HAVE_RAW_DECL_STRTOLL
714
_GL_WARN_ON_USE (strtoll, "strtoll is unportable - "
715
"use gnulib module strtoll for portability");
719
#if @GNULIB_STRTOULL@
720
/* Parse an unsigned integer whose textual representation starts at STRING.
721
The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
722
it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
724
If ENDPTR is not NULL, the address of the first byte after the integer is
726
Upon overflow, the return value is ULLONG_MAX, and errno is set to
728
# if !@HAVE_STRTOULL@
729
_GL_FUNCDECL_SYS (strtoull, unsigned long long,
730
(const char *string, char **endptr, int base)
731
_GL_ARG_NONNULL ((1)));
733
_GL_CXXALIAS_SYS (strtoull, unsigned long long,
734
(const char *string, char **endptr, int base));
735
_GL_CXXALIASWARN (strtoull);
736
#elif defined GNULIB_POSIXCHECK
738
# if HAVE_RAW_DECL_STRTOULL
739
_GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
740
"use gnulib module strtoull for portability");
744
#if @GNULIB_UNLOCKPT@
745
/* Unlock the slave side of the pseudo-terminal whose master side is specified
746
by FD, so that it can be opened. */
747
# if !@HAVE_UNLOCKPT@
748
_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
750
_GL_CXXALIAS_SYS (unlockpt, int, (int fd));
751
_GL_CXXALIASWARN (unlockpt);
752
#elif defined GNULIB_POSIXCHECK
754
# if HAVE_RAW_DECL_UNLOCKPT
755
_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
756
"use gnulib module unlockpt for portability");
760
#if @GNULIB_UNSETENV@
761
/* Remove the variable NAME from the environment. */
762
# if @REPLACE_UNSETENV@
763
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
765
# define unsetenv rpl_unsetenv
767
_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
768
_GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
770
# if !@HAVE_DECL_UNSETENV@
771
_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
773
_GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
775
# if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@)
776
_GL_CXXALIASWARN (unsetenv);
778
#elif defined GNULIB_POSIXCHECK
780
# if HAVE_RAW_DECL_UNSETENV
781
_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
782
"use gnulib module unsetenv for portability");
786
/* Convert a wide character to a multibyte character. */
788
# if @REPLACE_WCTOMB@
789
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
791
# define wctomb rpl_wctomb
793
_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
794
_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
796
_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
798
_GL_CXXALIASWARN (wctomb);
802
#endif /* _@GUARD_PREFIX@_STDLIB_H */
803
#endif /* _@GUARD_PREFIX@_STDLIB_H */