added commenting, removed deprecated functions
[cortex-from-scratch] / lib / string.c
1 /* (CC-BY-NC-SA) ROBIN KRENS - ROBIN @ ROBINKRENS.NL
2  * 
3  * $LOG$
4  * 2019/7/20 - ROBIN KRENS      
5  * Initial version 
6  * 
7  * $DESCRIPTION$
8  * Re-implementation of POSIX String functions
9  *
10  */
11
12 #include <stdbool.h>
13 #include <stddef.h>
14 #include <stdint.h>
15
16 #include <lib/string.h> 
17
18 void *memcpy(void *dest, void *src, size_t count)
19 {   
20     const char *sp = (const char *)src;
21     char *dp = (char *)dest;
22     for(; count != 0; count--) *dp++ = *sp++;
23     return dest;
24 }
25
26 /* fillout memory with 'val' (i.e. all zeroes)
27  */
28 void *memset(void *dest, unsigned char val, size_t count)
29 {
30     char *temp = (char *)dest;
31     for( ; count != 0; count--) *temp++ = val;
32     return dest;
33 }
34
35 /* same as above but shorter */
36 unsigned short *memsetw(unsigned short *dest, unsigned short val, size_t count)
37 {
38     unsigned short *temp = (unsigned short *)dest;
39     for( ; count != 0; count--) *temp++ = val;
40     return dest;
41 }
42
43 int strlen(const char *str)
44 {
45     int retval;
46     for(retval = 0; *str != '\0'; str++) retval++;
47     return retval;
48 }
49
50 int strcmp(char * a, char * b) {
51
52         int alen = strlen(a);
53         int blen = strlen(b);
54
55         if (alen != blen)
56                 return 0;
57
58         for (; alen != 0; alen--) {
59                         if (*a++ != *b++)
60                                 return 0;
61         }
62         return 1;
63 }
64
65 char * strchr(const char *s, char c) {
66          for (; *s; s++)
67                  if (*s == c)
68                          return (char *) s;
69          return 0;
70 }
71