root / lab4 / .minix-src / include / stdlib.h @ 14
History | View | Annotate | Download (11.4 KB)
1 |
/* $NetBSD: stdlib.h,v 1.115 2015/02/17 20:33:40 joerg Exp $ */
|
---|---|
2 |
|
3 |
/*-
|
4 |
* Copyright (c) 1990, 1993
|
5 |
* The Regents of the University of California. All rights reserved.
|
6 |
*
|
7 |
* Redistribution and use in source and binary forms, with or without
|
8 |
* modification, are permitted provided that the following conditions
|
9 |
* are met:
|
10 |
* 1. Redistributions of source code must retain the above copyright
|
11 |
* notice, this list of conditions and the following disclaimer.
|
12 |
* 2. Redistributions in binary form must reproduce the above copyright
|
13 |
* notice, this list of conditions and the following disclaimer in the
|
14 |
* documentation and/or other materials provided with the distribution.
|
15 |
* 3. Neither the name of the University nor the names of its contributors
|
16 |
* may be used to endorse or promote products derived from this software
|
17 |
* without specific prior written permission.
|
18 |
*
|
19 |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
20 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
23 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
24 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
25 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
26 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
27 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
28 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
29 |
* SUCH DAMAGE.
|
30 |
*
|
31 |
* @(#)stdlib.h 8.5 (Berkeley) 5/19/95
|
32 |
*/
|
33 |
|
34 |
#ifndef _STDLIB_H_
|
35 |
#define _STDLIB_H_
|
36 |
|
37 |
#include <sys/cdefs.h> |
38 |
#include <sys/featuretest.h> |
39 |
|
40 |
#if defined(_NETBSD_SOURCE)
|
41 |
#include <sys/types.h> /* for quad_t, etc. */ |
42 |
#endif
|
43 |
|
44 |
#include <machine/ansi.h> |
45 |
|
46 |
#ifdef _BSD_SIZE_T_
|
47 |
typedef _BSD_SIZE_T_ size_t;
|
48 |
#undef _BSD_SIZE_T_
|
49 |
#endif
|
50 |
|
51 |
#if defined(_BSD_WCHAR_T_) && !defined(__cplusplus)
|
52 |
typedef _BSD_WCHAR_T_ wchar_t;
|
53 |
#undef _BSD_WCHAR_T_
|
54 |
#endif
|
55 |
|
56 |
typedef struct { |
57 |
int quot; /* quotient */ |
58 |
int rem; /* remainder */ |
59 |
} div_t; |
60 |
|
61 |
typedef struct { |
62 |
long quot; /* quotient */ |
63 |
long rem; /* remainder */ |
64 |
} ldiv_t; |
65 |
|
66 |
#if !defined(_ANSI_SOURCE) && \
|
67 |
(defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) >= 199901L || \ |
68 |
(__cplusplus - 0) >= 201103L || defined(_NETBSD_SOURCE)) |
69 |
typedef struct { |
70 |
/* LONGLONG */
|
71 |
long long int quot; /* quotient */ |
72 |
/* LONGLONG */
|
73 |
long long int rem; /* remainder */ |
74 |
} lldiv_t; |
75 |
#endif
|
76 |
|
77 |
#if defined(_NETBSD_SOURCE)
|
78 |
typedef struct { |
79 |
quad_t quot; /* quotient */
|
80 |
quad_t rem; /* remainder */
|
81 |
} qdiv_t; |
82 |
#endif
|
83 |
|
84 |
|
85 |
#include <sys/null.h> |
86 |
|
87 |
#define EXIT_FAILURE 1 |
88 |
#define EXIT_SUCCESS 0 |
89 |
|
90 |
#define RAND_MAX 0x7fffffff |
91 |
|
92 |
extern size_t __mb_cur_max;
|
93 |
#define MB_CUR_MAX __mb_cur_max
|
94 |
|
95 |
__BEGIN_DECLS |
96 |
__dead void _Exit(int); |
97 |
__dead void abort(void); |
98 |
__pure int abs(int); |
99 |
int atexit(void (*)(void)); |
100 |
double atof(const char *); |
101 |
int atoi(const char *); |
102 |
long atol(const char *); |
103 |
#ifndef __BSEARCH_DECLARED
|
104 |
#define __BSEARCH_DECLARED
|
105 |
/* also in search.h */
|
106 |
void *bsearch(const void *, const void *, size_t, size_t, |
107 |
int (*)(const void *, const void *)); |
108 |
#endif /* __BSEARCH_DECLARED */ |
109 |
void *calloc(size_t, size_t);
|
110 |
div_t div(int, int); |
111 |
__dead void exit(int); |
112 |
void free(void *); |
113 |
__aconst char *getenv(const char *); |
114 |
__pure long
|
115 |
labs(long);
|
116 |
ldiv_t ldiv(long, long); |
117 |
void *malloc(size_t);
|
118 |
void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); |
119 |
int rand(void); |
120 |
void *realloc(void *, size_t); |
121 |
void srand(unsigned); |
122 |
double strtod(const char * __restrict, char ** __restrict); |
123 |
long strtol(const char * __restrict, char ** __restrict, int); |
124 |
unsigned long |
125 |
strtoul(const char * __restrict, char ** __restrict, int); |
126 |
#ifdef _OPENBSD_SOURCE
|
127 |
long long strtonum(const char *, long long, long long, const char **); |
128 |
void *reallocarray(void *, size_t, size_t); |
129 |
#endif
|
130 |
int system(const char *); |
131 |
|
132 |
/* These are currently just stubs. */
|
133 |
int mblen(const char *, size_t); |
134 |
size_t mbstowcs(wchar_t * __restrict, const char * __restrict, size_t); |
135 |
int wctomb(char *, wchar_t); |
136 |
int mbtowc(wchar_t * __restrict, const char * __restrict, size_t); |
137 |
size_t wcstombs(char * __restrict, const wchar_t * __restrict, size_t); |
138 |
|
139 |
#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
|
140 |
defined(_NETBSD_SOURCE) |
141 |
|
142 |
|
143 |
/*
|
144 |
* IEEE Std 1003.1c-95, also adopted by X/Open CAE Spec Issue 5 Version 2
|
145 |
*/
|
146 |
#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \ |
147 |
defined(_REENTRANT) || defined(_NETBSD_SOURCE) |
148 |
int rand_r(unsigned int *); |
149 |
#endif
|
150 |
|
151 |
|
152 |
/*
|
153 |
* X/Open Portability Guide >= Issue 4
|
154 |
*/
|
155 |
#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
|
156 |
double drand48(void); |
157 |
double erand48(unsigned short[3]); |
158 |
long jrand48(unsigned short[3]); |
159 |
void lcong48(unsigned short[7]); |
160 |
long lrand48(void); |
161 |
long mrand48(void); |
162 |
long nrand48(unsigned short[3]); |
163 |
unsigned short * |
164 |
seed48(unsigned short[3]); |
165 |
void srand48(long); |
166 |
|
167 |
#ifndef __LIBC12_SOURCE__
|
168 |
int putenv(char *) __RENAME(__putenv50); |
169 |
#endif
|
170 |
#endif
|
171 |
|
172 |
|
173 |
/*
|
174 |
* X/Open Portability Guide >= Issue 4 Version 2
|
175 |
*/
|
176 |
#if (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
|
177 |
(_XOPEN_SOURCE - 0) >= 500 || defined(_NETBSD_SOURCE) |
178 |
long a64l(const char *); |
179 |
char *l64a(long); |
180 |
|
181 |
long random(void); |
182 |
char *setstate(char *); |
183 |
#ifndef __LIBC12_SOURCE__
|
184 |
char *initstate(unsigned int, char *, size_t) __RENAME(__initstate60); |
185 |
void srandom(unsigned int) __RENAME(__srandom60); |
186 |
#endif
|
187 |
#ifdef _NETBSD_SOURCE
|
188 |
#define RANDOM_MAX 0x7fffffff /* (((long)1 << 31) - 1) */ |
189 |
int mkostemp(char *, int); |
190 |
int mkostemps(char *, int, int); |
191 |
#endif
|
192 |
|
193 |
char *mkdtemp(char *); |
194 |
int mkstemp(char *); |
195 |
char *mktemp(char *) |
196 |
#ifdef __MKTEMP_OK__
|
197 |
__RENAME(_mktemp) |
198 |
#endif
|
199 |
; |
200 |
|
201 |
int setkey(const char *); |
202 |
|
203 |
char *realpath(const char * __restrict, char * __restrict); |
204 |
|
205 |
int ttyslot(void); |
206 |
|
207 |
void *valloc(size_t); /* obsoleted by malloc() */ |
208 |
|
209 |
int grantpt(int); |
210 |
int unlockpt(int); |
211 |
char *ptsname(int); |
212 |
#endif
|
213 |
|
214 |
/*
|
215 |
* ISO C99
|
216 |
*/
|
217 |
#if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) >= 199901L || \ |
218 |
defined(_NETBSD_SOURCE) || (__cplusplus - 0) >= 201103L |
219 |
|
220 |
/* LONGLONG */
|
221 |
long long int atoll(const char *); |
222 |
/* LONGLONG */
|
223 |
long long int llabs(long long int); |
224 |
/* LONGLONG */
|
225 |
lldiv_t lldiv(long long int, long long int); |
226 |
/* LONGLONG */
|
227 |
long long int strtoll(const char * __restrict, char ** __restrict, int); |
228 |
/* LONGLONG */
|
229 |
unsigned long long int |
230 |
strtoull(const char * __restrict, char ** __restrict, int); |
231 |
float strtof(const char * __restrict, char ** __restrict); |
232 |
long double strtold(const char * __restrict, char ** __restrict); |
233 |
#endif
|
234 |
|
235 |
#if defined(_ISOC11_SOURCE) || (__STDC_VERSION__ - 0) >= 201101L || \ |
236 |
defined(_NETBSD_SOURCE) || (__cplusplus - 0) >= 201103L |
237 |
int at_quick_exit(void (*)(void)); |
238 |
__dead void quick_exit(int); |
239 |
#endif
|
240 |
|
241 |
/*
|
242 |
* The Open Group Base Specifications, Issue 6; IEEE Std 1003.1-2001 (POSIX)
|
243 |
*/
|
244 |
#if (_POSIX_C_SOURCE - 0) >= 200112L || (_XOPEN_SOURCE - 0) >= 600 || \ |
245 |
defined(_NETBSD_SOURCE) |
246 |
int setenv(const char *, const char *, int); |
247 |
#ifndef __LIBC12_SOURCE__
|
248 |
int unsetenv(const char *) __RENAME(__unsetenv13); |
249 |
#endif
|
250 |
|
251 |
int posix_openpt(int); |
252 |
int posix_memalign(void **, size_t, size_t); |
253 |
#endif
|
254 |
|
255 |
/*
|
256 |
* Implementation-defined extensions
|
257 |
*/
|
258 |
#if defined(_NETBSD_SOURCE)
|
259 |
#if defined(alloca) && (alloca == __builtin_alloca) && \
|
260 |
defined(__GNUC__) && (__GNUC__ < 2)
|
261 |
void *alloca(int); /* built-in for gcc */ |
262 |
#elif defined(__PCC__) && !defined(__GNUC__)
|
263 |
#define alloca(size) __builtin_alloca(size)
|
264 |
#else
|
265 |
void *alloca(size_t);
|
266 |
#endif /* __GNUC__ */ |
267 |
|
268 |
uint32_t arc4random(void);
|
269 |
void arc4random_stir(void); |
270 |
void arc4random_buf(void *, size_t); |
271 |
uint32_t arc4random_uniform(uint32_t); |
272 |
void arc4random_addrandom(u_char *, int); |
273 |
char *getbsize(int *, long *); |
274 |
char *cgetcap(char *, const char *, int); |
275 |
int cgetclose(void); |
276 |
int cgetent(char **, const char * const *, const char *); |
277 |
int cgetfirst(char **, const char * const *); |
278 |
int cgetmatch(const char *, const char *); |
279 |
int cgetnext(char **, const char * const *); |
280 |
int cgetnum(char *, const char *, long *); |
281 |
int cgetset(const char *); |
282 |
int cgetstr(char *, const char *, char **); |
283 |
int cgetustr(char *, const char *, char **); |
284 |
void csetexpandtc(int); |
285 |
|
286 |
int daemon(int, int); |
287 |
int devname_r(dev_t, mode_t, char *, size_t); |
288 |
#ifndef __LIBC12_SOURCE__
|
289 |
__aconst char *devname(dev_t, mode_t) __RENAME(__devname50);
|
290 |
#endif
|
291 |
|
292 |
#define HN_DECIMAL 0x01 |
293 |
#define HN_NOSPACE 0x02 |
294 |
#define HN_B 0x04 |
295 |
#define HN_DIVISOR_1000 0x08 |
296 |
|
297 |
#define HN_GETSCALE 0x10 |
298 |
#define HN_AUTOSCALE 0x20 |
299 |
|
300 |
int humanize_number(char *, size_t, int64_t, const char *, int, int); |
301 |
int dehumanize_number(const char *, int64_t *); |
302 |
|
303 |
devmajor_t getdevmajor(const char *, mode_t); |
304 |
int getloadavg(double [], int); |
305 |
|
306 |
int getenv_r(const char *, char *, size_t); |
307 |
|
308 |
void cfree(void *); |
309 |
|
310 |
int heapsort(void *, size_t, size_t, int (*)(const void *, const void *)); |
311 |
int mergesort(void *, size_t, size_t, |
312 |
int (*)(const void *, const void *)); |
313 |
int ptsname_r(int, char *, size_t); |
314 |
int radixsort(const unsigned char **, int, const unsigned char *, |
315 |
unsigned);
|
316 |
int sradixsort(const unsigned char **, int, const unsigned char *, |
317 |
unsigned);
|
318 |
|
319 |
void mi_vector_hash(const void * __restrict, size_t, uint32_t, |
320 |
uint32_t[3]);
|
321 |
|
322 |
void setproctitle(const char *, ...) |
323 |
__printflike(1, 2); |
324 |
const char *getprogname(void) __constfunc; |
325 |
void setprogname(const char *); |
326 |
|
327 |
quad_t qabs(quad_t); |
328 |
quad_t strtoq(const char * __restrict, char ** __restrict, int); |
329 |
u_quad_t strtouq(const char * __restrict, char ** __restrict, int); |
330 |
|
331 |
/* LONGLONG */
|
332 |
long long strsuftoll(const char *, const char *, long long, long long); |
333 |
/* LONGLONG */
|
334 |
long long strsuftollx(const char *, const char *, long long, long long, |
335 |
char *, size_t);
|
336 |
|
337 |
int l64a_r(long, char *, int); |
338 |
|
339 |
size_t shquote(const char *, char *, size_t); |
340 |
size_t shquotev(int, char * const *, char *, size_t); |
341 |
|
342 |
int reallocarr(void *, size_t, size_t); |
343 |
#endif /* _NETBSD_SOURCE */ |
344 |
#endif /* _POSIX_C_SOURCE || _XOPEN_SOURCE || _NETBSD_SOURCE */ |
345 |
|
346 |
#if defined(_NETBSD_SOURCE)
|
347 |
qdiv_t qdiv(quad_t, quad_t); |
348 |
#endif
|
349 |
|
350 |
#if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE) |
351 |
# ifndef __LOCALE_T_DECLARED
|
352 |
typedef struct _locale *locale_t; |
353 |
# define __LOCALE_T_DECLARED
|
354 |
# endif
|
355 |
double strtod_l(const char * __restrict, char ** __restrict, locale_t); |
356 |
float strtof_l(const char * __restrict, char ** __restrict, locale_t); |
357 |
long double strtold_l(const char * __restrict, char ** __restrict, |
358 |
locale_t); |
359 |
long strtol_l(const char * __restrict, char ** __restrict, int, locale_t); |
360 |
unsigned long |
361 |
strtoul_l(const char * __restrict, char ** __restrict, int, locale_t); |
362 |
/* LONGLONG */
|
363 |
long long int |
364 |
strtoll_l(const char * __restrict, char ** __restrict, int, locale_t); |
365 |
/* LONGLONG */
|
366 |
unsigned long long int |
367 |
strtoull_l(const char * __restrict, char ** __restrict, int, locale_t); |
368 |
|
369 |
# if defined(_NETBSD_SOURCE)
|
370 |
quad_t strtoq_l(const char * __restrict, char ** __restrict, int, locale_t); |
371 |
u_quad_t strtouq_l(const char * __restrict, char ** __restrict, int, locale_t); |
372 |
|
373 |
size_t _mb_cur_max_l(locale_t); |
374 |
#define MB_CUR_MAX_L(loc) _mb_cur_max_l(loc)
|
375 |
int mblen_l(const char *, size_t, locale_t); |
376 |
size_t mbstowcs_l(wchar_t * __restrict, const char * __restrict, size_t, |
377 |
locale_t); |
378 |
int wctomb_l(char *, wchar_t, locale_t); |
379 |
int mbtowc_l(wchar_t * __restrict, const char * __restrict, size_t, |
380 |
locale_t); |
381 |
size_t wcstombs_l(char * __restrict, const wchar_t * __restrict, size_t, |
382 |
locale_t); |
383 |
|
384 |
# endif /* _NETBSD_SOURCE */ |
385 |
#endif /* _POSIX_C_SOURCE >= 200809 || _NETBSD_SOURCE */ |
386 |
|
387 |
__END_DECLS |
388 |
|
389 |
#endif /* !_STDLIB_H_ */ |