1570af302Sopenharmony_ci#ifndef _STRING_H 2570af302Sopenharmony_ci#define _STRING_H 3570af302Sopenharmony_ci 4570af302Sopenharmony_ci#ifdef __cplusplus 5570af302Sopenharmony_ciextern "C" { 6570af302Sopenharmony_ci#endif 7570af302Sopenharmony_ci 8570af302Sopenharmony_ci#include <features.h> 9570af302Sopenharmony_ci 10570af302Sopenharmony_ci#ifdef __cplusplus 11570af302Sopenharmony_ci#define NULL 0L 12570af302Sopenharmony_ci#else 13570af302Sopenharmony_ci#define NULL ((void*)0) 14570af302Sopenharmony_ci#endif 15570af302Sopenharmony_ci 16570af302Sopenharmony_ci#define __NEED_size_t 17570af302Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 18570af302Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 19570af302Sopenharmony_ci || defined(_BSD_SOURCE) 20570af302Sopenharmony_ci#define __NEED_locale_t 21570af302Sopenharmony_ci#endif 22570af302Sopenharmony_ci 23570af302Sopenharmony_ci#include <bits/alltypes.h> 24570af302Sopenharmony_ci 25570af302Sopenharmony_civoid *memcpy (void *__restrict, const void *__restrict, size_t); 26570af302Sopenharmony_civoid *memmove (void *, const void *, size_t); 27570af302Sopenharmony_civoid *memset (void *, int, size_t); 28570af302Sopenharmony_ciint memcmp (const void *, const void *, size_t); 29570af302Sopenharmony_civoid *memchr (const void *, int, size_t); 30570af302Sopenharmony_ci 31570af302Sopenharmony_cichar *strcpy (char *__restrict, const char *__restrict); 32570af302Sopenharmony_cichar *strncpy (char *__restrict, const char *__restrict, size_t); 33570af302Sopenharmony_ci 34570af302Sopenharmony_cichar *strcat (char *__restrict, const char *__restrict); 35570af302Sopenharmony_cichar *strncat (char *__restrict, const char *__restrict, size_t); 36570af302Sopenharmony_ci 37570af302Sopenharmony_ciint strcmp (const char *, const char *); 38570af302Sopenharmony_ciint strncmp (const char *, const char *, size_t); 39570af302Sopenharmony_ci 40570af302Sopenharmony_ciint strcoll (const char *, const char *); 41570af302Sopenharmony_cisize_t strxfrm (char *__restrict, const char *__restrict, size_t); 42570af302Sopenharmony_ci 43570af302Sopenharmony_cichar *strchr (const char *, int); 44570af302Sopenharmony_cichar *strrchr (const char *, int); 45570af302Sopenharmony_ci 46570af302Sopenharmony_cisize_t strcspn (const char *, const char *); 47570af302Sopenharmony_cisize_t strspn (const char *, const char *); 48570af302Sopenharmony_cichar *strpbrk (const char *, const char *); 49570af302Sopenharmony_cichar *strstr (const char *, const char *); 50570af302Sopenharmony_cichar *strtok (char *__restrict, const char *__restrict); 51570af302Sopenharmony_ci 52570af302Sopenharmony_cisize_t strlen (const char *); 53570af302Sopenharmony_ci 54570af302Sopenharmony_cichar *strerror (int); 55570af302Sopenharmony_ci 56570af302Sopenharmony_ci#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) 57570af302Sopenharmony_ci#include <strings.h> 58570af302Sopenharmony_ci#endif 59570af302Sopenharmony_ci 60570af302Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 61570af302Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 62570af302Sopenharmony_ci || defined(_BSD_SOURCE) 63570af302Sopenharmony_cichar *strtok_r (char *__restrict, const char *__restrict, char **__restrict); 64570af302Sopenharmony_ciint strerror_r (int, char *, size_t); 65570af302Sopenharmony_cichar *stpcpy(char *__restrict, const char *__restrict); 66570af302Sopenharmony_cichar *stpncpy(char *__restrict, const char *__restrict, size_t); 67570af302Sopenharmony_cisize_t strnlen (const char *, size_t); 68570af302Sopenharmony_cichar *strdup (const char *); 69570af302Sopenharmony_cichar *strndup (const char *, size_t); 70570af302Sopenharmony_cichar *strsignal(int); 71570af302Sopenharmony_cichar *strerror_l (int, locale_t); 72570af302Sopenharmony_ciint strcoll_l (const char *, const char *, locale_t); 73570af302Sopenharmony_cisize_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); 74570af302Sopenharmony_ci#endif 75570af302Sopenharmony_ci 76570af302Sopenharmony_ci#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 77570af302Sopenharmony_ci || defined(_BSD_SOURCE) 78570af302Sopenharmony_civoid *memccpy (void *__restrict, const void *__restrict, int, size_t); 79570af302Sopenharmony_ci#endif 80570af302Sopenharmony_ci 81570af302Sopenharmony_ci#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 82570af302Sopenharmony_cichar *strsep(char **, const char *); 83570af302Sopenharmony_cisize_t strlcat (char *, const char *, size_t); 84570af302Sopenharmony_cisize_t strlcpy (char *, const char *, size_t); 85570af302Sopenharmony_civoid explicit_bzero (void *, size_t); 86570af302Sopenharmony_ci#endif 87570af302Sopenharmony_ci 88570af302Sopenharmony_ci#ifdef _GNU_SOURCE 89570af302Sopenharmony_ci#define strdupa(x) strcpy(alloca(strlen(x)+1),x) 90570af302Sopenharmony_ciint strverscmp (const char *, const char *); 91570af302Sopenharmony_cichar *strchrnul(const char *, int); 92570af302Sopenharmony_cichar *strcasestr(const char *, const char *); 93570af302Sopenharmony_civoid *memmem(const void *, size_t, const void *, size_t); 94570af302Sopenharmony_civoid *memrchr(const void *, int, size_t); 95570af302Sopenharmony_civoid *mempcpy(void *, const void *, size_t); 96570af302Sopenharmony_ci#ifndef __cplusplus 97570af302Sopenharmony_cichar *basename(void); 98570af302Sopenharmony_ci#endif 99570af302Sopenharmony_ci#endif 100570af302Sopenharmony_ci 101570af302Sopenharmony_ci#ifdef __cplusplus 102570af302Sopenharmony_ci} 103570af302Sopenharmony_ci#endif 104570af302Sopenharmony_ci 105570af302Sopenharmony_ci#endif 106