1d15f0d10Skaashoek #include "types.h" 2d15f0d10Skaashoek #include "stat.h" 3d15f0d10Skaashoek #include "fcntl.h" 49b37d1bfSrsc #include "user.h" 5*82201353Srsc #include "x86.h" 69b37d1bfSrsc 7b75c11b2Srsc char* 8b75c11b2Srsc strcpy(char *s, char *t) 9b75c11b2Srsc { 10b75c11b2Srsc char *os; 11b75c11b2Srsc 12b75c11b2Srsc os = s; 13b75c11b2Srsc while((*s++ = *t++) != 0) 14b75c11b2Srsc ; 15b75c11b2Srsc return os; 16b75c11b2Srsc } 1717a85657Srtm 188b58e810Skaashoek int 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 2717a85657Srtm strlen(char *s) 2817a85657Srtm { 29dca5b5caSrsc int n; 30dca5b5caSrsc 3117a85657Srtm for(n = 0; s[n]; n++) 3217a85657Srtm ; 3317a85657Srtm return n; 3417a85657Srtm } 3517a85657Srtm 3643572072Srtm void* 37115e1774Srsc memset(void *dst, int c, uint n) 3843572072Srtm { 39*82201353Srsc stosb(dst, c, n); 4043572072Srtm return dst; 4143572072Srtm } 4243572072Srtm 4317a85657Srtm char* 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* 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 71d15f0d10Skaashoek stat(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 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* 96eaea18cbSrsc memmove(void *vdst, void *vsrc, int n) 97eaea18cbSrsc { 98eaea18cbSrsc char *dst, *src; 99eaea18cbSrsc 100eaea18cbSrsc dst = vdst; 101eaea18cbSrsc src = vsrc; 102eaea18cbSrsc while(n-- > 0) 103eaea18cbSrsc *dst++ = *src++; 104eaea18cbSrsc return vdst; 105eaea18cbSrsc } 106