1/* A GNU-like <stdlib.h>. 2 3 Copyright (C) 1995, 2001-2002, 2006-2007 Free Software Foundation, Inc. 4 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. 9 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. 14 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. */ 18 19#if defined __need_malloc_and_calloc 20/* Special invocation convention inside glibc header files. */ 21 22#if @HAVE_INCLUDE_NEXT@ 23# include_next <stdlib.h> 24#else 25# include @ABSOLUTE_STDLIB_H@ 26#endif 27 28#else 29/* Normal invocation convention. */ 30 31#ifndef _GL_STDLIB_H 32 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 39 40#ifndef _GL_STDLIB_H 41#define _GL_STDLIB_H 42 43 44/* The definition of GL_LINK_WARNING is copied here. */ 45 46 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 59 60 61#ifdef __cplusplus 62extern "C" { 63#endif 64 65 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@ 79extern 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 88 89 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. */ 97extern 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 106 107 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 120extern 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 132 133 134#ifdef __cplusplus 135} 136#endif 137 138#endif /* _GL_STDLIB_H */ 139#endif /* _GL_STDLIB_H */ 140#endif 141