From d29b361251aaf275981b66d83ab2772d5def98b0 Mon Sep 17 00:00:00 2001 From: cem Date: Wed, 1 Jun 2016 16:09:56 +0000 Subject: libthr: Add vprintf variant of _thread_printf, formatted PANIC() No ABI change. Reviewed by: kib Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D6672 --- lib/libthr/thread/thr_printf.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'lib/libthr/thread/thr_printf.c') diff --git a/lib/libthr/thread/thr_printf.c b/lib/libthr/thread/thr_printf.c index ed94287..8e9a151 100644 --- a/lib/libthr/thread/thr_printf.c +++ b/lib/libthr/thread/thr_printf.c @@ -52,8 +52,17 @@ static void pstr(int fd, const char *s); void _thread_printf(int fd, const char *fmt, ...) { + va_list ap; + + va_start(ap, fmt); + _thread_vprintf(fd, fmt, ap); + va_end(ap); +} + +void +_thread_vprintf(int fd, const char *fmt, va_list ap) +{ static const char digits[16] = "0123456789abcdef"; - va_list ap; char buf[20]; char *s; unsigned long r, u; @@ -61,13 +70,12 @@ _thread_printf(int fd, const char *fmt, ...) long d; int islong; - va_start(ap, fmt); while ((c = *fmt++)) { islong = 0; if (c == '%') { next: c = *fmt++; if (c == '\0') - goto out; + return; switch (c) { case 'c': pchar(fd, va_arg(ap, int)); @@ -111,8 +119,6 @@ next: c = *fmt++; } pchar(fd, c); } -out: - va_end(ap); } /* -- cgit v1.1