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