#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#include <features.h>

#ifdef __cplusplus
#define NULL 0L
#else
#define NULL ((void*)0)
#endif

#define __NEED_size_t

#include <bits/alltypes.h>

void* memcpy(void* __restrict, const void* __restrict, size_t);
void* memmove(void*, const void*, size_t);
void* memset(void*, int, size_t);
int memcmp(const void*, const void*, size_t);
void* memchr(const void*, int, size_t);

char* strcpy(char* __restrict, const char* __restrict);
char* strncpy(char* __restrict, const char* __restrict, size_t);

char* strcat(char* __restrict, const char* __restrict);
char* strncat(char* __restrict, const char* __restrict, size_t);

int strcmp(const char*, const char*);
int strncmp(const char*, const char*, size_t);

int strcoll(const char*, const char*);
size_t strxfrm(char* __restrict, const char* __restrict, size_t);

char* strchr(const char*, int);
char* strrchr(const char*, int);

size_t strcspn(const char*, const char*);
size_t strspn(const char*, const char*);
char* strpbrk(const char*, const char*);
char* strstr(const char*, const char*);
char* strtok(char* __restrict, const char* __restrict);

size_t strlen(const char*);

char* strerror(int);

#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
#include <strings.h>
#endif

#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
    defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
char* strtok_r(char* __restrict, const char* __restrict, char** __restrict);
int strerror_r(int, char*, size_t);
char* stpcpy(char* __restrict, const char* __restrict);
char* stpncpy(char* __restrict, const char* __restrict, size_t);
size_t strnlen(const char*, size_t);
char* strdup(const char*);
char* strndup(const char*, size_t);
char* strsignal(int);
#endif

#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
void* memccpy(void* __restrict, const void* __restrict, int, size_t);
#endif

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
char* strsep(char**, const char*);
size_t strlcat(char*, const char*, size_t);
size_t strlcpy(char*, const char*, size_t);
#endif

#ifdef _GNU_SOURCE
#define strdupa(x) strcpy(alloca(strlen(x) + 1), x)
int strverscmp(const char*, const char*);
char* strchrnul(const char*, int);
char* strcasestr(const char*, const char*);
void* memmem(const void*, size_t, const void*, size_t);
void* memrchr(const void*, int, size_t);
void* mempcpy(void*, const void*, size_t);
#ifndef __cplusplus
char* basename(char*);
#endif
#endif

#ifdef __cplusplus
}
#endif
