From 35d98182c5b86c25eb4e7fd18fc68f240683960b Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sun, 1 Mar 2015 14:40:30 -0500 Subject: vprintf and panic formatting --- libc/stdio.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'libc/stdio.c') diff --git a/libc/stdio.c b/libc/stdio.c index 8219d11..6359c47 100644 --- a/libc/stdio.c +++ b/libc/stdio.c @@ -82,3 +82,40 @@ int printf(const char *fmt, ...) va_end(ap); return 0; } + +int vprintf(const char *fmt, va_list ap) +{ + while(*fmt) + { + char ch = *fmt++; + switch(ch) + { + case '%': + { + switch(*fmt++) + { + case 'c': + putchar(va_arg(ap, int)); + break; + case 's': + puts(va_arg(ap, const char*)); + break; + case 'x': + print_hex(va_arg(ap, unsigned)); + break; + case 'd': + puts(itoa(va_arg(ap, unsigned), 10)); + break; + default: + puts("printf: unknown format\n"); + break; + } + break; + } + default: + putchar(ch); + break; + } + } + return 0; +} -- cgit v1.1