Initial commit
[savezelda.git] / loader / string.c
1 // Copyright 2008-2009  Segher Boessenkool  <segher@kernel.crashing.org>
2 // This code is licensed to you under the terms of the GNU GPL, version 2;
3 // see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
4
5 #include "loader.h"
6
7 size_t strlen(const char *s)
8 {
9         size_t len;
10
11         for (len = 0; s[len]; len++)
12                 ;
13
14         return len;
15 }
16
17 size_t strnlen(const char *s, size_t count)
18 {
19         size_t len;
20
21         for (len = 0; s[len] && len < count; len++)
22                 ;
23
24         return len;
25 }
26
27 void *memset(void *b, int c, size_t len)
28 {
29         size_t i;
30
31         for (i = 0; i < len; i++)
32                 ((unsigned char *)b)[i] = c;
33
34         return b;
35 }
36
37 void *memcpy(void *dst, const void *src, size_t len)
38 {
39         size_t i;
40
41         for (i = 0; i < len; i++)
42                 ((unsigned char *)dst)[i] = ((unsigned char *)src)[i];
43
44         return dst;
45 }
46
47 int memcmp(const void *b1, const void *b2, size_t len)
48 {
49         size_t i;
50
51         for (i = 0; i < len; i++) {
52                 int diff = ((unsigned char *)b1)[i] - ((unsigned char *)b2)[i];
53                 if (diff)
54                         return diff;
55         }
56
57         return 0;
58 }