Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / stdlib.h @ 14

History | View | Annotate | Download (11.4 KB)

1 13 up20180614
/*        $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_ */