aboutsummaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-03-01 14:40:30 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-03-01 14:40:30 -0500
commit35d98182c5b86c25eb4e7fd18fc68f240683960b (patch)
treeeef74a8d1243e5d335b02dc99ae41ebc3077eae9 /libc
parentc7252588ebb95f97631e9470778c69afa00c35b5 (diff)
downloadkappa-35d98182c5b86c25eb4e7fd18fc68f240683960b.zip
kappa-35d98182c5b86c25eb4e7fd18fc68f240683960b.tar.gz
kappa-35d98182c5b86c25eb4e7fd18fc68f240683960b.tar.bz2
kappa-35d98182c5b86c25eb4e7fd18fc68f240683960b.tar.xz
vprintf and panic formatting
Diffstat (limited to 'libc')
-rw-r--r--libc/stdio.c37
1 files changed, 37 insertions, 0 deletions
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;
+}