diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-03-01 14:40:30 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-03-01 14:40:30 -0500 |
| commit | 35d98182c5b86c25eb4e7fd18fc68f240683960b (patch) | |
| tree | eef74a8d1243e5d335b02dc99ae41ebc3077eae9 /libc | |
| parent | c7252588ebb95f97631e9470778c69afa00c35b5 (diff) | |
| download | kappa-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.c | 37 |
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; +} |