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 238b58e810Skaashoek int 248b58e810Skaashoek strcmp(const char *p, const char *q) 258b58e810Skaashoek { 268b58e810Skaashoek while(*p && *p == *q) 278b58e810Skaashoek p++, q++; 28*115e1774Srsc return (uchar)*p - (uchar)*q; 298b58e810Skaashoek } 308b58e810Skaashoek 31*115e1774Srsc uint 3217a85657Srtm strlen(char *s) 3317a85657Srtm { 3417a85657Srtm int n = 0; 3517a85657Srtm for(n = 0; s[n]; n++) 3617a85657Srtm ; 3717a85657Srtm return n; 3817a85657Srtm } 3917a85657Srtm 4043572072Srtm void* 41*115e1774Srsc memset(void *dst, int c, uint n) 4243572072Srtm { 4343572072Srtm char *d = (char*) dst; 4443572072Srtm 4543572072Srtm while(n-- > 0) 4643572072Srtm *d++ = c; 4743572072Srtm 4843572072Srtm return dst; 4943572072Srtm } 5043572072Srtm 5117a85657Srtm char* 528b58e810Skaashoek strchr(const char *s, char c) 538b58e810Skaashoek { 548b58e810Skaashoek for(; *s; s++) 558b58e810Skaashoek if(*s == c) 568b58e810Skaashoek return (char*) s; 578b58e810Skaashoek return 0; 588b58e810Skaashoek } 598b58e810Skaashoek 608b58e810Skaashoek 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; 70a059f025Srsc buf[i++] = c; 7117a85657Srtm if(c == '\n' || c == '\r') 7217a85657Srtm break; 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); 8548b82470Srsc if(fd < 0) 8648b82470Srsc return -1; 87d15f0d10Skaashoek r = fstat(fd, st); 88d15f0d10Skaashoek close(fd); 89d15f0d10Skaashoek return r; 90d15f0d10Skaashoek } 91e204d0a1Srsc 92e204d0a1Srsc int 93e204d0a1Srsc atoi(const char *s) 94e204d0a1Srsc { 95e204d0a1Srsc int n; 96e204d0a1Srsc 97e204d0a1Srsc n = 0; 98e204d0a1Srsc while('0' <= *s && *s <= '9') 99e204d0a1Srsc n = n*10 + *s++ - '0'; 100e204d0a1Srsc return n; 101e204d0a1Srsc } 102