Message ID | 1463256198-3829-3-git-send-email-sjg@chromium.org |
---|---|
State | Accepted |
Commit | 5c411d88be8df5f6a8a1ea0c961f7c35ba82c064 |
Delegated to: | Simon Glass |
Headers | show |
On 14.05.2016 22:02, Simon Glass wrote: > Add a simple version of this function for SPL. It does not check the buffer > size as this would add to the code size. > > Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan
On 16 May 2016 at 03:31, Stefan Roese <sr@denx.de> wrote: > On 14.05.2016 22:02, Simon Glass wrote: >> >> Add a simple version of this function for SPL. It does not check the >> buffer >> size as this would add to the code size. >> >> Signed-off-by: Simon Glass <sjg@chromium.org> > > > Reviewed-by: Stefan Roese <sr@denx.de> > > Thanks, > Stefan Applied to u-boot-dm.
diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c index fbd5368..4b70263 100644 --- a/lib/tiny-printf.c +++ b/lib/tiny-printf.c @@ -16,6 +16,9 @@ static char *bf; static char zs; +/* Current position in sprintf() output string */ +static char *outstr; + static void out(char c) { *bf++ = c; @@ -40,7 +43,7 @@ static void div_out(unsigned int *num, unsigned int div) out_dgt(dgt); } -int vprintf(const char *fmt, va_list va) +int _vprintf(const char *fmt, va_list va, void (*putc)(const char ch)) { char ch; char *p; @@ -133,8 +136,28 @@ int printf(const char *fmt, ...) int ret; va_start(va, fmt); - ret = vprintf(fmt, va); + ret = _vprintf(fmt, va, putc); + va_end(va); + + return ret; +} + +static void putc_outstr(char ch) +{ + *outstr++ = ch; +} + +/* Note that size is ignored */ +int snprintf(char *buf, size_t size, const char *fmt, ...) +{ + va_list va; + int ret; + + va_start(va, fmt); + outstr = buf; + ret = _vprintf(fmt, va, putc_outstr); va_end(va); + *outstr = '\0'; return ret; }
Add a simple version of this function for SPL. It does not check the buffer size as this would add to the code size. Signed-off-by: Simon Glass <sjg@chromium.org> --- lib/tiny-printf.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-)