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