From 324610e9cb735662a199783e3d26d8fef84c431d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kala=C5=A1=20=28Floxen=29?= Date: Tue, 14 Jul 2026 19:32:34 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1ny=20funkce=20pro=20parsov=C3=A1?= =?UTF-8?q?n=C3=AD=20integeru=20a=20longu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/int.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 kernel/int.c diff --git a/kernel/int.c b/kernel/int.c new file mode 100644 index 0000000..0b60177 --- /dev/null +++ b/kernel/int.c @@ -0,0 +1,44 @@ +#include "int.h" + +unsigned long parse_u32(const char *s, int *ok) { + unsigned long value = 0; + *ok = 0; + + if (!s || *s == '\0') { + return 0; + } + + while (*s) { + if (*s < '0' || *s > '9') { + return 0; + } + + value = value * 10UL + (unsigned long)(*s - '0'); + ++s; + } + + *ok = 1; + return value; +} + +long parse_i32(const char *s, int *ok) { + int sign = 1; + unsigned long v; + + if (!s || *s == '\0') { + *ok = 0; + return 0; + } + + if (*s == '-') { + sign = -1; + ++s; + } + + v = parse_u32(s, ok); + if (!*ok) { + return 0; + } + + return (long)v * (long)sign; +} \ No newline at end of file