xref: /xv6-public/ulib.c (revision 8b58e810)
1d15f0d10Skaashoek #include "types.h"
2d15f0d10Skaashoek #include "stat.h"
3d15f0d10Skaashoek #include "fcntl.h"
49b37d1bfSrsc #include "user.h"
59b37d1bfSrsc 
6c41f1de5Srtm int
7c41f1de5Srtm puts(char *s)
8c41f1de5Srtm {
917a85657Srtm   return write(1, s, strlen(s));
10c41f1de5Srtm }
11c41f1de5Srtm 
12b75c11b2Srsc char*
13b75c11b2Srsc strcpy(char *s, char *t)
14b75c11b2Srsc {
15b75c11b2Srsc 	char *os;
16b75c11b2Srsc 
17b75c11b2Srsc 	os = s;
18b75c11b2Srsc 	while((*s++ = *t++) != 0)
19b75c11b2Srsc 		;
20b75c11b2Srsc 	return os;
21b75c11b2Srsc }
2217a85657Srtm 
23*8b58e810Skaashoek int
24*8b58e810Skaashoek strcmp(const char *p, const char *q)
25*8b58e810Skaashoek {
26*8b58e810Skaashoek 	while (*p && *p == *q)
27*8b58e810Skaashoek 		p++, q++;
28*8b58e810Skaashoek 	return (int) ((unsigned char) *p - (unsigned char) *q);
29*8b58e810Skaashoek }
30*8b58e810Skaashoek 
3117a85657Srtm unsigned int
3217a85657Srtm strlen(char *s)
3317a85657Srtm {
3417a85657Srtm   int n = 0;
3517a85657Srtm   for(n = 0; s[n]; n++)
3617a85657Srtm     ;
3717a85657Srtm   return n;
3817a85657Srtm }
3917a85657Srtm 
4043572072Srtm void *
4143572072Srtm memset(void *dst, int c, unsigned int n)
4243572072Srtm {
4343572072Srtm   char *d = (char *) dst;
4443572072Srtm 
4543572072Srtm   while(n-- > 0)
4643572072Srtm     *d++ = c;
4743572072Srtm 
4843572072Srtm   return dst;
4943572072Srtm }
5043572072Srtm 
5117a85657Srtm char *
52*8b58e810Skaashoek strchr(const char *s, char c)
53*8b58e810Skaashoek {
54*8b58e810Skaashoek 	for (; *s; s++)
55*8b58e810Skaashoek 		if (*s == c)
56*8b58e810Skaashoek 			return (char *) s;
57*8b58e810Skaashoek 	return 0;
58*8b58e810Skaashoek }
59*8b58e810Skaashoek 
60*8b58e810Skaashoek char *
6117a85657Srtm gets(char *buf, int max)
6217a85657Srtm {
6317a85657Srtm   int i = 0, cc;
6417a85657Srtm   char c;
6517a85657Srtm 
6617a85657Srtm   while(i+1 < max){
6717a85657Srtm     cc = read(0, &c, 1);
6817a85657Srtm     if(cc < 1)
6917a85657Srtm       break;
7017a85657Srtm     if(c == '\n' || c == '\r')
7117a85657Srtm       break;
7217a85657Srtm     buf[i++] = c;
7317a85657Srtm   }
7417a85657Srtm   buf[i] = '\0';
7517a85657Srtm   return buf;
7617a85657Srtm }
77d15f0d10Skaashoek 
78d15f0d10Skaashoek int
79d15f0d10Skaashoek stat(char *n, struct stat *st)
80d15f0d10Skaashoek {
81bdb66433Skaashoek   int fd;
82d15f0d10Skaashoek   int r;
83d15f0d10Skaashoek 
84bdb66433Skaashoek   fd = open(n, O_RDONLY);
85d15f0d10Skaashoek   if (fd < 0) return -1;
86d15f0d10Skaashoek   r = fstat(fd, st);
87d15f0d10Skaashoek   close(fd);
88d15f0d10Skaashoek   return r;
89d15f0d10Skaashoek }
90