diff options
author | Jacob Garber <jgarber1@ualberta.ca> | 2019-07-03 12:38:46 -0600 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2019-07-04 21:45:58 +0000 |
commit | c764fb20122e7f6cb88855d4f671611aeb76df76 (patch) | |
tree | 5dc1414a88ba2a94c0d6d0777bde6d1b753f0480 /src/console | |
parent | b19946cc627b3c027a527bc51cfe2e08ead46b07 (diff) |
console: Implement j specifier in vtxprintf()
It is occasionally useful to print a uintmax_t or intmax_t, so add
support for the j specifier. This also makes defining the PRI* macros
in <inttypes.h> simpler.
Change-Id: I656e3992029199b48e62a9df2d56f54c34e4e10f
Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34027
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr>
Diffstat (limited to 'src/console')
-rw-r--r-- | src/console/vtxprintf.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/console/vtxprintf.c b/src/console/vtxprintf.c index 2d4953d013..b50f3987a5 100644 --- a/src/console/vtxprintf.c +++ b/src/console/vtxprintf.c @@ -18,6 +18,7 @@ #include <console/vtxprintf.h> #include <ctype.h> #include <string.h> +#include <stdint.h> #define call_tx(x) tx_byte(x, data) @@ -136,7 +137,7 @@ int vtxprintf(void (*tx_byte)(unsigned char byte, void *data), int field_width; /* width of output field */ int precision; /* min. # of digits for integers; max number of chars for from string */ - int qualifier; /* 'h', 'H', 'l', or 'L' for integer fields */ + int qualifier; /* 'h', 'H', 'l', 'L', 'z', or 'j' for integer fields */ int count; @@ -190,7 +191,7 @@ repeat: /* get the conversion qualifier */ qualifier = -1; - if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt == 'z') { + if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt == 'z' || *fmt == 'j') { qualifier = *fmt; ++fmt; if (*fmt == 'l') { @@ -291,6 +292,8 @@ repeat: num = va_arg(args, unsigned long); } else if (qualifier == 'z') { num = va_arg(args, size_t); + } else if (qualifier == 'j') { + num = va_arg(args, uintmax_t); } else if (qualifier == 'h') { num = (unsigned short) va_arg(args, int); if (flags & SIGN) |