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 <[email protected]> > > 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 <[email protected]> > + * 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 _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
