1/*
2 * Copyright 2004-2012 Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _STRING_H_
6#define _STRING_H_
7
8
9#include <locale_t.h>
10#include <sys/types.h>
11
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17
18/* memXXX() functions */
19extern void		*memchr(const void *source, int value, size_t length);
20extern int		memcmp(const void *buffer1, const void *buffer2, size_t length);
21extern void		*memcpy(void *dest, const void *source, size_t length);
22extern void		*memccpy(void *dest, const void *source, int stopByte, size_t length);
23extern void		*memmove(void *dest, const void *source, size_t length);
24extern void		*memset(void *dest, int value, size_t length);
25
26#ifdef _GNU_SOURCE
27extern void		*memrchr(const void *source, int value, size_t length);
28#endif
29
30/* string functions */
31extern char		*strcpy(char *dest, const char *source);
32extern char		*strncpy(char *dest, const char *source, size_t length);
33extern char		*strcat(char *dest, const char *source);
34extern char		*strncat(char *dest, const char *source, size_t length);
35
36extern size_t	strlen(const char *string);
37extern int		strcmp(const char *string1, const char *string2);
38extern int		strncmp(const char *string1, const char *string2, size_t length);
39
40extern char		*strchr(const char *string, int character);
41extern char		*strrchr(const char *string, int character);
42extern char		*strstr(const char *string, const char *searchString);
43
44#ifdef _GNU_SOURCE
45extern char		*strchrnul(const char *string, int character);
46#endif
47
48extern char		*strpbrk(const char *string, const char *set);
49extern char		*strtok(char *string, const char *set);
50extern char		*strtok_r(char *string, const char *set, char **savePointer);
51extern size_t	strspn(const char *string, const char *set);
52extern size_t	strcspn(const char *string, const char *set);
53
54extern int		strcoll(const char *string1, const char *string2);
55extern size_t	strxfrm(char *string1, const char *string2, size_t length);
56
57extern char		*strerror(int errorCode);
58extern int		strerror_r(int errorCode, char *buffer, size_t bufferSize);
59
60extern char		*strcasestr(const char *string, const char *searchString);
61
62extern char		*strdup(const char *string);
63extern char		*strndup(const char* string, size_t size);
64extern char		*stpcpy(char *dest, const char *source);
65extern char		*stpncpy(char *dest, const char *source, size_t size);
66
67extern size_t	strlcat(char *dest, const char *source, size_t length);
68extern size_t	strlcpy(char *dest, const char *source, size_t length);
69
70extern size_t	strnlen(const char *string, size_t count);
71
72extern char		*strlwr(char *string);
73extern char		*strupr(char *string);
74
75/* extern char		*strsep(char **stringPointer, const char *delimiter); */
76
77extern const char	*strsignal(int signum);
78
79/* locale versions of string functions */
80extern int		strcoll_l(const char *string1, const char *string2, locale_t locale);
81extern char		*strerror_l(int errorCode, locale_t locale);
82extern size_t	strxfrm_l(char *string1, const char *string2, size_t length, locale_t locale);
83
84/* for compatibility, pull in functions declared in strings.h */
85#include <strings.h>
86
87
88#ifdef __cplusplus
89}
90#endif
91
92#endif  /* _STRING_H_ */
93