xref: /aosp_15_r20/external/musl/include/stdlib.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #ifndef _STDLIB_H
2*c9945492SAndroid Build Coastguard Worker #define _STDLIB_H
3*c9945492SAndroid Build Coastguard Worker 
4*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
5*c9945492SAndroid Build Coastguard Worker extern "C" {
6*c9945492SAndroid Build Coastguard Worker #endif
7*c9945492SAndroid Build Coastguard Worker 
8*c9945492SAndroid Build Coastguard Worker #include <features.h>
9*c9945492SAndroid Build Coastguard Worker 
10*c9945492SAndroid Build Coastguard Worker #if __cplusplus >= 201103L
11*c9945492SAndroid Build Coastguard Worker #define NULL nullptr
12*c9945492SAndroid Build Coastguard Worker #elif defined(__cplusplus)
13*c9945492SAndroid Build Coastguard Worker #define NULL 0L
14*c9945492SAndroid Build Coastguard Worker #else
15*c9945492SAndroid Build Coastguard Worker #define NULL ((void*)0)
16*c9945492SAndroid Build Coastguard Worker #endif
17*c9945492SAndroid Build Coastguard Worker 
18*c9945492SAndroid Build Coastguard Worker #define __NEED_size_t
19*c9945492SAndroid Build Coastguard Worker #define __NEED_wchar_t
20*c9945492SAndroid Build Coastguard Worker 
21*c9945492SAndroid Build Coastguard Worker #include <bits/alltypes.h>
22*c9945492SAndroid Build Coastguard Worker 
23*c9945492SAndroid Build Coastguard Worker int atoi (const char *);
24*c9945492SAndroid Build Coastguard Worker long atol (const char *);
25*c9945492SAndroid Build Coastguard Worker long long atoll (const char *);
26*c9945492SAndroid Build Coastguard Worker double atof (const char *);
27*c9945492SAndroid Build Coastguard Worker 
28*c9945492SAndroid Build Coastguard Worker float strtof (const char *__restrict, char **__restrict);
29*c9945492SAndroid Build Coastguard Worker double strtod (const char *__restrict, char **__restrict);
30*c9945492SAndroid Build Coastguard Worker long double strtold (const char *__restrict, char **__restrict);
31*c9945492SAndroid Build Coastguard Worker 
32*c9945492SAndroid Build Coastguard Worker long strtol (const char *__restrict, char **__restrict, int);
33*c9945492SAndroid Build Coastguard Worker unsigned long strtoul (const char *__restrict, char **__restrict, int);
34*c9945492SAndroid Build Coastguard Worker long long strtoll (const char *__restrict, char **__restrict, int);
35*c9945492SAndroid Build Coastguard Worker unsigned long long strtoull (const char *__restrict, char **__restrict, int);
36*c9945492SAndroid Build Coastguard Worker 
37*c9945492SAndroid Build Coastguard Worker int rand (void);
38*c9945492SAndroid Build Coastguard Worker void srand (unsigned);
39*c9945492SAndroid Build Coastguard Worker 
40*c9945492SAndroid Build Coastguard Worker void *malloc (size_t);
41*c9945492SAndroid Build Coastguard Worker void *calloc (size_t, size_t);
42*c9945492SAndroid Build Coastguard Worker void *realloc (void *, size_t);
43*c9945492SAndroid Build Coastguard Worker void free (void *);
44*c9945492SAndroid Build Coastguard Worker void *aligned_alloc(size_t, size_t);
45*c9945492SAndroid Build Coastguard Worker 
46*c9945492SAndroid Build Coastguard Worker _Noreturn void abort (void);
47*c9945492SAndroid Build Coastguard Worker int atexit (void (*) (void));
48*c9945492SAndroid Build Coastguard Worker _Noreturn void exit (int);
49*c9945492SAndroid Build Coastguard Worker _Noreturn void _Exit (int);
50*c9945492SAndroid Build Coastguard Worker int at_quick_exit (void (*) (void));
51*c9945492SAndroid Build Coastguard Worker _Noreturn void quick_exit (int);
52*c9945492SAndroid Build Coastguard Worker 
53*c9945492SAndroid Build Coastguard Worker char *getenv (const char *);
54*c9945492SAndroid Build Coastguard Worker 
55*c9945492SAndroid Build Coastguard Worker int system (const char *);
56*c9945492SAndroid Build Coastguard Worker 
57*c9945492SAndroid Build Coastguard Worker void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
58*c9945492SAndroid Build Coastguard Worker void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
59*c9945492SAndroid Build Coastguard Worker 
60*c9945492SAndroid Build Coastguard Worker int abs (int);
61*c9945492SAndroid Build Coastguard Worker long labs (long);
62*c9945492SAndroid Build Coastguard Worker long long llabs (long long);
63*c9945492SAndroid Build Coastguard Worker 
64*c9945492SAndroid Build Coastguard Worker typedef struct { int quot, rem; } div_t;
65*c9945492SAndroid Build Coastguard Worker typedef struct { long quot, rem; } ldiv_t;
66*c9945492SAndroid Build Coastguard Worker typedef struct { long long quot, rem; } lldiv_t;
67*c9945492SAndroid Build Coastguard Worker 
68*c9945492SAndroid Build Coastguard Worker div_t div (int, int);
69*c9945492SAndroid Build Coastguard Worker ldiv_t ldiv (long, long);
70*c9945492SAndroid Build Coastguard Worker lldiv_t lldiv (long long, long long);
71*c9945492SAndroid Build Coastguard Worker 
72*c9945492SAndroid Build Coastguard Worker int mblen (const char *, size_t);
73*c9945492SAndroid Build Coastguard Worker int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
74*c9945492SAndroid Build Coastguard Worker int wctomb (char *, wchar_t);
75*c9945492SAndroid Build Coastguard Worker size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
76*c9945492SAndroid Build Coastguard Worker size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
77*c9945492SAndroid Build Coastguard Worker 
78*c9945492SAndroid Build Coastguard Worker #define EXIT_FAILURE 1
79*c9945492SAndroid Build Coastguard Worker #define EXIT_SUCCESS 0
80*c9945492SAndroid Build Coastguard Worker 
81*c9945492SAndroid Build Coastguard Worker size_t __ctype_get_mb_cur_max(void);
82*c9945492SAndroid Build Coastguard Worker #define MB_CUR_MAX (__ctype_get_mb_cur_max())
83*c9945492SAndroid Build Coastguard Worker 
84*c9945492SAndroid Build Coastguard Worker #define RAND_MAX (0x7fffffff)
85*c9945492SAndroid Build Coastguard Worker 
86*c9945492SAndroid Build Coastguard Worker 
87*c9945492SAndroid Build Coastguard Worker #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
88*c9945492SAndroid Build Coastguard Worker  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
89*c9945492SAndroid Build Coastguard Worker  || defined(_BSD_SOURCE)
90*c9945492SAndroid Build Coastguard Worker 
91*c9945492SAndroid Build Coastguard Worker #define WNOHANG    1
92*c9945492SAndroid Build Coastguard Worker #define WUNTRACED  2
93*c9945492SAndroid Build Coastguard Worker 
94*c9945492SAndroid Build Coastguard Worker #define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
95*c9945492SAndroid Build Coastguard Worker #define WTERMSIG(s) ((s) & 0x7f)
96*c9945492SAndroid Build Coastguard Worker #define WSTOPSIG(s) WEXITSTATUS(s)
97*c9945492SAndroid Build Coastguard Worker #define WIFEXITED(s) (!WTERMSIG(s))
98*c9945492SAndroid Build Coastguard Worker #define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001U)>>8) > 0x7f00)
99*c9945492SAndroid Build Coastguard Worker #define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
100*c9945492SAndroid Build Coastguard Worker 
101*c9945492SAndroid Build Coastguard Worker int posix_memalign (void **, size_t, size_t);
102*c9945492SAndroid Build Coastguard Worker int setenv (const char *, const char *, int);
103*c9945492SAndroid Build Coastguard Worker int unsetenv (const char *);
104*c9945492SAndroid Build Coastguard Worker int mkstemp (char *);
105*c9945492SAndroid Build Coastguard Worker int mkostemp (char *, int);
106*c9945492SAndroid Build Coastguard Worker char *mkdtemp (char *);
107*c9945492SAndroid Build Coastguard Worker int getsubopt (char **, char *const *, char **);
108*c9945492SAndroid Build Coastguard Worker int rand_r (unsigned *);
109*c9945492SAndroid Build Coastguard Worker 
110*c9945492SAndroid Build Coastguard Worker #endif
111*c9945492SAndroid Build Coastguard Worker 
112*c9945492SAndroid Build Coastguard Worker 
113*c9945492SAndroid Build Coastguard Worker #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
114*c9945492SAndroid Build Coastguard Worker  || defined(_BSD_SOURCE)
115*c9945492SAndroid Build Coastguard Worker char *realpath (const char *__restrict, char *__restrict);
116*c9945492SAndroid Build Coastguard Worker long int random (void);
117*c9945492SAndroid Build Coastguard Worker void srandom (unsigned int);
118*c9945492SAndroid Build Coastguard Worker char *initstate (unsigned int, char *, size_t);
119*c9945492SAndroid Build Coastguard Worker char *setstate (char *);
120*c9945492SAndroid Build Coastguard Worker int putenv (char *);
121*c9945492SAndroid Build Coastguard Worker int posix_openpt (int);
122*c9945492SAndroid Build Coastguard Worker int grantpt (int);
123*c9945492SAndroid Build Coastguard Worker int unlockpt (int);
124*c9945492SAndroid Build Coastguard Worker char *ptsname (int);
125*c9945492SAndroid Build Coastguard Worker char *l64a (long);
126*c9945492SAndroid Build Coastguard Worker long a64l (const char *);
127*c9945492SAndroid Build Coastguard Worker void setkey (const char *);
128*c9945492SAndroid Build Coastguard Worker double drand48 (void);
129*c9945492SAndroid Build Coastguard Worker double erand48 (unsigned short [3]);
130*c9945492SAndroid Build Coastguard Worker long int lrand48 (void);
131*c9945492SAndroid Build Coastguard Worker long int nrand48 (unsigned short [3]);
132*c9945492SAndroid Build Coastguard Worker long mrand48 (void);
133*c9945492SAndroid Build Coastguard Worker long jrand48 (unsigned short [3]);
134*c9945492SAndroid Build Coastguard Worker void srand48 (long);
135*c9945492SAndroid Build Coastguard Worker unsigned short *seed48 (unsigned short [3]);
136*c9945492SAndroid Build Coastguard Worker void lcong48 (unsigned short [7]);
137*c9945492SAndroid Build Coastguard Worker #endif
138*c9945492SAndroid Build Coastguard Worker 
139*c9945492SAndroid Build Coastguard Worker #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
140*c9945492SAndroid Build Coastguard Worker #include <alloca.h>
141*c9945492SAndroid Build Coastguard Worker char *mktemp (char *);
142*c9945492SAndroid Build Coastguard Worker int mkstemps (char *, int);
143*c9945492SAndroid Build Coastguard Worker int mkostemps (char *, int, int);
144*c9945492SAndroid Build Coastguard Worker void *valloc (size_t);
145*c9945492SAndroid Build Coastguard Worker void *memalign(size_t, size_t);
146*c9945492SAndroid Build Coastguard Worker int getloadavg(double *, int);
147*c9945492SAndroid Build Coastguard Worker int clearenv(void);
148*c9945492SAndroid Build Coastguard Worker #define WCOREDUMP(s) ((s) & 0x80)
149*c9945492SAndroid Build Coastguard Worker #define WIFCONTINUED(s) ((s) == 0xffff)
150*c9945492SAndroid Build Coastguard Worker void *reallocarray (void *, size_t, size_t);
151*c9945492SAndroid Build Coastguard Worker void qsort_r (void *, size_t, size_t, int (*)(const void *, const void *, void *), void *);
152*c9945492SAndroid Build Coastguard Worker #endif
153*c9945492SAndroid Build Coastguard Worker 
154*c9945492SAndroid Build Coastguard Worker #ifdef _GNU_SOURCE
155*c9945492SAndroid Build Coastguard Worker int ptsname_r(int, char *, size_t);
156*c9945492SAndroid Build Coastguard Worker char *ecvt(double, int, int *, int *);
157*c9945492SAndroid Build Coastguard Worker char *fcvt(double, int, int *, int *);
158*c9945492SAndroid Build Coastguard Worker char *gcvt(double, int, char *);
159*c9945492SAndroid Build Coastguard Worker char *secure_getenv(const char *);
160*c9945492SAndroid Build Coastguard Worker struct __locale_struct;
161*c9945492SAndroid Build Coastguard Worker float strtof_l(const char *__restrict, char **__restrict, struct __locale_struct *);
162*c9945492SAndroid Build Coastguard Worker double strtod_l(const char *__restrict, char **__restrict, struct __locale_struct *);
163*c9945492SAndroid Build Coastguard Worker long double strtold_l(const char *__restrict, char **__restrict, struct __locale_struct *);
164*c9945492SAndroid Build Coastguard Worker #endif
165*c9945492SAndroid Build Coastguard Worker 
166*c9945492SAndroid Build Coastguard Worker #if defined(_LARGEFILE64_SOURCE)
167*c9945492SAndroid Build Coastguard Worker #define mkstemp64 mkstemp
168*c9945492SAndroid Build Coastguard Worker #define mkostemp64 mkostemp
169*c9945492SAndroid Build Coastguard Worker #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
170*c9945492SAndroid Build Coastguard Worker #define mkstemps64 mkstemps
171*c9945492SAndroid Build Coastguard Worker #define mkostemps64 mkostemps
172*c9945492SAndroid Build Coastguard Worker #endif
173*c9945492SAndroid Build Coastguard Worker #endif
174*c9945492SAndroid Build Coastguard Worker 
175*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
176*c9945492SAndroid Build Coastguard Worker }
177*c9945492SAndroid Build Coastguard Worker #endif
178*c9945492SAndroid Build Coastguard Worker 
179*c9945492SAndroid Build Coastguard Worker #endif
180