1d15f0d10Skaashoek #include "types.h"
2d15f0d10Skaashoek #include "stat.h"
3d15f0d10Skaashoek #include "fcntl.h"
49b37d1bfSrsc #include "user.h"
582201353Srsc #include "x86.h"
69b37d1bfSrsc
7b75c11b2Srsc char*
strcpy(char * s,const char * t)8*308a3b88SFrans Kaashoek strcpy(char *s, const char *t)
9b75c11b2Srsc {
10b75c11b2Srsc char *os;
11b75c11b2Srsc
12b75c11b2Srsc os = s;
13b75c11b2Srsc while((*s++ = *t++) != 0)
14b75c11b2Srsc ;
15b75c11b2Srsc return os;
16b75c11b2Srsc }
1717a85657Srtm
188b58e810Skaashoek int
strcmp(const char * p,const char * q)198b58e810Skaashoek strcmp(const char *p, const char *q)
208b58e810Skaashoek {
218b58e810Skaashoek while(*p && *p == *q)
228b58e810Skaashoek p++, q++;
23115e1774Srsc return (uchar)*p - (uchar)*q;
248b58e810Skaashoek }
258b58e810Skaashoek
26115e1774Srsc uint
strlen(const char * s)27*308a3b88SFrans Kaashoek strlen(const char *s)
2817a85657Srtm {
29dca5b5caSrsc int n;
30dca5b5caSrsc
3117a85657Srtm for(n = 0; s[n]; n++)
3217a85657Srtm ;
3317a85657Srtm return n;
3417a85657Srtm }
3517a85657Srtm
3643572072Srtm void*
memset(void * dst,int c,uint n)37115e1774Srsc memset(void *dst, int c, uint n)
3843572072Srtm {
3982201353Srsc stosb(dst, c, n);
4043572072Srtm return dst;
4143572072Srtm }
4243572072Srtm
4317a85657Srtm char*
strchr(const char * s,char c)448b58e810Skaashoek strchr(const char *s, char c)
458b58e810Skaashoek {
468b58e810Skaashoek for(; *s; s++)
478b58e810Skaashoek if(*s == c)
488b58e810Skaashoek return (char*)s;
498b58e810Skaashoek return 0;
508b58e810Skaashoek }
518b58e810Skaashoek
528b58e810Skaashoek char*
gets(char * buf,int max)5317a85657Srtm gets(char *buf, int max)
5417a85657Srtm {
55dca5b5caSrsc int i, cc;
5617a85657Srtm char c;
5717a85657Srtm
58dca5b5caSrsc for(i=0; i+1 < max; ){
5917a85657Srtm cc = read(0, &c, 1);
6017a85657Srtm if(cc < 1)
6117a85657Srtm break;
62a059f025Srsc buf[i++] = c;
6317a85657Srtm if(c == '\n' || c == '\r')
6417a85657Srtm break;
6517a85657Srtm }
6617a85657Srtm buf[i] = '\0';
6717a85657Srtm return buf;
6817a85657Srtm }
69d15f0d10Skaashoek
70d15f0d10Skaashoek int
stat(const char * n,struct stat * st)71*308a3b88SFrans Kaashoek stat(const char *n, struct stat *st)
72d15f0d10Skaashoek {
73bdb66433Skaashoek int fd;
74d15f0d10Skaashoek int r;
75d15f0d10Skaashoek
76bdb66433Skaashoek fd = open(n, O_RDONLY);
7748b82470Srsc if(fd < 0)
7848b82470Srsc return -1;
79d15f0d10Skaashoek r = fstat(fd, st);
80d15f0d10Skaashoek close(fd);
81d15f0d10Skaashoek return r;
82d15f0d10Skaashoek }
83e204d0a1Srsc
84e204d0a1Srsc int
atoi(const char * s)85e204d0a1Srsc atoi(const char *s)
86e204d0a1Srsc {
87e204d0a1Srsc int n;
88e204d0a1Srsc
89e204d0a1Srsc n = 0;
90e204d0a1Srsc while('0' <= *s && *s <= '9')
91e204d0a1Srsc n = n*10 + *s++ - '0';
92e204d0a1Srsc return n;
93e204d0a1Srsc }
94eaea18cbSrsc
95eaea18cbSrsc void*
memmove(void * vdst,const void * vsrc,int n)96*308a3b88SFrans Kaashoek memmove(void *vdst, const void *vsrc, int n)
97eaea18cbSrsc {
98*308a3b88SFrans Kaashoek char *dst;
99*308a3b88SFrans Kaashoek const char *src;
100eaea18cbSrsc
101eaea18cbSrsc dst = vdst;
102eaea18cbSrsc src = vsrc;
103eaea18cbSrsc while(n-- > 0)
104eaea18cbSrsc *dst++ = *src++;
105eaea18cbSrsc return vdst;
106eaea18cbSrsc }
107