diff options
author | davidcunado-arm <david.cunado@arm.com> | 2017-09-18 12:17:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-18 12:17:33 +0100 |
commit | b4f4a2f06ce4da2b7856abb71ad38e726aa7ec68 (patch) | |
tree | f1e70250154010f18994c4d1ea68ce0c133bd722 /common/tf_printf.c | |
parent | 756f9bb86ea71b5816da53e4a40ee6e3fe9e5625 (diff) | |
parent | 7f56e9a31c91099cd0147883a0282ec89ae0b346 (diff) |
Merge pull request #1093 from soby-mathew/eb/log_fw
Implement log framework
Diffstat (limited to 'common/tf_printf.c')
-rw-r--r-- | common/tf_printf.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/common/tf_printf.c b/common/tf_printf.c index c18e2f99..f73842ac 100644 --- a/common/tf_printf.c +++ b/common/tf_printf.c @@ -23,8 +23,10 @@ (((lcount) > 1) ? va_arg(args, unsigned long long int) : \ ((lcount) ? va_arg(args, unsigned long int) : va_arg(args, unsigned int))) -static void string_print(const char *str) +void tf_string_print(const char *str) { + assert(str); + while (*str) putchar(*str++); } @@ -64,15 +66,13 @@ static void unsigned_num_print(unsigned long long int unum, unsigned int radix) * The print exits on all other formats specifiers other than valid * combinations of the above specifiers. *******************************************************************/ -void tf_printf(const char *fmt, ...) +void tf_vprintf(const char *fmt, va_list args) { - va_list args; int l_count; long long int num; unsigned long long int unum; char *str; - va_start(args, fmt); while (*fmt) { l_count = 0; @@ -94,12 +94,12 @@ loop: break; case 's': str = va_arg(args, char *); - string_print(str); + tf_string_print(str); break; case 'p': unum = (uintptr_t)va_arg(args, void *); if (unum) - string_print("0x"); + tf_string_print("0x"); unsigned_num_print(unum, 16); break; @@ -123,13 +123,20 @@ loop: break; default: /* Exit on any other format specifier */ - goto exit; + return; } fmt++; continue; } putchar(*fmt++); } -exit: - va_end(args); +} + +void tf_printf(const char *fmt, ...) +{ + va_list va; + + va_start(va, fmt); + tf_vprintf(fmt, va); + va_end(va); } |