From 647fba8ee386bbbcd430979e41ab4bdda4273673 Mon Sep 17 00:00:00 2001 From: Markus Pargmann Date: Tue, 8 Dec 2015 10:39:27 +0100 Subject: vsprintf: Add scnprintf from kernel Signed-off-by: Markus Pargmann Signed-off-by: Sascha Hauer --- include/stdio.h | 1 + lib/vsprintf.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/stdio.h b/include/stdio.h index f190911762..d0817bd071 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -13,6 +13,7 @@ void serial_printf(const char *fmt, ...) __attribute__ ((format(__printf__, 1, 2 int sprintf(char *buf, const char *fmt, ...) __attribute__ ((format(__printf__, 2, 3))); int snprintf(char *buf, size_t size, const char *fmt, ...) __attribute__ ((format(__printf__, 3, 4))); +int scnprintf(char *buf, size_t size, const char *fmt, ...) __attribute__ ((format(__printf__, 3, 4))); int vsprintf(char *buf, const char *fmt, va_list args); char *asprintf(const char *fmt, ...) __attribute__ ((format(__printf__, 1, 2))); char *vasprintf(const char *fmt, va_list ap); diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 800ded7939..9b8e8cf5f8 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -595,6 +595,30 @@ int snprintf(char *buf, size_t size, const char *fmt, ...) } EXPORT_SYMBOL(snprintf); +/** + * scnprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @size: The size of the buffer, including the trailing null space + * @fmt: The format string to use + * @...: Arguments for the format string + * + * The return value is the number of characters written into @buf not including + * the trailing '\0'. If @size is == 0 the function returns 0. + */ + +int scnprintf(char *buf, size_t size, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i = vscnprintf(buf, size, fmt, args); + va_end(args); + + return i; +} +EXPORT_SYMBOL(scnprintf); + /* Simplified asprintf. */ char *vasprintf(const char *fmt, va_list ap) { -- cgit v1.2.3