#ifndef ULIBC_STDLIB_H
#define ULIBC_STDLIB_H
#include <stddef.h>
void* malloc(size_t size);
void free(void* ptr);
void* calloc(size_t nmemb, size_t size);
void* realloc(void* ptr, size_t size);
int atoi(const char* s);
double atof(const char* s);
long strtol(const char* nptr, char** endptr, int base);
unsigned long strtoul(const char* nptr, char** endptr, int base);
long long strtoll(const char* nptr, char** endptr, int base);
unsigned long long strtoull(const char* nptr, char** endptr, int base);
char* realpath(const char* path, char* resolved);
char* getenv(const char* name);
int abs(int x);
long labs(long x);
int setenv(const char* name, const char* value, int overwrite);
int unsetenv(const char* name);
int putenv(char* string);
int atexit(void (*func)(void));
void abort(void) __attribute__((noreturn));
int rand(void);
void srand(unsigned int seed);
#define RAND_MAX 0x7FFF
void qsort(void* base, size_t nmemb, size_t size,
int (*compar)(const void*, const void*));
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
int (*compar)(const void*, const void*));
typedef struct { int quot; int rem; } div_t;
typedef struct { long quot; long rem; } ldiv_t;
div_t div(int numer, int denom);
ldiv_t ldiv(long numer, long denom);
int mkstemp(char* tmpl);
double strtod(const char* nptr, char** endptr);
float strtof(const char* nptr, char** endptr);
int system(const char* cmd);
void exit(int status) __attribute__((noreturn));
#ifndef NULL
#define NULL ((void*)0)
#endif
#endif