17777dab0Sopenharmony_ci#ifndef _STRING_H 27777dab0Sopenharmony_ci#define _STRING_H 37777dab0Sopenharmony_ci 47777dab0Sopenharmony_ci#ifdef __cplusplus 57777dab0Sopenharmony_ciextern "C" { 67777dab0Sopenharmony_ci#endif 77777dab0Sopenharmony_ci 87777dab0Sopenharmony_ci#include <features.h> 97777dab0Sopenharmony_ci 107777dab0Sopenharmony_ci#ifdef __cplusplus 117777dab0Sopenharmony_ci#define NULL 0L 127777dab0Sopenharmony_ci#else 137777dab0Sopenharmony_ci#define NULL ((void*)0) 147777dab0Sopenharmony_ci#endif 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_ci#define __NEED_size_t 177777dab0Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 187777dab0Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 197777dab0Sopenharmony_ci || defined(_BSD_SOURCE) 207777dab0Sopenharmony_ci#define __NEED_locale_t 217777dab0Sopenharmony_ci#endif 227777dab0Sopenharmony_ci 237777dab0Sopenharmony_ci#include <bits/alltypes.h> 247777dab0Sopenharmony_ci 257777dab0Sopenharmony_civoid *memcpy (void *__restrict, const void *__restrict, size_t); 267777dab0Sopenharmony_civoid *memmove (void *, const void *, size_t); 277777dab0Sopenharmony_civoid *memset (void *, int, size_t); 287777dab0Sopenharmony_ciint memcmp (const void *, const void *, size_t); 297777dab0Sopenharmony_civoid *memchr (const void *, int, size_t); 307777dab0Sopenharmony_ci 317777dab0Sopenharmony_cichar *strcpy (char *__restrict, const char *__restrict); 327777dab0Sopenharmony_cichar *strncpy (char *__restrict, const char *__restrict, size_t); 337777dab0Sopenharmony_ci 347777dab0Sopenharmony_cichar *strcat (char *__restrict, const char *__restrict); 357777dab0Sopenharmony_cichar *strncat (char *__restrict, const char *__restrict, size_t); 367777dab0Sopenharmony_ci 377777dab0Sopenharmony_ciint strcmp (const char *, const char *); 387777dab0Sopenharmony_ciint strncmp (const char *, const char *, size_t); 397777dab0Sopenharmony_ci 407777dab0Sopenharmony_ciint strcoll (const char *, const char *); 417777dab0Sopenharmony_cisize_t strxfrm (char *__restrict, const char *__restrict, size_t); 427777dab0Sopenharmony_ci 437777dab0Sopenharmony_cichar *strchr (const char *, int); 447777dab0Sopenharmony_cichar *strrchr (const char *, int); 457777dab0Sopenharmony_ci 467777dab0Sopenharmony_cisize_t strcspn (const char *, const char *); 477777dab0Sopenharmony_cisize_t strspn (const char *, const char *); 487777dab0Sopenharmony_cichar *strpbrk (const char *, const char *); 497777dab0Sopenharmony_cichar *strstr (const char *, const char *); 507777dab0Sopenharmony_cichar *strtok (char *__restrict, const char *__restrict); 517777dab0Sopenharmony_ci 527777dab0Sopenharmony_cisize_t strlen (const char *); 537777dab0Sopenharmony_ci 547777dab0Sopenharmony_cichar *strerror (int); 557777dab0Sopenharmony_ci 567777dab0Sopenharmony_ci#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) 577777dab0Sopenharmony_ci#include <strings.h> 587777dab0Sopenharmony_ci#endif 597777dab0Sopenharmony_ci 607777dab0Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 617777dab0Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 627777dab0Sopenharmony_ci || defined(_BSD_SOURCE) 637777dab0Sopenharmony_cichar *strtok_r (char *__restrict, const char *__restrict, char **__restrict); 647777dab0Sopenharmony_ciint strerror_r (int, char *, size_t); 657777dab0Sopenharmony_cichar *stpcpy(char *__restrict, const char *__restrict); 667777dab0Sopenharmony_cichar *stpncpy(char *__restrict, const char *__restrict, size_t); 677777dab0Sopenharmony_cisize_t strnlen (const char *, size_t); 687777dab0Sopenharmony_cichar *strdup (const char *); 697777dab0Sopenharmony_cichar *strndup (const char *, size_t); 707777dab0Sopenharmony_cichar *strsignal(int); 717777dab0Sopenharmony_cichar *strerror_l (int, locale_t); 727777dab0Sopenharmony_ciint strcoll_l (const char *, const char *, locale_t); 737777dab0Sopenharmony_cisize_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); 747777dab0Sopenharmony_ci#endif 757777dab0Sopenharmony_ci 767777dab0Sopenharmony_ci#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 777777dab0Sopenharmony_ci || defined(_BSD_SOURCE) 787777dab0Sopenharmony_civoid *memccpy (void *__restrict, const void *__restrict, int, size_t); 797777dab0Sopenharmony_ci#endif 807777dab0Sopenharmony_ci 817777dab0Sopenharmony_ci#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 827777dab0Sopenharmony_cichar *strsep(char **, const char *); 837777dab0Sopenharmony_cisize_t strlcat (char *, const char *, size_t); 847777dab0Sopenharmony_cisize_t strlcpy (char *, const char *, size_t); 857777dab0Sopenharmony_ci#endif 867777dab0Sopenharmony_ci 877777dab0Sopenharmony_ci#ifdef _GNU_SOURCE 887777dab0Sopenharmony_ci#define strdupa(x) strcpy(alloca(strlen(x)+1),x) 897777dab0Sopenharmony_cichar *strchrnul(const char *, int); 907777dab0Sopenharmony_cichar *strcasestr(const char *, const char *); 917777dab0Sopenharmony_civoid *memmem(const void *, size_t, const void *, size_t); 927777dab0Sopenharmony_civoid *memrchr(const void *, int, size_t); 937777dab0Sopenharmony_civoid *mempcpy(void *, const void *, size_t); 947777dab0Sopenharmony_ci#ifndef __cplusplus 957777dab0Sopenharmony_cichar *basename(); 967777dab0Sopenharmony_ci#endif 977777dab0Sopenharmony_ci#endif 987777dab0Sopenharmony_ci 997777dab0Sopenharmony_ci#include <fortify/string.h> 1007777dab0Sopenharmony_ci 1017777dab0Sopenharmony_ci#ifdef __cplusplus 1027777dab0Sopenharmony_ci} 1037777dab0Sopenharmony_ci#endif 1047777dab0Sopenharmony_ci 1057777dab0Sopenharmony_ci#endif 106