/usr/include/stdlib.h


    1 /*
    2  * Copyright (c) 1996-1999, by Sun Microsystems, Inc.
    3  * All Rights reserved.
    4  */
    5 
    6 /*	Copyright (c) 1988 AT&T	*/
    7 /*	  All Rights Reserved  	*/
    8 
    9 /*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*/
   10 /*	The copyright notice above does not evidence any   	*/
   11 /*	actual or intended publication of such source code.	*/
   12 
   13 #ifndef _STDLIB_H
   14 #define	_STDLIB_H
   15 
   16 #pragma ident	"@(#)stdlib.h	1.47	99/11/03 SMI"	/* SVr4.0 1.22	*/
   17 
   18 #include <iso/stdlib_iso.h>
   19 
   20 #if defined(__EXTENSIONS__) || \
   21 	(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))
   22 #include <sys/wait.h>
   23 #endif
   24 
   25 /*
   26  * Allow global visibility for symbols defined in
   27  * C++ "std" namespace in <iso/stdlib_iso.h>.
   28  */
   29 #if __cplusplus >= 199711L
   30 using std::div_t;
   31 using std::ldiv_t;
   32 using std::size_t;
   33 using std::abort;
   34 using std::abs;
   35 using std::atexit;
   36 using std::atof;
   37 using std::atoi;
   38 using std::atol;
   39 using std::bsearch;
   40 using std::calloc;
   41 using std::div;
   42 using std::exit;
   43 using std::free;
   44 using std::getenv;
   45 using std::labs;
   46 using std::ldiv;
   47 using std::malloc;
   48 using std::mblen;
   49 using std::mbstowcs;
   50 using std::mbtowc;
   51 using std::qsort;
   52 using std::rand;
   53 using std::realloc;
   54 using std::srand;
   55 using std::strtod;
   56 using std::strtol;
   57 using std::strtoul;
   58 using std::system;
   59 using std::wcstombs;
   60 using std::wctomb;
   61 #endif
   62 
   63 #ifdef	__cplusplus
   64 extern "C" {
   65 #endif
   66 
   67 #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
   68 typedef struct {
   69 	long long	quot;
   70 	long long	rem;
   71 } lldiv_t;
   72 #endif	/* __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) */
   73 
   74 #ifndef _UID_T
   75 #define	_UID_T
   76 #if defined(_LP64) || defined(_I32LPx)
   77 typedef	int	uid_t;			/* UID type		*/
   78 #else
   79 typedef long	uid_t;			/* (historical version) */
   80 #endif
   81 #endif	/* !_UID_T */
   82 
   83 #if defined(__STDC__)
   84 
   85 /* large file compilation environment setup */
   86 #if !defined(_LP64) && _FILE_OFFSET_BITS == 64
   87 
   88 #ifdef	__PRAGMA_REDEFINE_EXTNAME
   89 #pragma redefine_extname	mkstemp		mkstemp64
   90 #else	/* __PRAGMA_REDEFINE_EXTNAME */
   91 #define	mkstemp			mkstemp64
   92 #endif	/* __PRAGMA_REDEFINE_EXTNAME */
   93 
   94 #endif	/* _FILE_OFFSET_BITS == 64 */
   95 
   96 /* In the LP64 compilation environment, all APIs are already large file */
   97 #if defined(_LP64) && defined(_LARGEFILE64_SOURCE)
   98 
   99 #ifdef	__PRAGMA_REDEFINE_EXTNAME
  100 #pragma redefine_extname	mkstemp64	mkstemp
  101 #else	/* __PRAGMA_REDEFINE_EXTNAME */
  102 #define	mkstemp64		mkstemp
  103 #endif	/* __PRAGMA_REDEFINE_EXTNAME */
  104 
  105 #endif	/* _LP64 && _LARGEFILE64_SOURCE */
  106 
  107 #if defined(__EXTENSIONS__) || defined(_REENTRANT) || \
  108 	(_POSIX_C_SOURCE - 0 >= 199506L)
  109 extern int rand_r(unsigned int *);
  110 #endif	/* defined(__EXTENSIONS__) || defined(_REENTRANT).. */
  111 
  112 extern void _exithandle(void);
  113 
  114 #if defined(__EXTENSIONS__) || \
  115 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE)) || \
  116 	(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))
  117 extern double drand48(void);
  118 extern double erand48(unsigned short *);
  119 extern long jrand48(unsigned short *);
  120 extern void lcong48(unsigned short *);
  121 extern long lrand48(void);
  122 extern long mrand48(void);
  123 extern long nrand48(unsigned short *);
  124 extern unsigned short *seed48(unsigned short *);
  125 extern void srand48(long);
  126 extern int putenv(char *);
  127 extern void setkey(const char *);
  128 #endif /* defined(__EXTENSIONS__) || (__STDC__ == 0 && ... */
  129 
  130 
  131 #if (defined(__EXTENSIONS__) || \
  132 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE))) && \
  133 	((_XOPEN_VERSION - 0 < 4) && (_XOPEN_SOURCE_EXTENDED - 0 < 1))
  134 
  135 #ifndef	_SSIZE_T
  136 #define	_SSIZE_T
  137 #if defined(_LP64) || defined(_I32LPx)
  138 typedef long	ssize_t;	/* size of something in bytes or -1 */
  139 #else
  140 typedef int	ssize_t;	/* (historical version) */
  141 #endif
  142 #endif	/* !_SSIZE_T */
  143 
  144 extern void swab(const char *, char *, ssize_t);
  145 #endif /* defined(__EXTENSIONS__) ||  (__STDC__ == 0 && ... */
  146 
  147 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  148 	defined(_XPG4_2) || defined(__EXTENSIONS__) || \
  149 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64)
  150 extern int	mkstemp(char *);
  151 #endif /* _POSIX_C_SOURCE */
  152 
  153 #if	defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
  154 	    !defined(__PRAGMA_REDEFINE_EXTNAME))
  155 extern int	mkstemp64(char *);
  156 #endif	/* _LARGEFILE64_SOURCE... */
  157 
  158 #if defined(__EXTENSIONS__) || \
  159 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE) && \
  160 	!defined(_XOPEN_SOURCE)) || defined(_XPG4_2)
  161 extern long a64l(const char *);
  162 extern char *ecvt(double, int, int *, int *);
  163 extern char *fcvt(double, int, int *, int *);
  164 extern char *gcvt(double, int, char *);
  165 extern int getsubopt(char **, char *const *, char **);
  166 extern int  grantpt(int);
  167 extern char *initstate(unsigned, char *, size_t);
  168 extern char *l64a(long);
  169 extern char *mktemp(char *);
  170 extern char *ptsname(int);
  171 extern long random(void);
  172 extern char *realpath(const char *, char *);
  173 extern char *setstate(const char *);
  174 extern void srandom(unsigned);
  175 extern int ttyslot(void);
  176 extern int  unlockpt(int);
  177 extern void *valloc(size_t);
  178 #endif /* defined(__EXTENSIONS__) || ... || defined(_XPG4_2) */
  179 
  180 #if defined(__EXTENSIONS__) || \
  181 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))
  182 extern int dup2(int, int);
  183 extern char *qecvt(long double, int, int *, int *);
  184 extern char *qfcvt(long double, int, int *, int *);
  185 extern char *qgcvt(long double, int, char *);
  186 extern char *getcwd(char *, size_t);
  187 extern const char *getexecname(void);
  188 extern char *getlogin(void);
  189 extern int getopt(int, char *const *, const char *);
  190 extern char *optarg;
  191 extern int optind, opterr, optopt;
  192 extern char *getpass(const char *);
  193 extern char *getpassphrase(const char *);
  194 extern int getpw(uid_t, char *);
  195 extern int isatty(int);
  196 extern void *memalign(size_t, size_t);
  197 extern char *ttyname(int);
  198 
  199 #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
  200 extern long long atoll(const char *);
  201 extern long long llabs(long long);
  202 extern lldiv_t lldiv(long long, long long);
  203 extern char *lltostr(long long, char *);
  204 extern long long strtoll(const char *, char **, int);
  205 extern unsigned long long strtoull(const char *, char **, int);
  206 extern char *ulltostr(unsigned long long, char *);
  207 #endif	/* __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) */
  208 
  209 #endif /* defined(__EXTENSIONS__) || (__STDC__ == 0 && ... */
  210 
  211 #else /* not __STDC__ */
  212 
  213 #if defined(__EXTENSIONS__) || defined(_REENTRANT) || \
  214 	(_POSIX_C_SOURCE - 0 >= 199506L)
  215 extern int rand_r();
  216 #endif	/* defined(__EXTENSIONS__) || defined(_REENTRANT).. */
  217 
  218 extern void _exithandle();
  219 
  220 #if defined(__EXTENSIONS__) || \
  221 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE)) || \
  222 	(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))
  223 extern double drand48();
  224 extern double erand48();
  225 extern long jrand48();
  226 extern void lcong48();
  227 extern long lrand48();
  228 extern long mrand48();
  229 extern long nrand48();
  230 extern unsigned short *seed48();
  231 extern void srand48();
  232 extern int putenv();
  233 extern void setkey();
  234 #endif /* defined(__EXTENSIONS__) || (__STDC__ == 0 && ... */
  235 
  236 #if (defined(__EXTENSIONS__) || \
  237 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE))) && \
  238 	((_XOPEN_VERSION - 0 < 4) && (_XOPEN_SOURCE_EXTENDED - 0 < 1))
  239 extern void swab();
  240 #endif
  241 
  242 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  243 	defined(_XPG4_2) || defined(__EXTENSIONS__) || \
  244 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64)
  245 extern int	mkstemp();
  246 #endif	/* _POSIX_C_SOURCE... */
  247 
  248 #if	defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
  249 	    !defined(__PRAGMA_REDEFINE_EXTNAME))
  250 extern int	mkstemp64();
  251 #endif	/* _LARGEFILE64_SOURCE... */
  252 
  253 #if defined(__EXTENSIONS__) || \
  254 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE) && \
  255 	!defined(_XOPEN_SOURCE)) || defined(_XPG4_2)
  256 extern long a64l();
  257 extern char *ecvt();
  258 extern char *fcvt();
  259 extern char *gcvt();
  260 extern int getsubopt();
  261 extern int grantpt();
  262 extern char *initstate();
  263 extern char *l64a();
  264 extern char *mktemp();
  265 extern char *ptsname();
  266 extern long random();
  267 extern char *realpath();
  268 extern char *setstate();
  269 extern void srandom();
  270 extern int ttyslot();
  271 extern void *valloc();
  272 extern int  unlockpt();
  273 #endif /* defined(__EXTENSIONS__) || ... || defined(_XPG4_2) */
  274 
  275 #if defined(__EXTENSIONS__) || \
  276 	(__STDC__ == 0 && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))
  277 extern int dup2();
  278 extern char *qecvt();
  279 extern char *qfcvt();
  280 extern char *qgcvt();
  281 extern char *getcwd();
  282 extern char *getexecname();
  283 extern char *getlogin();
  284 extern int getopt();
  285 extern char *optarg;
  286 extern int optind, opterr, optopt;
  287 extern char *getpass();
  288 extern char *getpassphrase();
  289 extern int getpw();
  290 extern int isatty();
  291 extern void *memalign();
  292 extern char *ttyname();
  293 
  294 #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
  295 extern long long atoll();
  296 extern long long llabs();
  297 extern lldiv_t lldiv();
  298 extern char *lltostr();
  299 extern long long strtoll();
  300 extern unsigned long long strtoull();
  301 extern char *ulltostr();
  302 #endif  /* __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) */
  303 #endif	/* defined(__EXTENSIONS__) || (__STDC__ == 0 && ... */
  304 
  305 #endif	/* __STDC__ */
  306 
  307 #ifdef	__cplusplus
  308 }
  309 #endif
  310 
  311 #endif	/* _STDLIB_H */