1a4c03deaSrtm #include "types.h" 2a4c03deaSrtm #include "defs.h" 3a4c03deaSrtm 455e95b16Srtm void* 5b5ee5165Srsc memset(void *dst, int c, uint n) 655e95b16Srtm { 7dca5b5caSrsc char *d; 855e95b16Srtm 9dca5b5caSrsc d = (char*)dst; 1055e95b16Srtm while(n-- > 0) 1155e95b16Srtm *d++ = c; 1255e95b16Srtm 1355e95b16Srtm return dst; 1455e95b16Srtm } 157baa34a4Skaashoek 167baa34a4Skaashoek int 17b5ee5165Srsc memcmp(const void *v1, const void *v2, uint n) 187baa34a4Skaashoek { 19dca5b5caSrsc const uchar *s1, *s2; 207baa34a4Skaashoek 21dca5b5caSrsc s1 = v1; 22dca5b5caSrsc s2 = v2; 237baa34a4Skaashoek while(n-- > 0) { 247baa34a4Skaashoek if(*s1 != *s2) 25dca5b5caSrsc return *s1 - *s2; 267baa34a4Skaashoek s1++, s2++; 277baa34a4Skaashoek } 287baa34a4Skaashoek 297baa34a4Skaashoek return 0; 307baa34a4Skaashoek } 3121a88fd4Skaashoek 3221a88fd4Skaashoek void* 33b5ee5165Srsc memmove(void *dst, const void *src, uint n) 3421a88fd4Skaashoek { 3521a88fd4Skaashoek const char *s; 3621a88fd4Skaashoek char *d; 3721a88fd4Skaashoek 3821a88fd4Skaashoek s = src; 3921a88fd4Skaashoek d = dst; 4021a88fd4Skaashoek if(s < d && s + n > d) { 4121a88fd4Skaashoek s += n; 4221a88fd4Skaashoek d += n; 4321a88fd4Skaashoek while(n-- > 0) 4421a88fd4Skaashoek *--d = *--s; 4521a88fd4Skaashoek } else 4621a88fd4Skaashoek while(n-- > 0) 4721a88fd4Skaashoek *d++ = *s++; 4821a88fd4Skaashoek 4921a88fd4Skaashoek return dst; 5021a88fd4Skaashoek } 51b22d8982Skaashoek 52b22d8982Skaashoek int 53b5ee5165Srsc strncmp(const char *p, const char *q, uint n) 54b22d8982Skaashoek { 55b22d8982Skaashoek while(n > 0 && *p && *p == *q) 56b22d8982Skaashoek n--, p++, q++; 57b22d8982Skaashoek if(n == 0) 58b22d8982Skaashoek return 0; 59b22d8982Skaashoek else 6029270816Srtm return (int) ((uchar) *p - (uchar) *q); 61b22d8982Skaashoek } 627e89fb90Srsc 637e89fb90Srsc // Like strncpy but guaranteed to NUL-terminate. 647e89fb90Srsc char* 657e89fb90Srsc safestrcpy(char *s, const char *t, int n) 667e89fb90Srsc { 677e89fb90Srsc char *os; 687e89fb90Srsc 697e89fb90Srsc os = s; 707e89fb90Srsc if(n <= 0) 717e89fb90Srsc return os; 727e89fb90Srsc while(--n > 0 && (*s++ = *t++) != 0) 737e89fb90Srsc ; 747e89fb90Srsc *s = 0; 757e89fb90Srsc return os; 767e89fb90Srsc } 777e89fb90Srsc 78*f32f3638Srsc int 79*f32f3638Srsc strlen(const char *s) 80*f32f3638Srsc { 81*f32f3638Srsc int n; 82*f32f3638Srsc 83*f32f3638Srsc for(n = 0; s[n]; n++) 84*f32f3638Srsc ; 85*f32f3638Srsc return n; 86*f32f3638Srsc } 87*f32f3638Srsc 88