1 // string and memory functions.
3 // This software is copyright (c) 2007 Scott Wood <scott@buserror.net>.
5 // This software is provided 'as-is', without any express or implied warranty.
6 // In no event will the authors or contributors be held liable for any damages
7 // arising from the use of this software.
9 // Permission is hereby granted to everyone, free of charge, to use, copy,
10 // modify, prepare derivative works of, publish, distribute, perform,
11 // sublicense, and/or sell copies of the Software, provided that the above
12 // copyright notice and disclaimer of warranty be included in all copies or
13 // substantial portions of this software.
18 void *memcpy(void *dest, const void *src, size_t len)
20 const char *cs = static_cast<const char *>(src);
21 char *cd = static_cast<char *>(dest);
23 for (size_t i = 0; i < len; i++)
29 void *memmove(void *dest, const void *src, size_t len)
32 return memcpy(dest, src, len);
34 const char *cs = static_cast<const char *>(src);
35 char *cd = static_cast<char *>(dest);
37 for (size_t i = len - 1; i >= 0; i--)
43 int memcmp(const void *b1, const void *b2, size_t len)
46 const char *c1 = static_cast<const char *>(b1);
47 const char *c2 = static_cast<const char *>(b2);
49 for (pos = 0; pos < len; pos++) {
50 if (c1[pos] != c2[pos])
51 return c1[pos] - c2[pos];
59 size_t strnlen(const char *s, size_t n)
62 while (pos < n && *s++)
67 size_t strlen(const char *s)
75 char *strcpy(char *dest, const char *src)
86 char *strncpy(char *dest, const char *src, size_t len)
101 char *strcat(char *dest, const char *src)
104 dest += strlen(dest);
113 char *strncat(char *dest, const char *src, size_t len)
116 int orig_len = strlen(dest);
128 memset(dest, 0, len);
132 void *memset(void *b, int ch, size_t len)
134 char *c = static_cast<char *>(b);