OSDN Git Service

DMAドライバ. DrFSマイナーチェンジ
[vaneos/DivergeMirror.git] / kernel / string.c
1 /*
2         string.c
3         C Standard Library string.h
4         (C) 2014-2015 VOSystems.
5 */
6
7 #include<Diverge/types.h>
8
9
10 int strcmp(const char *s1, const char *s2)
11 {
12         while(*s1==*s2) {
13                 if(*s1=='\0')return 0;
14                 s1++;
15                 s2++;
16         }
17         return ((unsigned char)*s1 - (unsigned char)*s2);
18 }
19
20 size_t strlen(const char *s)
21 {
22         size_t len=0;
23
24         while(*s++)len++;
25         return len;
26 }
27
28 void *kmemset(void *s, int c, size_t n)
29 {
30         const unsigned char uc=c;
31         unsigned char *p=(unsigned char *)s;
32
33         while(n-- >0)
34         *p++ =uc;
35
36         return s;
37 }
38
39 char *strcpy(char *s1, const char *s2)
40 {
41         char *p=s1;
42         while(*s1++ =*s2++);
43         return p;
44 }
45
46 char *strchr(const char *s, int c)
47 {
48         c=(char)c;
49         while(*s!=c){
50                 if (*s=='\0')return NULL;
51                 s++;
52         }
53         return (char *)s;
54 }
55
56 char *strstr(const char *s1, const char *s2)
57 {
58         if(*s2=='\0')return (char *)s1;
59
60         for(; (s1=strchr(s1, *s2))!=NULL; ++s1){
61                 const char *sc1=s1;
62                 const char *sc2=s2;
63
64                 do{
65                         if(*++sc2=='\0')return (char *)s1;
66                 }while(*++sc1==sc2);
67         }
68
69         return NULL;
70 }
71
72 size_t strcspn(const char *s1, const char *s2)
73 {
74         const char *p=s1;
75
76         for(; *s1; s1++){
77                 const char *t;
78
79                 for(t=s2; *t; t++)
80                         if(*t==*s1)return s1-p;
81         }
82         return s1-p;
83 }
84
85 char *strpbrk(const char *s1, const char *s2)
86 {
87         for(; *s1; s1++){
88                 const char *t=s2;
89                 for(; *t; t++)
90                         if(*t==*s1)return (char *)s1;
91         }
92         return NULL;
93 }