1#include "types.h"
2#include "stat.h"
3#include "fcntl.h"
4#include "user.h"
5#include "x86.h"
6
7char*
8strcpy(char *s, const char *t)
9{
10 char *os;
11
12 os = s;
13 while((*s++ = *t++) != 0)
14 ;
15 return os;
16}
17
18int
19strcmp(const char *p, const char *q)
20{
21 while(*p && *p == *q)
22 p++, q++;
23 return (uchar)*p - (uchar)*q;
24}
25
26uint
27strlen(const char *s)
28{
29 int n;
30
31 for(n = 0; s[n]; n++)
32 ;
33 return n;
34}
35
36void*
37memset(void *dst, int c, uint n)
38{
39 stosb(dst, c, n);
40 return dst;
41}
42
43char*
44strchr(const char *s, char c)
45{
46 for(; *s; s++)
47 if(*s == c)
48 return (char*)s;
49 return 0;
50}
51
52char*
53gets(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
70int
71stat(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
84int
85atoi(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
95void*
96memmove(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}
107