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