summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/subr_prf.c17
-rw-r--r--sys/sys/systm.h1
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 *, ...);
OpenPOWER on IntegriCloud