1
/* A GNU-like <stdlib.h>.
3
Copyright (C) 1995, 2001-2002, 2006-2007 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 2, or (at your option)
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, write to the Free Software Foundation,
17
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
19
#if defined __need_malloc_and_calloc
20
/* Special invocation convention inside glibc header files. */
22
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
25
/* Normal invocation convention. */
29
/* The include_next requires a split double-inclusion guard. */
30
#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
36
/* The definition of GL_LINK_WARNING is copied here. */
39
/* Some systems do not define EXIT_*, despite otherwise supporting C89. */
41
# define EXIT_SUCCESS 0
43
/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
44
with proper operation of xargs. */
46
# define EXIT_FAILURE 1
47
#elif EXIT_FAILURE != 1
49
# define EXIT_FAILURE 1
58
#if @GNULIB_MALLOC_POSIX@
59
# if !@HAVE_MALLOC_POSIX@
61
# define malloc rpl_malloc
62
extern void * malloc (size_t size);
64
#elif defined GNULIB_POSIXCHECK
67
(GL_LINK_WARNING ("malloc is not POSIX compliant everywhere - " \
68
"use gnulib module malloc-posix for portability"), \
73
#if @GNULIB_REALLOC_POSIX@
74
# if !@HAVE_REALLOC_POSIX@
76
# define realloc rpl_realloc
77
extern void * realloc (void *ptr, size_t size);
79
#elif defined GNULIB_POSIXCHECK
81
# define realloc(p,s) \
82
(GL_LINK_WARNING ("realloc is not POSIX compliant everywhere - " \
83
"use gnulib module realloc-posix for portability"), \
88
#if @GNULIB_CALLOC_POSIX@
89
# if !@HAVE_CALLOC_POSIX@
91
# define calloc rpl_calloc
92
extern void * calloc (size_t nmemb, size_t size);
94
#elif defined GNULIB_POSIXCHECK
96
# define calloc(n,s) \
97
(GL_LINK_WARNING ("calloc is not POSIX compliant everywhere - " \
98
"use gnulib module calloc-posix for portability"), \
103
#if @GNULIB_GETSUBOPT@
104
/* Assuming *OPTIONP is a comma separated list of elements of the form
105
"token" or "token=value", getsubopt parses the first of these elements.
106
If the first element refers to a "token" that is member of the given
107
NULL-terminated array of tokens:
108
- It replaces the comma with a NUL byte, updates *OPTIONP to point past
109
the first option and the comma, sets *VALUEP to the value of the
110
element (or NULL if it doesn't contain an "=" sign),
111
- It returns the index of the "token" in the given array of tokens.
112
Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
113
For more details see the POSIX:2001 specification.
114
http://www.opengroup.org/susv3xsh/getsubopt.html */
115
# if !@HAVE_GETSUBOPT@
116
extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
118
#elif defined GNULIB_POSIXCHECK
120
# define getsubopt(o,t,v) \
121
(GL_LINK_WARNING ("getsubopt is unportable - " \
122
"use gnulib module getsubopt for portability"), \
129
/* Create a unique temporary directory from TEMPLATE.
130
The last six characters of TEMPLATE must be "XXXXXX";
131
they are replaced with a string that makes the directory name unique.
132
Returns TEMPLATE, or a null pointer if it cannot get a unique name.
133
The directory is created mode 700. */
134
extern char * mkdtemp (char * /*template*/);
136
#elif defined GNULIB_POSIXCHECK
138
# define mkdtemp(t) \
139
(GL_LINK_WARNING ("mkdtemp is unportable - " \
140
"use gnulib module mkdtemp for portability"), \
146
# if @REPLACE_MKSTEMP@
147
/* Create a unique temporary file from TEMPLATE.
148
The last six characters of TEMPLATE must be "XXXXXX";
149
they are replaced with a string that makes the file name unique.
150
The file is then created, ensuring it didn't exist before.
151
The file is created read-write (mask at least 0600 & ~umask), but it may be
152
world-readable and world-writable (mask 0666 & ~umask), depending on the
154
Returns the open file descriptor if successful, otherwise -1 and errno
156
# define mkstemp rpl_mkstemp
157
extern int mkstemp (char * /*template*/);
159
/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
162
#elif defined GNULIB_POSIXCHECK
164
# define mkstemp(t) \
165
(GL_LINK_WARNING ("mkstemp is unportable - " \
166
"use gnulib module mkstemp for portability"), \
175
#endif /* _GL_STDLIB_H */
176
#endif /* _GL_STDLIB_H */