1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _LINUX_STRING_H_
2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _LINUX_STRING_H_
3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* We don't want strings.h stuff being user by user stuff by accident */
5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__
7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/compiler.h>	/* for inline */
9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/types.h>	/* for size_t */
10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/stddef.h>	/* for NULL */
11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __cplusplus
13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern "C" {
14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char *strndup_user(const char __user *, long);
17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Include machine specific inline routines
20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm/string.h>
22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRCPY
24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strcpy(char *,const char *);
25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRNCPY
27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strncpy(char *,const char *, __kernel_size_t);
28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRLCPY
30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querusize_t strlcpy(char *, const char *, size_t);
31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRCAT
33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strcat(char *, const char *);
34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRNCAT
36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strncat(char *, const char *, __kernel_size_t);
37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRLCAT
39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern size_t strlcat(char *, const char *, __kernel_size_t);
40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRCMP
42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int strcmp(const char *,const char *);
43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRNCMP
45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int strncmp(const char *,const char *,__kernel_size_t);
46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRNICMP
48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int strnicmp(const char *, const char *, __kernel_size_t);
49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRCHR
51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strchr(const char *,int);
52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRNCHR
54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strnchr(const char *, size_t, int);
55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRRCHR
57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strrchr(const char *,int);
58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strstrip(char *);
60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRSTR
61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strstr(const char *,const char *);
62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRLEN
64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern __kernel_size_t strlen(const char *);
65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRNLEN
67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern __kernel_size_t strnlen(const char *,__kernel_size_t);
68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRPBRK
70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strpbrk(const char *,const char *);
71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRSEP
73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char * strsep(char **,const char *);
74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRSPN
76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern __kernel_size_t strspn(const char *,const char *);
77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_STRCSPN
79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern __kernel_size_t strcspn(const char *,const char *);
80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_MEMSET
83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void * memset(void *,int,__kernel_size_t);
84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_MEMCPY
86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void * memcpy(void *,const void *,__kernel_size_t);
87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_MEMMOVE
89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void * memmove(void *,const void *,__kernel_size_t);
90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_MEMSCAN
92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void * memscan(void *,int,__kernel_size_t);
93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_MEMCMP
95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern int memcmp(const void *,const void *,__kernel_size_t);
96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __HAVE_ARCH_MEMCHR
98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void * memchr(const void *,int,__kernel_size_t);
99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern char *kstrdup(const char *s, gfp_t gfp);
102c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
103c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __cplusplus
104c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}
105c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
106c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
107c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
108c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* _LINUX_STRING_H_ */
109