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