summaryrefslogtreecommitdiff
path: root/common/printf.c
diff options
context:
space:
mode:
authorJeff Andersen <jeffandersen@google.com>2018-03-20 12:05:49 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-03-20 19:30:06 -0700
commit228430afdd463c77a016e24370f64178e3102166 (patch)
tree9af1a94944eaa0e8f01048686df4266ac2d9d6e4 /common/printf.c
parent50da99d5d4587ac5f11bc820e42d396d73a93f6c (diff)
downloadchrome-ec-228430afdd463c77a016e24370f64178e3102166.tar.gz
Add vsnprintf function.
This function enables variadic functions to take advantage of functionality provided by snprintf. Signed-off-by: Jeff Andersen <jeffandersen@google.com> BRANCH=none BUG=b:72360575 TEST=make buildall -j Change-Id: I0095a96339b374ef8030b87b5184fa4678b439eb Reviewed-on: https://chromium-review.googlesource.com/971761 Commit-Ready: Jeff Andersen <jeffandersen@google.com> Tested-by: Jeff Andersen <jeffandersen@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common/printf.c')
-rw-r--r--common/printf.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/common/printf.c b/common/printf.c
index 479634c7aa..1034058a50 100644
--- a/common/printf.c
+++ b/common/printf.c
@@ -352,19 +352,28 @@ static int snprintf_addchar(void *context, int c)
int snprintf(char *str, int size, const char *format, ...)
{
- struct snprintf_context ctx;
va_list args;
int rv;
+ va_start(args, format);
+ rv = vsnprintf(str, size, format, args);
+ va_end(args);
+
+ return rv;
+}
+
+int vsnprintf(char *str, int size, const char *format, va_list args)
+{
+ struct snprintf_context ctx;
+ int rv;
+
if (!str || !size)
return EC_ERROR_INVAL;
ctx.str = str;
ctx.size = size - 1; /* Reserve space for terminating '\0' */
- va_start(args, format);
rv = vfnprintf(snprintf_addchar, &ctx, format, args);
- va_end(args);
/* Terminate string */
*ctx.str = '\0';