This source file includes following definitions.
- strcpy
- strcmp
- strlen
- memset
- strchr
- gets
- stat
- atoi
- memmove
1 #include "types.h"
2 #include "stat.h"
3 #include "fcntl.h"
4 #include "user.h"
5 #include "x86.h"
6
7 char*
8 strcpy(char *s, const char *t)
9 {
10 char *os;
11
12 os = s;
13 while((*s++ = *t++) != 0)
14 ;
15 return os;
16 }
17
18 int
19 strcmp(const char *p, const char *q)
20 {
21 while(*p && *p == *q)
22 p++, q++;
23 return (uchar)*p - (uchar)*q;
24 }
25
26 uint
27 strlen(const char *s)
28 {
29 int n;
30
31 for(n = 0; s[n]; n++)
32 ;
33 return n;
34 }
35
36 void*
37 memset(void *dst, int c, uint n)
38 {
39 stosb(dst, c, n);
40 return dst;
41 }
42
43 char*
44 strchr(const char *s, char c)
45 {
46 for(; *s; s++)
47 if(*s == c)
48 return (char*)s;
49 return 0;
50 }
51
52 char*
53 gets(char *buf, int max)
54 {
55 int i, cc;
56 char c;
57
58 for(i=0; i+1 < max; ){
59 cc = read(0, &c, 1);
60 if(cc < 1)
61 break;
62 buf[i++] = c;
63 if(c == '\n' || c == '\r')
64 break;
65 }
66 buf[i] = '\0';
67 return buf;
68 }
69
70 int
71 stat(const char *n, struct stat *st)
72 {
73 int fd;
74 int r;
75
76 fd = open(n, O_RDONLY);
77 if(fd < 0)
78 return -1;
79 r = fstat(fd, st);
80 close(fd);
81 return r;
82 }
83
84 int
85 atoi(const char *s)
86 {
87 int n;
88
89 n = 0;
90 while('0' <= *s && *s <= '9')
91 n = n*10 + *s++ - '0';
92 return n;
93 }
94
95 void*
96 memmove(void *vdst, const void *vsrc, int n)
97 {
98 char *dst;
99 const char *src;
100
101 dst = vdst;
102 src = vsrc;
103 while(n-- > 0)
104 *dst++ = *src++;
105 return vdst;
106 }