From b905869a35f062a4e5072f10bec3a2ba3db0e365 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Wed, 30 Jul 2025 14:32:01 -0400 Subject: working userland with some invoke syscalls --- lib/itoa.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/itoa.c (limited to 'lib/itoa.c') diff --git a/lib/itoa.c b/lib/itoa.c new file mode 100644 index 0000000..57f0c22 --- /dev/null +++ b/lib/itoa.c @@ -0,0 +1,32 @@ +#include "string.h" + +int +ltostr(char *s, int size, unsigned long l, bool sign, int radix) +{ + unsigned wsize = 0; + unsigned digits = 0; + if((long)l < 0 && sign) { + l = -((long)l); + if(size > wsize && s != 0) s[wsize] = '-'; + wsize++; + } + + for(unsigned long lv = l; lv != 0; lv /= radix) { + digits++; + } + + if(digits-- == 0) { + if(size > wsize && s != 0) s[wsize] = '0'; + wsize++; + } + + for(unsigned long lv = l; lv != 0; lv /= radix) { + int digit = lv % radix; + if(size > digits - wsize && s != 0) { + s[digits - wsize] = (digit >= 10 ? (digit + 'a' - 10) : digit + '0'); + } + wsize++; + } + if(size > wsize && s != 0) s[wsize] = 0; + return ++wsize; +} -- cgit v1.2.1