1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#ifndef _LINUX_STRING_H_
#define _LINUX_STRING_H_
#include <linux/types.h> /* for size_t */
#ifndef NULL
#define NULL ((void *) 0)
#endif
extern inline char * _dl_strcpy(char * dst,const char *src)
{
register char *ptr = dst;
while (*src)
*dst++ = *src++;
*dst = '\0';
return ptr;
}
extern inline int _dl_strcmp(const char * s1,const char * s2)
{
unsigned register char c1, c2;
do {
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == '\0')
return c1 - c2;
}
while (c1 == c2);
return c1 - c2;
}
extern inline int _dl_strncmp(const char * s1,const char * s2,size_t len)
{
unsigned register char c1 = '\0';
unsigned register char c2 = '\0';
while (len > 0) {
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == '\0' || c1 != c2)
return c1 - c2;
len--;
}
return c1 - c2;
}
extern inline char * _dl_strchr(const char * str,int c)
{
register char ch;
do {
if ((ch = *str) == c)
return (char *) str;
str++;
}
while (ch);
return 0;
}
extern inline size_t _dl_strlen(const char * str)
{
register char *ptr = (char *) str;
while (*ptr)
ptr++;
return (ptr - str);
}
extern inline void * _dl_memcpy(void * dst, const void * src, size_t len)
{
register char *a = dst;
register const char *b = src;
while (len--)
*a++ = *b++;
return dst;
}
extern inline int _dl_memcmp(const void * s1,const void * s2,size_t len)
{
unsigned char *c1 = (unsigned char *)s1;
unsigned char *c2 = (unsigned char *)s2;
while (len--) {
if (*c1 != *c2)
return *c1 - *c2;
c1++;
c2++;
}
return 0;
}
extern inline void * _dl_memset(void * str,int c,size_t len)
{
register char *a = str;
while (len--)
*a++ = c;
return str;
}
#endif
|