X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e5c3c8accffbcd77fea12ccf2b0accc70c645aaa..1fe5f5eb5378a47bf0f3451762743c162e40faad:/lunaix-os/libs/klibc/stdio/ksprintf.c?ds=sidebyside diff --git a/lunaix-os/libs/klibc/stdio/ksprintf.c b/lunaix-os/libs/klibc/stdio/ksprintf.c index 38b9031..24591dc 100644 --- a/lunaix-os/libs/klibc/stdio/ksprintf.c +++ b/lunaix-os/libs/klibc/stdio/ksprintf.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #define NUMBUFSIZ 24 @@ -20,13 +20,16 @@ static const char flag_chars[] = "#0- +"; #define FLAG_CAPS (1 << 9) size_t -__ksprintf_internal(char* buffer, char* fmt, size_t max_len, va_list vargs) +__ksprintf_internal(char* buffer, + const char* fmt, + size_t max_len, + va_list vargs) { // This sprintf just a random implementation I found it on Internet . lol. // Of course, with some modifications for porting to LunaixOS :) char numbuf[NUMBUFSIZ]; - uint32_t ptr = 0; + u32_t ptr = 0; for (; *fmt; ++fmt) { if (max_len && ptr >= max_len - 1) { break; @@ -102,6 +105,9 @@ __ksprintf_internal(char* buffer, char* fmt, size_t max_len, va_list vargs) : va_arg(vargs, unsigned); flags |= FLAG_NUMERIC; break; + case 'b': + base = 2; + goto format_unsigned; case 'x': base = 16; goto format_unsigned; @@ -110,7 +116,7 @@ __ksprintf_internal(char* buffer, char* fmt, size_t max_len, va_list vargs) base = 16; goto format_unsigned; case 'p': - num = (uintptr_t)va_arg(vargs, void*); + num = (ptr_t)va_arg(vargs, void*); base = 16; flags |= FLAG_ALT | FLAG_ALT2 | FLAG_NUMERIC; break;