1#ifndef _STRING_H 2#define _STRING_H 3 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#include <features.h> 9 10#ifdef __cplusplus 11#define NULL 0L 12#else 13#define NULL ((void*)0) 14#endif 15 16#define __NEED_size_t 17#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 18 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 19 || defined(_BSD_SOURCE) 20#define __NEED_locale_t 21#endif 22 23#include <bits/alltypes.h> 24 25void *memcpy (void *__restrict, const void *__restrict, size_t); 26void *memmove (void *, const void *, size_t); 27void *memset (void *, int, size_t); 28int memcmp (const void *, const void *, size_t); 29void *memchr (const void *, int, size_t); 30 31char *strcpy (char *__restrict, const char *__restrict); 32char *strncpy (char *__restrict, const char *__restrict, size_t); 33 34char *strcat (char *__restrict, const char *__restrict); 35char *strncat (char *__restrict, const char *__restrict, size_t); 36 37int strcmp (const char *, const char *); 38int strncmp (const char *, const char *, size_t); 39 40int strcoll (const char *, const char *); 41size_t strxfrm (char *__restrict, const char *__restrict, size_t); 42 43char *strchr (const char *, int); 44char *strrchr (const char *, int); 45 46size_t strcspn (const char *, const char *); 47size_t strspn (const char *, const char *); 48char *strpbrk (const char *, const char *); 49char *strstr (const char *, const char *); 50char *strtok (char *__restrict, const char *__restrict); 51 52size_t strlen (const char *); 53 54char *strerror (int); 55 56#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) 57#include <strings.h> 58#endif 59 60#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 61 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 62 || defined(_BSD_SOURCE) 63char *strtok_r (char *__restrict, const char *__restrict, char **__restrict); 64int strerror_r (int, char *, size_t); 65char *stpcpy(char *__restrict, const char *__restrict); 66char *stpncpy(char *__restrict, const char *__restrict, size_t); 67size_t strnlen (const char *, size_t); 68char *strdup (const char *); 69char *strndup (const char *, size_t); 70char *strsignal(int); 71char *strerror_l (int, locale_t); 72int strcoll_l (const char *, const char *, locale_t); 73size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); 74#endif 75 76#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 77 || defined(_BSD_SOURCE) 78void *memccpy (void *__restrict, const void *__restrict, int, size_t); 79#endif 80 81#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 82char *strsep(char **, const char *); 83size_t strlcat (char *, const char *, size_t); 84size_t strlcpy (char *, const char *, size_t); 85#endif 86 87#ifdef _GNU_SOURCE 88#define strdupa(x) strcpy(alloca(strlen(x)+1),x) 89int strverscmp (const char *, const char *); 90int strcasecmp_l (const char *, const char *, locale_t); 91int strncasecmp_l (const char *, const char *, size_t, locale_t); 92char *strchrnul(const char *, int); 93char *strcasestr(const char *, const char *); 94void *memmem(const void *, size_t, const void *, size_t); 95void *memrchr(const void *, int, size_t); 96void *mempcpy(void *, const void *, size_t); 97#ifndef __cplusplus 98char *basename(); 99#endif 100#endif 101 102#ifdef __cplusplus 103} 104#endif 105 106#endif 107