tm1637 signs of life, terminal builtin cmds
[cortex-from-scratch] / lib / string.c
1 #include <stdbool.h>
2 #include <stddef.h>
3 #include <stdint.h>
4
5 #include <lib/string.h> 
6
7 // TODO: add more
8 void *memcpy(void *dest, void *src, size_t count)
9 {   
10     const char *sp = (const char *)src;
11     char *dp = (char *)dest;
12     for(; count != 0; count--) *dp++ = *sp++;
13     return dest;
14 }
15
16 /* fillout memory with 'val' (i.e. all zeroes)
17  */
18 void *memset(void *dest, unsigned char val, size_t count)
19 {
20     char *temp = (char *)dest;
21     for( ; count != 0; count--) *temp++ = val;
22     return dest;
23 }
24
25 /* same as above but shorter */
26 unsigned short *memsetw(unsigned short *dest, unsigned short val, size_t count)
27 {
28     unsigned short *temp = (unsigned short *)dest;
29     for( ; count != 0; count--) *temp++ = val;
30     return dest;
31 }
32
33 int strlen(const char *str)
34 {
35     int retval;
36     for(retval = 0; *str != '\0'; str++) retval++;
37     return retval;
38 }
39
40 int strcmp(char * a, char * b) {
41
42         int alen = strlen(a);
43         int blen = strlen(b);
44
45         if (alen != blen)
46                 return 0;
47
48         for (; alen != 0; alen--) {
49                         if (*a++ != *b++)
50                                 return 0;
51         }
52         return 1;
53 }
54
55 char * strchr(const char *s, char c) {
56          for (; *s; s++)
57                  if (*s == c)
58                          return (char *) s;
59          return 0;
60 }
61