diff options
-rw-r--r-- | sys/kern/subr_prf.c | 17 | ||||
-rw-r--r-- | sys/sys/systm.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c index 56f0c2e..abe059bf7 100644 --- a/sys/kern/subr_prf.c +++ b/sys/kern/subr_prf.c @@ -416,6 +416,23 @@ vsnprintf(char *str, size_t size, const char *format, va_list ap) return (retval); } +/* + * Kernel version which takes radix argument vsnprintf(3). + */ +int +vsnrprintf(char *str, size_t size, int radix, const char *format, va_list ap) +{ + struct snprintf_arg info; + int retval; + + info.str = str; + info.remain = size; + retval = kvprintf(format, snprintf_func, &info, radix, ap); + if (info.remain >= 1) + *info.str++ = '\0'; + return (retval); +} + static void snprintf_func(int ch, void *arg) { diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 363f713..5699f43 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -157,6 +157,7 @@ int sprintf(char *buf, const char *, ...) __printflike(2, 3); int uprintf(const char *, ...) __printflike(1, 2); int vprintf(const char *, __va_list) __printflike(1, 0); int vsnprintf(char *, size_t, const char *, __va_list) __printflike(3, 0); +int vsnrprintf(char *, size_t, int, const char *, __va_list) __printflike(4, 0); int vsprintf(char *buf, const char *, __va_list) __printflike(2, 0); int ttyprintf(struct tty *, const char *, ...) __printflike(2, 3); int sscanf(const char *, char const *, ...); |