1a4c03deaSrtm #include "types.h" 2a4c03deaSrtm #include "defs.h" 3a4c03deaSrtm 455e95b16Srtm void* 5b5ee5165Srsc memset(void *dst, int c, uint n) 655e95b16Srtm { 755e95b16Srtm char *d = (char*) dst; 855e95b16Srtm 955e95b16Srtm while(n-- > 0) 1055e95b16Srtm *d++ = c; 1155e95b16Srtm 1255e95b16Srtm return dst; 1355e95b16Srtm } 147baa34a4Skaashoek 157baa34a4Skaashoek int 16b5ee5165Srsc memcmp(const void *v1, const void *v2, uint n) 177baa34a4Skaashoek { 1829270816Srtm const uchar *s1 = (const uchar*) v1; 1929270816Srtm const uchar *s2 = (const uchar*) v2; 207baa34a4Skaashoek 217baa34a4Skaashoek while(n-- > 0) { 227baa34a4Skaashoek if(*s1 != *s2) 237baa34a4Skaashoek return (int) *s1 - (int) *s2; 247baa34a4Skaashoek s1++, s2++; 257baa34a4Skaashoek } 267baa34a4Skaashoek 277baa34a4Skaashoek return 0; 287baa34a4Skaashoek } 2921a88fd4Skaashoek 3021a88fd4Skaashoek void* 31b5ee5165Srsc memmove(void *dst, const void *src, uint n) 3221a88fd4Skaashoek { 3321a88fd4Skaashoek const char *s; 3421a88fd4Skaashoek char *d; 3521a88fd4Skaashoek 3621a88fd4Skaashoek s = src; 3721a88fd4Skaashoek d = dst; 3821a88fd4Skaashoek if(s < d && s + n > d) { 3921a88fd4Skaashoek s += n; 4021a88fd4Skaashoek d += n; 4121a88fd4Skaashoek while(n-- > 0) 4221a88fd4Skaashoek *--d = *--s; 4321a88fd4Skaashoek } else 4421a88fd4Skaashoek while(n-- > 0) 4521a88fd4Skaashoek *d++ = *s++; 4621a88fd4Skaashoek 4721a88fd4Skaashoek return dst; 4821a88fd4Skaashoek } 49b22d8982Skaashoek 50b22d8982Skaashoek int 51b5ee5165Srsc strncmp(const char *p, const char *q, uint n) 52b22d8982Skaashoek { 53b22d8982Skaashoek while(n > 0 && *p && *p == *q) 54b22d8982Skaashoek n--, p++, q++; 55b22d8982Skaashoek if(n == 0) 56b22d8982Skaashoek return 0; 57b22d8982Skaashoek else 5829270816Srtm return (int) ((uchar) *p - (uchar) *q); 59b22d8982Skaashoek } 60*7e89fb90Srsc 61*7e89fb90Srsc // Like strncpy but guaranteed to NUL-terminate. 62*7e89fb90Srsc char* 63*7e89fb90Srsc safestrcpy(char *s, const char *t, int n) 64*7e89fb90Srsc { 65*7e89fb90Srsc char *os; 66*7e89fb90Srsc 67*7e89fb90Srsc os = s; 68*7e89fb90Srsc if(n <= 0) 69*7e89fb90Srsc return os; 70*7e89fb90Srsc while(--n > 0 && (*s++ = *t++) != 0) 71*7e89fb90Srsc ; 72*7e89fb90Srsc *s = 0; 73*7e89fb90Srsc return os; 74*7e89fb90Srsc } 75*7e89fb90Srsc 76