[flashrom] [PATCH] Add logfile support to flashrom
Uwe Hermann
uwe at hermann-uwe.de
Sat Jun 11 16:21:51 CEST 2011
On Thu, Jun 09, 2011 at 10:32:30PM +0200, Carl-Daniel Hailfinger wrote:
> Add log file support to flashrom.
>
> The log file will always contain all verbose messages even if the user
> doesn't specify -V. If the user specifies -VV, SPEW messages will be
> logged as well.
>
> Proof of concept, comments welcome.
>
> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>
> Index: flashrom-logfile/flash.h
> ===================================================================
> --- flashrom-logfile/flash.h (Revision 1326)
> +++ flashrom-logfile/flash.h (Arbeitskopie)
> @@ -229,6 +229,8 @@
> #define ERROR_NONFATAL 0x100
>
> /* cli_output.c */
> +int open_logfile(char *filename);
Can be "const char" too, I guess.
> +int msg_log(const char *fmt, ...);
> /* Let gcc and clang check for correct printf-style format strings. */
> int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
> #define MSG_ERROR 0
> Index: flashrom-logfile/cli_output.c
> ===================================================================
> --- flashrom-logfile/cli_output.c (Revision 1326)
> +++ flashrom-logfile/cli_output.c (Arbeitskopie)
> @@ -2,6 +2,7 @@
> * This file is part of the flashrom project.
> *
> * Copyright (C) 2009 Sean Nelson <audiohacked at gmail.com>
> + * Copyright (C) 2011 Carl-Daniel Hailfinger
> *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License as published by
> @@ -22,30 +23,70 @@
> #include <stdarg.h>
> #include "flash.h"
>
> -int print(int type, const char *fmt, ...)
> +static FILE *logfile = NULL;
> +
> +int open_logfile(char *filename)
> {
> + if (!filename) {
> + msg_gerr("No filename specified.\n");
> + return 1;
> + }
> + if ((logfile = fopen(filename, "w")) == NULL) {
Use "wb" please, the "b" is required to avoid issues on Windows. There's
another occurence in flashrom of fopen() withouth "b", that should be
fixed too.
> +int print(int type, const char *fmt, ...)
> +{
> + va_list ap;
> + int ret = 0;
> + int want_screen = 1;
> + int want_file = 1;
Can be merged in one line for more compact code.
There's a small issue with the patch, it double-prints some lines on stdout
now (in the logfile they appear only once if -o is used):
$ ./flashrom
flashrom v0.9.3-r1331 on Linux 2.6.38-2-amd64 (x86_64), built with libpci 3.1.7, GCC 4.5.2, little endian
flashrom is free software, get the source code at http://www.flashrom.org
flashrom v0.9.3-r1331 on Linux 2.6.38-2-amd64 (x86_64), built with libpci 3.1.7, GCC 4.5.2, little endian
Calibrating delay loop... OK.
ERROR: Could not get I/O privileges (Operation not permitted).
You need to be root.
Also, not all whitespace seems to be the same as in the logfile, e.g. for
$ ./flashrom -L -o foo
Uwe.
--
http://hermann-uwe.de | http://sigrok.org
http://randomprojects.org | http://unmaintained-free-software.org
More information about the flashrom
mailing list