diff options
author | Jeff Andersen <jeffandersen@google.com> | 2018-03-20 12:05:49 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-03-20 19:30:06 -0700 |
commit | 228430afdd463c77a016e24370f64178e3102166 (patch) | |
tree | 9af1a94944eaa0e8f01048686df4266ac2d9d6e4 /common/printf.c | |
parent | 50da99d5d4587ac5f11bc820e42d396d73a93f6c (diff) | |
download | chrome-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.c | 15 |
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'; |