Nico Huber has uploaded this change for review. ( https://review.coreboot.org/21790
Change subject: Adapt CLI to use new libflashrom interface' print callback ......................................................................
Adapt CLI to use new libflashrom interface' print callback
This renames CLI's print() to flashrom_print_cb() and registers it through the new libflashrom interface.
v2: Add libflashrom.o to LIB_OBJS now that everything can be linked together.
Original-Change-Id: Idf19978eb8e340d258199193d2978f37409e9983 Original-Reviewed-on: https://review.coreboot.org/17948 Original-Tested-by: build bot (Jenkins) no-reply@coreboot.org Original-Reviewed-by: David Hendricks david.hendricks@gmail.com
Change-Id: Id33208d557317f31052513796e1fe26bc3ab72ab Signed-off-by: Nico Huber nico.huber@secunet.com --- M Makefile M cli_classic.c M cli_output.c M flash.h 4 files changed, 12 insertions(+), 8 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/90/21790/1
diff --git a/Makefile b/Makefile index 181fd99..55874ae 100644 --- a/Makefile +++ b/Makefile @@ -519,7 +519,7 @@ ############################################################################### # Library code.
-LIB_OBJS = layout.o flashrom.o udelay.o programmer.o helpers.o +LIB_OBJS = libflashrom.o layout.o flashrom.o udelay.o programmer.o helpers.o
############################################################################### # Frontend related stuff. diff --git a/cli_classic.c b/cli_classic.c index a2c2014..984a4da 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -30,6 +30,7 @@ #include "flash.h" #include "flashchips.h" #include "programmer.h" +#include "libflashrom.h"
static void cli_classic_usage(const char *name) { @@ -135,6 +136,8 @@ char *tempstr = NULL; char *pparam = NULL;
+ flashrom_set_log_callback((flashrom_log_callback *)&flashrom_print_cb); + print_version(); print_banner();
diff --git a/cli_output.c b/cli_output.c index feafbd2..e697985 100644 --- a/cli_output.c +++ b/cli_output.c @@ -71,19 +71,19 @@ #endif /* !STANDALONE */
/* Please note that level is the verbosity, not the importance of the message. */ -int print(enum msglevel level, const char *fmt, ...) +int flashrom_print_cb(enum msglevel level, const char *fmt, va_list ap) { - va_list ap; int ret = 0; FILE *output_type = stdout; + + va_list logfile_args; + va_copy(logfile_args, ap);
if (level < MSG_INFO) output_type = stderr;
if (level <= verbose_screen) { - va_start(ap, fmt); ret = vfprintf(output_type, fmt, ap); - va_end(ap); /* msg_*spew often happens inside chip accessors in possibly * time-critical operations. Don't slow them down by flushing. */ if (level != MSG_SPEW) @@ -91,12 +91,11 @@ } #ifndef STANDALONE if ((level <= verbose_logfile) && logfile) { - va_start(ap, fmt); - ret = vfprintf(logfile, fmt, ap); - va_end(ap); + ret = vfprintf(logfile, fmt, logfile_args); if (level != MSG_SPEW) fflush(logfile); } #endif /* !STANDALONE */ + va_end(logfile_args); return ret; } diff --git a/flash.h b/flash.h index 1da7e41..db8430c 100644 --- a/flash.h +++ b/flash.h @@ -30,6 +30,7 @@ #include <stdio.h> #include <stdint.h> #include <stddef.h> +#include <stdarg.h> #include <stdbool.h> #if IS_WINDOWS #include <windows.h> @@ -321,6 +322,7 @@ MSG_DEBUG2 = 4, MSG_SPEW = 5, }; +int flashrom_print_cb(enum msglevel level, const char *fmt, va_list ap); /* Let gcc and clang check for correct printf-style format strings. */ int print(enum msglevel level, const char *fmt, ...) #ifdef __MINGW32__