summaryrefslogtreecommitdiff
path: root/kernel/src/libk/string.c
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksav013@gmail.com>2022-08-07 16:39:28 +0200
committerAleksa Vuckovic <aleksav013@gmail.com>2022-08-07 16:43:26 +0200
commit71396c5cd460890c52e348687e6e7c864e2dfeed (patch)
tree72e7dd114cea46c5209dba2e0c2ed9ffeb7f55b5 /kernel/src/libk/string.c
parent50aaae893611af890a6855158ad0a3e32c7b2c43 (diff)
types.h; libk and heap begining
Diffstat (limited to 'kernel/src/libk/string.c')
-rw-r--r--kernel/src/libk/string.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/kernel/src/libk/string.c b/kernel/src/libk/string.c
new file mode 100644
index 0000000..a4d0191
--- /dev/null
+++ b/kernel/src/libk/string.c
@@ -0,0 +1,43 @@
+#include <types.h>
+
+size_t strlen(const char* s)
+{
+ char *p = (char*)s;
+ while (*p) p++;
+ return p - s;
+}
+
+uint64_t stoi(const char *s)
+{
+ uint64_t num = 0;
+ size_t n = strlen(s);
+
+ for (size_t i = 0; i < n; i++) {
+ num *= 10;
+ num += s[i] - '0';
+ }
+
+ return num;
+}
+
+void strrev(char *s)
+{
+ size_t n = strlen(s);
+ char a[100];
+ for (size_t i = 0; i < n; i++) {
+ a[i] = s[n - 1 - i];
+ }
+ for (size_t i = 0; i < n; i++) {
+ s[i] = a[i];
+ }
+}
+
+void itos(uint64_t num, char* s)
+{
+ size_t i;
+ for (i = 0; num; num/=10, i++) {
+ s[i] = '0' + num%10;
+ }
+ s[i] = '\0';
+ strrev(s);
+}