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++; 28115e1774Srsc return (uchar)*p - (uchar)*q; 298b58e810Skaashoek } 308b58e810Skaashoek 31115e1774Srsc uint 3217a85657Srtm strlen(char *s) 3317a85657Srtm { 34dca5b5caSrsc int n; 35dca5b5caSrsc 3617a85657Srtm for(n = 0; s[n]; n++) 3717a85657Srtm ; 3817a85657Srtm return n; 3917a85657Srtm } 4017a85657Srtm 4143572072Srtm void* 42115e1774Srsc memset(void *dst, int c, uint n) 4343572072Srtm { 44dca5b5caSrsc char *d; 4543572072Srtm 46dca5b5caSrsc d = dst; 4743572072Srtm while(n-- > 0) 4843572072Srtm *d++ = c; 4943572072Srtm return dst; 5043572072Srtm } 5143572072Srtm 5217a85657Srtm char* 538b58e810Skaashoek strchr(const char *s, char c) 548b58e810Skaashoek { 558b58e810Skaashoek for(; *s; s++) 568b58e810Skaashoek if(*s == c) 578b58e810Skaashoek return (char*) s; 588b58e810Skaashoek return 0; 598b58e810Skaashoek } 608b58e810Skaashoek 618b58e810Skaashoek char* 6217a85657Srtm gets(char *buf, int max) 6317a85657Srtm { 64dca5b5caSrsc int i, cc; 6517a85657Srtm char c; 6617a85657Srtm 67dca5b5caSrsc for(i=0; i+1 < max; ){ 6817a85657Srtm cc = read(0, &c, 1); 6917a85657Srtm if(cc < 1) 7017a85657Srtm break; 71a059f025Srsc buf[i++] = c; 7217a85657Srtm if(c == '\n' || c == '\r') 7317a85657Srtm break; 7417a85657Srtm } 7517a85657Srtm buf[i] = '\0'; 7617a85657Srtm return buf; 7717a85657Srtm } 78d15f0d10Skaashoek 79d15f0d10Skaashoek int 80d15f0d10Skaashoek stat(char *n, struct stat *st) 81d15f0d10Skaashoek { 82bdb66433Skaashoek int fd; 83d15f0d10Skaashoek int r; 84d15f0d10Skaashoek 85bdb66433Skaashoek fd = open(n, O_RDONLY); 8648b82470Srsc if(fd < 0) 8748b82470Srsc return -1; 88d15f0d10Skaashoek r = fstat(fd, st); 89d15f0d10Skaashoek close(fd); 90d15f0d10Skaashoek return r; 91d15f0d10Skaashoek } 92e204d0a1Srsc 93e204d0a1Srsc int 94e204d0a1Srsc atoi(const char *s) 95e204d0a1Srsc { 96e204d0a1Srsc int n; 97e204d0a1Srsc 98e204d0a1Srsc n = 0; 99e204d0a1Srsc while('0' <= *s && *s <= '9') 100e204d0a1Srsc n = n*10 + *s++ - '0'; 101e204d0a1Srsc return n; 102e204d0a1Srsc } 103*eaea18cbSrsc 104*eaea18cbSrsc void* 105*eaea18cbSrsc memmove(void *vdst, void *vsrc, int n) 106*eaea18cbSrsc { 107*eaea18cbSrsc char *dst, *src; 108*eaea18cbSrsc 109*eaea18cbSrsc dst = vdst; 110*eaea18cbSrsc src = vsrc; 111*eaea18cbSrsc while(n-- > 0) 112*eaea18cbSrsc *dst++ = *src++; 113*eaea18cbSrsc return vdst; 114*eaea18cbSrsc } 115