1/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ 2/* A GNU-like <stdlib.h>. 3 4 Copyright (C) 1995, 2001-2002, 2006-2007 Free Software Foundation, Inc. 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 18 19#if defined __need_malloc_and_calloc 20/* Special invocation convention inside glibc header files. */ 21 22#include_next <stdlib.h> 23 24#else 25/* Normal invocation convention. */ 26 27#ifndef _GL_STDLIB_H 28 29/* The include_next requires a split double-inclusion guard. */ 30#include_next <stdlib.h> 31 32#ifndef _GL_STDLIB_H 33#define _GL_STDLIB_H 34 35 36/* The definition of GL_LINK_WARNING is copied here. */ 37/* GL_LINK_WARNING("literal string") arranges to emit the literal string as 38 a linker warning on most glibc systems. 39 We use a linker warning rather than a preprocessor warning, because 40 #warning cannot be used inside macros. */ 41#ifndef GL_LINK_WARNING 42 /* This works on platforms with GNU ld and ELF object format. 43 Testing __GLIBC__ is sufficient for asserting that GNU ld is in use. 44 Testing __ELF__ guarantees the ELF object format. 45 Testing __GNUC__ is necessary for the compound expression syntax. */ 46# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__ 47# define GL_LINK_WARNING(message) \ 48 GL_LINK_WARNING1 (__FILE__, __LINE__, message) 49# define GL_LINK_WARNING1(file, line, message) \ 50 GL_LINK_WARNING2 (file, line, message) /* macroexpand file and line */ 51# define GL_LINK_WARNING2(file, line, message) \ 52 GL_LINK_WARNING3 (file ":" #line ": warning: " message) 53# define GL_LINK_WARNING3(message) \ 54 ({ static const char warning[sizeof (message)] \ 55 __attribute__ ((__unused__, \ 56 __section__ (".gnu.warning"), \ 57 __aligned__ (1))) \ 58 = message "\n"; \ 59 (void)0; \ 60 }) 61# else 62# define GL_LINK_WARNING(message) ((void) 0) 63# endif 64#endif 65 66 67/* Some systems do not define EXIT_*, despite otherwise supporting C89. */ 68#ifndef EXIT_SUCCESS 69# define EXIT_SUCCESS 0 70#endif 71/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere 72 with proper operation of xargs. */ 73#ifndef EXIT_FAILURE 74# define EXIT_FAILURE 1 75#elif EXIT_FAILURE != 1 76# undef EXIT_FAILURE 77# define EXIT_FAILURE 1 78#endif 79 80 81#ifdef __cplusplus 82extern "C" { 83#endif 84 85 86#if 1 87# if !1 88# undef malloc 89# define malloc rpl_malloc 90extern void * malloc (size_t size); 91# endif 92#elif defined GNULIB_POSIXCHECK 93# undef malloc 94# define malloc(s) \ 95 (GL_LINK_WARNING ("malloc is not POSIX compliant everywhere - " \ 96 "use gnulib module malloc-posix for portability"), \ 97 malloc (s)) 98#endif 99 100 101#if 1 102# if !1 103# undef realloc 104# define realloc rpl_realloc 105extern void * realloc (void *ptr, size_t size); 106# endif 107#elif defined GNULIB_POSIXCHECK 108# undef realloc 109# define realloc(p,s) \ 110 (GL_LINK_WARNING ("realloc is not POSIX compliant everywhere - " \ 111 "use gnulib module realloc-posix for portability"), \ 112 realloc (p, s)) 113#endif 114 115 116#if 0 117# if !1 118# undef calloc 119# define calloc rpl_calloc 120extern void * calloc (size_t nmemb, size_t size); 121# endif 122#elif defined GNULIB_POSIXCHECK 123# undef calloc 124# define calloc(n,s) \ 125 (GL_LINK_WARNING ("calloc is not POSIX compliant everywhere - " \ 126 "use gnulib module calloc-posix for portability"), \ 127 calloc (n, s)) 128#endif 129 130 131#if 0 132/* Assuming *OPTIONP is a comma separated list of elements of the form 133 "token" or "token=value", getsubopt parses the first of these elements. 134 If the first element refers to a "token" that is member of the given 135 NULL-terminated array of tokens: 136 - It replaces the comma with a NUL byte, updates *OPTIONP to point past 137 the first option and the comma, sets *VALUEP to the value of the 138 element (or NULL if it doesn't contain an "=" sign), 139 - It returns the index of the "token" in the given array of tokens. 140 Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. 141 For more details see the POSIX:2001 specification. 142 http://www.opengroup.org/susv3xsh/getsubopt.html */ 143# if !1 144extern int getsubopt (char **optionp, char *const *tokens, char **valuep); 145# endif 146#elif defined GNULIB_POSIXCHECK 147# undef getsubopt 148# define getsubopt(o,t,v) \ 149 (GL_LINK_WARNING ("getsubopt is unportable - " \ 150 "use gnulib module getsubopt for portability"), \ 151 getsubopt (o, t, v)) 152#endif 153 154 155#if 0 156# if !1 157/* Create a unique temporary directory from TEMPLATE. 158 The last six characters of TEMPLATE must be "XXXXXX"; 159 they are replaced with a string that makes the directory name unique. 160 Returns TEMPLATE, or a null pointer if it cannot get a unique name. 161 The directory is created mode 700. */ 162extern char * mkdtemp (char * /*template*/); 163# endif 164#elif defined GNULIB_POSIXCHECK 165# undef mkdtemp 166# define mkdtemp(t) \ 167 (GL_LINK_WARNING ("mkdtemp is unportable - " \ 168 "use gnulib module mkdtemp for portability"), \ 169 mkdtemp (t)) 170#endif 171 172 173#if 0 174# if 0 175/* Create a unique temporary file from TEMPLATE. 176 The last six characters of TEMPLATE must be "XXXXXX"; 177 they are replaced with a string that makes the file name unique. 178 The file is then created, ensuring it didn't exist before. 179 The file is created read-write (mask at least 0600 & ~umask), but it may be 180 world-readable and world-writable (mask 0666 & ~umask), depending on the 181 implementation. 182 Returns the open file descriptor if successful, otherwise -1 and errno 183 set. */ 184# define mkstemp rpl_mkstemp 185extern int mkstemp (char * /*template*/); 186# else 187/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */ 188# include <unistd.h> 189# endif 190#elif defined GNULIB_POSIXCHECK 191# undef mkstemp 192# define mkstemp(t) \ 193 (GL_LINK_WARNING ("mkstemp is unportable - " \ 194 "use gnulib module mkstemp for portability"), \ 195 mkstemp (t)) 196#endif 197 198 199#if 0 200# if 0 201# undef putenv 202# define putenv rpl_putenv 203extern int putenv (char *string); 204# endif 205#endif 206 207 208#ifdef __cplusplus 209} 210#endif 211 212#endif /* _GL_STDLIB_H */ 213#endif /* _GL_STDLIB_H */ 214#endif 215