int kprintf(const char* fmt, ...) { va_list ap; kprintf_res = 0; unsigned long n = 0; va_start(ap, fmt); while(*fmt) { if(*fmt == '%') { switch(*++fmt) { case 's': kputs(va_arg(ap, char*)); break; case 'd': n = va_arg(ap, unsigned long int); kputn(n, 10); break; case 'o': n = va_arg(ap, unsigned long int); kputn(n, 8); break; case 'x': n = va_arg(ap, unsigned long int); kputn(n, 16); break; case '%': kputc('%'); break; case '\0': goto out; break; default: kputc('%'); kputc(*fmt); break; } } else kputc(*fmt); fmt++; }
u32 kprintf(const char *fmt, ...) { const char *s; int n; va_list ap; va_start(ap, fmt); ret = 0; while (*fmt) { if (*fmt == '%') { fmt++; switch (*fmt) { case 's': s = va_arg(ap, char *); kputs(s); break; case 'd': case 'u': n = va_arg(ap, int); kputn(n, 10); break; case 'x': case 'p': n = va_arg(ap, int); kputn(n, 16); break; case '%': kputc('%'); break; case '\0': goto out; default: kputc('%'); kputc(*fmt); break; } } else
int kprintf(const char* fmt, ...) { va_list ap; const char* s; unsigned long n; char c; va_start(ap, fmt); kprintf_res = 0; while (*fmt) { if (*fmt == '%') { fmt++; switch (*fmt) { case 's': s = va_arg(ap, char*); kputs(s); break; case 'd': case 'u': n = va_arg(ap, unsigned long int); kputn(n, 10); break; case 'x': case 'p': n = va_arg(ap, unsigned long int); kputn(n, 16); break; case 'c': c = va_arg(ap, int); kputc(c); break; case '%': kputc('%'); break; case '\0': goto out; default: kputc('%'); kputc(*fmt); break; } } else {
void kaprintf(const char* format, int ** args) { int pad; char padfill; signed long long value = 0; while (*format) { if (*format == '%') { format++; pad = 0; if (*format == '0') { padfill = '0'; format++; } else { padfill = ' '; } while (*format >= '0' && *format <= '9') { pad = pad * 10 + *format++ - '0'; } if (format[0] == 'l' && format[1] == 'l' && (format[2] == 'd' || format[2] == 'i' || format[2] == 'o' || format[2] == 'u' || format[2] == 'x')) { value = *(unsigned long long*)(*args); *args += 2; format += 2; } else if (format[0] == 'd' || format[0] == 'u') { value = *(*args)++; if (value < 0) { console_putchar_ansi('-'); pad--; value = -value; } } else if (format[0] == 'i' || format[0] == 'o' || format[0] == 'p' || format[0] == 'x') { value = *(*args)++; value = value & 0xffffffff; } switch (*format) { case 0: return; case '%': console_putchar_ansi('%'); break; case 'c': console_putchar_ansi(*(*args)++); break; case 'd': case 'i': case 'u': kputn(value, 10, pad, padfill); break; case 'o': kputn(value, 8, pad, padfill); break; case 'p': case 'x': kputn(value, 16, pad, padfill); break; case 's': console_writestring((char*)*(*args)++); break; default: console_putchar_ansi('%'); console_putchar_ansi(*format); break; } format++; } else { console_putchar_ansi(*format++); } } // terminal_flush_ansi_escape_sequence(); }