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