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