chore: fix almost *ALL* warnings.
[lunaix-os.git] / lunaix-os / usr / libc / string.c
1 #include <string.h>
2
3 size_t
4 strlen(const char* str)
5 {
6     size_t len = 0;
7     while (str[len])
8         len++;
9     return len;
10 }
11
12 const char*
13 strchr(const char* str, int character)
14 {
15     char c = (char)character;
16     while ((*str)) {
17         if (*str == c) {
18             return str;
19         }
20         str++;
21     }
22     return c == '\0' ? str : NULL;
23 }
24
25 size_t
26 strnlen(const char* str, size_t max_len)
27 {
28     size_t len = 0;
29     while (str[len] && len <= max_len)
30         len++;
31     return len;
32 }
33
34 char*
35 strncpy(char* dest, const char* src, size_t n)
36 {
37     char c;
38     unsigned int i = 0;
39     while ((c = src[i]) && i <= n)
40         dest[i++] = c;
41     while (i <= n)
42         dest[i++] = 0;
43     return dest;
44 }
45
46 char*
47 strcpy(char* dest, const char* src)
48 {
49     char c;
50     unsigned int i = 0;
51     while ((c = src[i])) {
52         dest[i] = c;
53         i++;
54     }
55     dest[i] = '\0';
56     return dest;
57 }
58
59 int
60 strcmp(const char* a, const char* b)
61 {
62     while (*a && *a == *b) {
63         a++;
64         b++;
65     }
66     return *a - *b;
67 }