feat: a pseudo shell environment for basic interacting and testing purpose
[lunaix-os.git] / lunaix-os / libs / klibc / string / trim.c
1 #include <klibc/string.h>
2
3 #define WS_CHAR(c)                                                             \
4     (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\v' || c == '\r')
5
6 void
7 strrtrim(char* str)
8 {
9     size_t l = strlen(str);
10     while (l < (size_t)-1) {
11         char c = str[l];
12         if (!c || WS_CHAR(c)) {
13             l--;
14             continue;
15         }
16         break;
17     }
18     str[l + 1] = '\0';
19 }
20
21 char*
22 strltrim_safe(char* str)
23 {
24     size_t l = 0;
25     char c = 0;
26     while ((c = str[l]) && WS_CHAR(c)) {
27         l++;
28     }
29
30     if (!l)
31         return str;
32     return strcpy(str, str + l);
33 }