xref: /xv6-public/ulib.c (revision d15f0d10)
1*d15f0d10Skaashoek #include "types.h"
2*d15f0d10Skaashoek #include "stat.h"
3*d15f0d10Skaashoek #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 
2317a85657Srtm unsigned int
2417a85657Srtm strlen(char *s)
2517a85657Srtm {
2617a85657Srtm   int n = 0;
2717a85657Srtm   for(n = 0; s[n]; n++)
2817a85657Srtm     ;
2917a85657Srtm   return n;
3017a85657Srtm }
3117a85657Srtm 
3243572072Srtm void *
3343572072Srtm memset(void *dst, int c, unsigned int n)
3443572072Srtm {
3543572072Srtm   char *d = (char *) dst;
3643572072Srtm 
3743572072Srtm   while(n-- > 0)
3843572072Srtm     *d++ = c;
3943572072Srtm 
4043572072Srtm   return dst;
4143572072Srtm }
4243572072Srtm 
4317a85657Srtm char *
4417a85657Srtm gets(char *buf, int max)
4517a85657Srtm {
4617a85657Srtm   int i = 0, cc;
4717a85657Srtm   char c;
4817a85657Srtm 
4917a85657Srtm   while(i+1 < max){
5017a85657Srtm     cc = read(0, &c, 1);
5117a85657Srtm     if(cc < 1)
5217a85657Srtm       break;
5317a85657Srtm     if(c == '\n' || c == '\r')
5417a85657Srtm       break;
5517a85657Srtm     buf[i++] = c;
5617a85657Srtm   }
5717a85657Srtm   buf[i] = '\0';
5817a85657Srtm   return buf;
5917a85657Srtm }
60*d15f0d10Skaashoek 
61*d15f0d10Skaashoek int
62*d15f0d10Skaashoek stat(char *n, struct stat *st)
63*d15f0d10Skaashoek {
64*d15f0d10Skaashoek   int fd = open(n, O_RDONLY);
65*d15f0d10Skaashoek   int r;
66*d15f0d10Skaashoek 
67*d15f0d10Skaashoek   if (fd < 0) return -1;
68*d15f0d10Skaashoek 
69*d15f0d10Skaashoek   r = fstat(fd, st);
70*d15f0d10Skaashoek   close(fd);
71*d15f0d10Skaashoek   return r;
72*d15f0d10Skaashoek }
73