diff options
author | phk <phk@FreeBSD.org> | 2003-02-04 10:00:34 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-02-04 10:00:34 +0000 |
commit | 1abb95308bcc72d0a245f8d4c0f779f3cbe67d90 (patch) | |
tree | fb8cff7ecb9b71f302d44196666e92ebcf102acc | |
parent | 99ddf819f9950cb17e81c2e37fb3e4fe0f574c5a (diff) | |
download | FreeBSD-src-1abb95308bcc72d0a245f8d4c0f779f3cbe67d90.zip FreeBSD-src-1abb95308bcc72d0a245f8d4c0f779f3cbe67d90.tar.gz |
Add vsnrprintf() which is just like vsnprintf() but takes a "radix"
argument for the kernel-special %r format.
-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 *, ...); |