diff options
author | Marvin Borner | 2019-12-07 13:40:28 +0100 |
---|---|---|
committer | Marvin Borner | 2019-12-07 13:40:28 +0100 |
commit | d94b024b73aeca06de417e0fd3c502495312a8b2 (patch) | |
tree | bff5cc1b757eeed7f58878cc13551c63464c5a31 /src/kernel/lib/stdlib/atoi.c | |
parent | 322167ceab19588473f9074e761390fdeb701790 (diff) |
Added userspace libc and began userspace based shell
Diffstat (limited to 'src/kernel/lib/stdlib/atoi.c')
-rw-r--r-- | src/kernel/lib/stdlib/atoi.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/kernel/lib/stdlib/atoi.c b/src/kernel/lib/stdlib/atoi.c new file mode 100644 index 0000000..4044972 --- /dev/null +++ b/src/kernel/lib/stdlib/atoi.c @@ -0,0 +1,24 @@ +#include <kernel/lib/math.h> +#include <stddef.h> +#include <stdint.h> +#include <kernel/lib/string.h> + +int atoi(char *str) +{ + size_t s_str = strlen(str); + if (!s_str) return 0; + + uint8_t negative = 0; + if (str[0] == '-') negative = 1; + + size_t i = 0; + if (negative) i++; + + int ret = 0; + for (; i < s_str; i++) { + ret += (str[i] - '0') * pow(10, (s_str - i) - 1); + } + + if (negative) ret *= -1; + return ret; +}
\ No newline at end of file |