Change GPLv2+ to GPLv3+.
[shishi.git] / gl / stdlib_.h
blob130f071a54a20dcc3354232dcef512c808e32707
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)
8 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, 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 #if @HAVE_INCLUDE_NEXT@
23 # include_next <stdlib.h>
24 #else
25 # include @ABSOLUTE_STDLIB_H@
26 #endif
28 #else
29 /* Normal invocation convention. */
31 #ifndef _GL_STDLIB_H
33 /* The include_next requires a split double-inclusion guard. */
34 #if @HAVE_INCLUDE_NEXT@
35 # include_next <stdlib.h>
36 #else
37 # include @ABSOLUTE_STDLIB_H@
38 #endif
40 #ifndef _GL_STDLIB_H
41 #define _GL_STDLIB_H
44 /* The definition of GL_LINK_WARNING is copied here. */
47 /* Some systems do not define EXIT_*, despite otherwise supporting C89. */
48 #ifndef EXIT_SUCCESS
49 # define EXIT_SUCCESS 0
50 #endif
51 /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
52 with proper operation of xargs. */
53 #ifndef EXIT_FAILURE
54 # define EXIT_FAILURE 1
55 #elif EXIT_FAILURE != 1
56 # undef EXIT_FAILURE
57 # define EXIT_FAILURE 1
58 #endif
61 #ifdef __cplusplus
62 extern "C" {
63 #endif
66 #if @GNULIB_GETSUBOPT@
67 /* Assuming *OPTIONP is a comma separated list of elements of the form
68 "token" or "token=value", getsubopt parses the first of these elements.
69 If the first element refers to a "token" that is member of the given
70 NULL-terminated array of tokens:
71 - It replaces the comma with a NUL byte, updates *OPTIONP to point past
72 the first option and the comma, sets *VALUEP to the value of the
73 element (or NULL if it doesn't contain an "=" sign),
74 - It returns the index of the "token" in the given array of tokens.
75 Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
76 For more details see the POSIX:2001 specification.
77 http://www.opengroup.org/susv3xsh/getsubopt.html */
78 # if !@HAVE_GETSUBOPT@
79 extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
80 # endif
81 #elif defined GNULIB_POSIXCHECK
82 # undef getsubopt
83 # define getsubopt(o,t,v) \
84 (GL_LINK_WARNING ("getsubopt is unportable - " \
85 "use gnulib module getsubopt for portability"), \
86 getsubopt (o, t, v))
87 #endif
90 #if @GNULIB_MKDTEMP@
91 # if !@HAVE_MKDTEMP@
92 /* Create a unique temporary directory from TEMPLATE.
93 The last six characters of TEMPLATE must be "XXXXXX";
94 they are replaced with a string that makes the directory name unique.
95 Returns TEMPLATE, or a null pointer if it cannot get a unique name.
96 The directory is created mode 700. */
97 extern char * mkdtemp (char * /*template*/);
98 # endif
99 #elif defined GNULIB_POSIXCHECK
100 # undef mkdtemp
101 # define mkdtemp(t) \
102 (GL_LINK_WARNING ("mkdtemp is unportable - " \
103 "use gnulib module mkdtemp for portability"), \
104 mkdtemp (t))
105 #endif
108 #if @GNULIB_MKSTEMP@
109 # if @REPLACE_MKSTEMP@
110 /* Create a unique temporary file from TEMPLATE.
111 The last six characters of TEMPLATE must be "XXXXXX";
112 they are replaced with a string that makes the file name unique.
113 The file is then created, ensuring it didn't exist before.
114 The file is created read-write (mask at least 0600 & ~umask), but it may be
115 world-readable and world-writable (mask 0666 & ~umask), depending on the
116 implementation.
117 Returns the open file descriptor if successful, otherwise -1 and errno
118 set. */
119 # define mkstemp rpl_mkstemp
120 extern int mkstemp (char * /*template*/);
121 # else
122 /* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
123 # include <unistd.h>
124 # endif
125 #elif defined GNULIB_POSIXCHECK
126 # undef mkstemp
127 # define mkstemp(t) \
128 (GL_LINK_WARNING ("mkstemp is unportable - " \
129 "use gnulib module mkstemp for portability"), \
130 mkstemp (t))
131 #endif
134 #ifdef __cplusplus
136 #endif
138 #endif /* _GL_STDLIB_H */
139 #endif /* _GL_STDLIB_H */
140 #endif