Subversion Repositories Kolibri OS

Rev

Rev 6936 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1408 serge 1
#ifndef _LINUX_STRING_H_
2
#define _LINUX_STRING_H_
3
 
4
 
5
#include 	/* for inline */
6
#include 	/* for size_t */
7
#include 	/* for NULL */
8
#include 
5270 serge 9
#include 
1408 serge 10
 
11
extern char *strndup_user(const char __user *, long);
12
extern void *memdup_user(const void __user *, size_t);
6936 serge 13
extern void *memdup_user_nul(const void __user *, size_t);
1408 serge 14
 
15
/*
16
 * Include machine specific inline routines
17
 */
18
#include 
19
 
20
#ifndef __HAVE_ARCH_STRCPY
21
extern char * strcpy(char *,const char *);
22
#endif
23
#ifndef __HAVE_ARCH_STRNCPY
24
extern char * strncpy(char *,const char *, __kernel_size_t);
25
#endif
26
#ifndef __HAVE_ARCH_STRLCPY
27
size_t strlcpy(char *, const char *, size_t);
28
#endif
6082 serge 29
#ifndef __HAVE_ARCH_STRSCPY
30
ssize_t __must_check strscpy(char *, const char *, size_t);
31
#endif
1408 serge 32
#ifndef __HAVE_ARCH_STRCAT
33
extern char * strcat(char *, const char *);
34
#endif
35
#ifndef __HAVE_ARCH_STRNCAT
36
extern char * strncat(char *, const char *, __kernel_size_t);
37
#endif
38
#ifndef __HAVE_ARCH_STRLCAT
39
extern size_t strlcat(char *, const char *, __kernel_size_t);
40
#endif
41
#ifndef __HAVE_ARCH_STRCMP
42
extern int strcmp(const char *,const char *);
43
#endif
44
#ifndef __HAVE_ARCH_STRNCMP
45
extern int strncmp(const char *,const char *,__kernel_size_t);
46
#endif
47
#ifndef __HAVE_ARCH_STRCASECMP
48
extern int strcasecmp(const char *s1, const char *s2);
49
#endif
50
#ifndef __HAVE_ARCH_STRNCASECMP
51
extern int strncasecmp(const char *s1, const char *s2, size_t n);
52
#endif
53
#ifndef __HAVE_ARCH_STRCHR
54
extern char * strchr(const char *,int);
55
#endif
5056 serge 56
#ifndef __HAVE_ARCH_STRCHRNUL
57
extern char * strchrnul(const char *,int);
58
#endif
1408 serge 59
#ifndef __HAVE_ARCH_STRNCHR
60
extern char * strnchr(const char *, size_t, int);
61
#endif
62
#ifndef __HAVE_ARCH_STRRCHR
63
extern char * strrchr(const char *,int);
64
#endif
1964 serge 65
extern char * __must_check skip_spaces(const char *);
66
 
67
extern char *strim(char *);
68
 
69
static inline __must_check char *strstrip(char *str)
70
{
71
	return strim(str);
72
}
73
 
1408 serge 74
#ifndef __HAVE_ARCH_STRSTR
1964 serge 75
extern char * strstr(const char *, const char *);
1408 serge 76
#endif
1964 serge 77
#ifndef __HAVE_ARCH_STRNSTR
78
extern char * strnstr(const char *, const char *, size_t);
79
#endif
1408 serge 80
#ifndef __HAVE_ARCH_STRLEN
81
extern __kernel_size_t strlen(const char *);
82
#endif
83
#ifndef __HAVE_ARCH_STRNLEN
84
extern __kernel_size_t strnlen(const char *,__kernel_size_t);
85
#endif
86
#ifndef __HAVE_ARCH_STRPBRK
87
extern char * strpbrk(const char *,const char *);
88
#endif
89
#ifndef __HAVE_ARCH_STRSEP
90
extern char * strsep(char **,const char *);
91
#endif
92
#ifndef __HAVE_ARCH_STRSPN
93
extern __kernel_size_t strspn(const char *,const char *);
94
#endif
95
#ifndef __HAVE_ARCH_STRCSPN
96
extern __kernel_size_t strcspn(const char *,const char *);
97
#endif
98
 
99
#ifndef __HAVE_ARCH_MEMSET
100
extern void * memset(void *,int,__kernel_size_t);
101
#endif
102
#ifndef __HAVE_ARCH_MEMCPY
103
extern void * memcpy(void *,const void *,__kernel_size_t);
104
#endif
105
#ifndef __HAVE_ARCH_MEMMOVE
106
extern void * memmove(void *,const void *,__kernel_size_t);
107
#endif
108
#ifndef __HAVE_ARCH_MEMSCAN
109
extern void * memscan(void *,int,__kernel_size_t);
110
#endif
111
#ifndef __HAVE_ARCH_MEMCMP
112
extern int memcmp(const void *,const void *,__kernel_size_t);
113
#endif
114
#ifndef __HAVE_ARCH_MEMCHR
115
extern void * memchr(const void *,int,__kernel_size_t);
116
#endif
2967 Serge 117
void *memchr_inv(const void *s, int c, size_t n);
6082 serge 118
char *strreplace(char *s, char old, char new);
1408 serge 119
 
6082 serge 120
extern void kfree_const(const void *x);
121
 
1408 serge 122
extern char *kstrdup(const char *s, gfp_t gfp);
6082 serge 123
extern const char *kstrdup_const(const char *s, gfp_t gfp);
1408 serge 124
extern char *kstrndup(const char *s, size_t len, gfp_t gfp);
125
extern void *kmemdup(const void *src, size_t len, gfp_t gfp);
126
 
127
extern char **argv_split(gfp_t gfp, const char *str, int *argcp);
128
extern void argv_free(char **argv);
129
 
130
extern bool sysfs_streq(const char *s1, const char *s2);
7143 serge 131
extern int kstrtobool(const char *s, bool *res);
132
static inline int strtobool(const char *s, bool *res)
133
{
134
	return kstrtobool(s, res);
135
}
1408 serge 136
 
7143 serge 137
int match_string(const char * const *array, size_t n, const char *string);
138
 
1408 serge 139
#ifdef CONFIG_BINARY_PRINTF
140
int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args);
141
int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf);
142
int bprintf(u32 *bin_buf, size_t size, const char *fmt, ...) __printf(3, 4);
143
#endif
144
 
145
extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
6082 serge 146
				       const void *from, size_t available);
1408 serge 147
 
148
/**
149
 * strstarts - does @str start with @prefix?
150
 * @str: string to examine
151
 * @prefix: prefix to look for.
152
 */
153
static inline bool strstarts(const char *str, const char *prefix)
154
{
155
	return strncmp(str, prefix, strlen(prefix)) == 0;
156
}
3120 serge 157
 
5270 serge 158
size_t memweight(const void *ptr, size_t bytes);
159
void memzero_explicit(void *s, size_t count);
3120 serge 160
 
4065 Serge 161
/**
162
 * kbasename - return the last part of a pathname.
163
 *
164
 * @path: path to extract the filename from.
165
 */
166
static inline const char *kbasename(const char *path)
167
{
168
	const char *tail = strrchr(path, '/');
169
	return tail ? tail + 1 : path;
170
}
171
 
1408 serge 172
#endif /* _LINUX_STRING_H_ */