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 
    19 
    20 #if defined(__EXTENSIONS__) || \
    21 	(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))
    22 #include 
    23 #endif
    24 
    25 /*
    26  * Allow global visibility for symbols defined in
    27  * C++ "std" namespace in .
    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;  <typedef: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) */  <typedef:uid_t>
    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 */