2 #include <libc/stdio.h>
3 #include <libc/stdlib.h>
4 #include <libc/string.h>
8 __sprintf_internal(char* buffer, char* fmt, va_list args)
23 buffer[ptr] = (char)va_arg(args, int);
28 char* str = va_arg(args, char*);
29 strcpy(buffer + ptr, str);
36 num = va_arg(args, int);
37 __itoa_internal(num, buffer + ptr, 10, &adv);
41 unsigned int unum = va_arg(args, unsigned int);
42 __uitoa_internal(unum, buffer + ptr, 10, &adv);
46 num = va_arg(args, int);
47 __itoa_internal(num, buffer + ptr, 8, &adv);
53 num = va_arg(args, int);
54 __itoa_internal(num, buffer + ptr, 16, &adv);
58 while ((c_ = buffer[p])) {
59 buffer[p] = c_ & ~((c_ & 0x40) >> 1);
66 uintptr_t dptr = va_arg(args, uintptr_t);
67 __itoa_internal((int)dptr, buffer + ptr, 16, &adv);
87 sprintf(char* buffer, char* fmt, ...)
91 __sprintf_internal(buffer, fmt, args);