summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSimon South <simon@simonsouth.net>2019-10-02 10:55:07 -0400
committerTom Rini <trini@konsulko.com>2019-10-31 07:22:53 -0400
commit9b3fbb2b439a717dda0eaa34cb455a9ce38532ef (patch)
treec0b5b8f7ac3647577352371be26db914592a0331 /lib
parent54b6abae3ae9dd181044ddd52429b4df5505872f (diff)
tiny-printf: Support vsnprintf()
Add a simple implementation of this function, to allow logging to be enabled in the SPL or TPL for systems that rely on the tiny printf() implementation. To keep the code size small, - The function is built only when logging is enabled, as it (currently) is not needed otherwise; and - Like the existing implementation of snprintf(), its buffer-size parameter is ignored. Signed-off-by: Simon South <simon@simonsouth.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/tiny-printf.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c
index ebef92fc9f..62e6381961 100644
--- a/lib/tiny-printf.c
+++ b/lib/tiny-printf.c
@@ -366,6 +366,22 @@ int sprintf(char *buf, const char *fmt, ...)
return ret;
}
+#if CONFIG_IS_ENABLED(LOG)
+/* Note that size is ignored */
+int vsnprintf(char *buf, size_t size, const char *fmt, va_list va)
+{
+ struct printf_info info;
+ int ret;
+
+ info.outstr = buf;
+ info.putc = putc_outstr;
+ ret = _vprintf(&info, fmt, va);
+ *info.outstr = '\0';
+
+ return ret;
+}
+#endif
+
/* Note that size is ignored */
int snprintf(char *buf, size_t size, const char *fmt, ...)
{