diff options
Diffstat (limited to 'firmware/stub')
-rw-r--r-- | firmware/stub/vboot_api_stub.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/firmware/stub/vboot_api_stub.c b/firmware/stub/vboot_api_stub.c index 732facb9..f3289e2b 100644 --- a/firmware/stub/vboot_api_stub.c +++ b/firmware/stub/vboot_api_stub.c @@ -19,11 +19,27 @@ __pragma(warning (disable: 4100)) +/* U-Boot's printf uses '%L' for uint64_t. gcc uses '%l'. */ +#define MAX_FMT 255 +static char fmtbuf[MAX_FMT+1]; +static const char *fixfmt(const char *format) { + int i; + for(i=0; i<MAX_FMT && format[i]; i++) { + fmtbuf[i] = format[i]; + if(format[i] == '%' && format[i+1] == 'L') { + fmtbuf[i+1] = 'l'; + i++; + } + } + fmtbuf[i] = '\0'; + return fmtbuf; +} + void VbExError(const char* format, ...) { va_list ap; va_start(ap, format); fprintf(stderr, "ERROR: "); - vfprintf(stderr, format, ap); + vfprintf(stderr, fixfmt(format), ap); va_end(ap); exit(1); } @@ -31,9 +47,10 @@ void VbExError(const char* format, ...) { void VbExDebug(const char* format, ...) { va_list ap; + int i; va_start(ap, format); fprintf(stderr, "DEBUG: "); - vfprintf(stderr, format, ap); + vfprintf(stderr, fixfmt(format), ap); va_end(ap); } |