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 */