[flashrom] [commit] r1136 - trunk
repository service
svn at flashrom.org
Sun Aug 8 23:56:52 CEST 2010
Author: mkarcher
Date: Sun Aug 8 23:56:52 2010
New Revision: 1136
URL: http://flashrom.org/trac/coreboot/changeset/1136
Log:
Add dmidecode quirk workaround
dmidecode emits a warning message about unsupported SMBIOS versions
to stdout before the information asked for when using "-s". I consider
this behaviour broken, but we still need to workaround it as e.g. Fedora
currently distributes an dmidecode with this behaviour.
Signed-off-by: Michael Karcher <flashrom at mkarcher.dialup.fu-berlin.de>
Acked-by: Sean Nelson <audiohacked at gmail.com>
Modified:
trunk/dmi.c
Modified: trunk/dmi.c
==============================================================================
--- trunk/dmi.c Sun Aug 8 19:04:21 2010 (r1135)
+++ trunk/dmi.c Sun Aug 8 23:56:52 2010 (r1136)
@@ -76,15 +76,24 @@
msg_perr("DMI pipe open error\n");
return NULL;
}
- if (!fgets(answerbuf, DMI_MAX_ANSWER_LEN, dmidecode_pipe)) {
- if(ferror(dmidecode_pipe)) {
- msg_perr("DMI pipe read error\n");
- pclose(dmidecode_pipe);
- return NULL;
- } else {
- answerbuf[0] = 0; /* Hit EOF */
+
+ /* Kill lines starting with '#', as recent dmidecode versions
+ have the quirk to emit a "# SMBIOS implementations newer..."
+ message even on "-s" if the SMBIOS declares a
+ newer-than-supported version number, while it *should* only print
+ the requested string. */
+ do {
+ if (!fgets(answerbuf, DMI_MAX_ANSWER_LEN, dmidecode_pipe)) {
+ if(ferror(dmidecode_pipe)) {
+ msg_perr("DMI pipe read error\n");
+ pclose(dmidecode_pipe);
+ return NULL;
+ } else {
+ answerbuf[0] = 0; /* Hit EOF */
+ }
}
- }
+ } while(answerbuf[0] == '#');
+
/* Toss all output above DMI_MAX_ANSWER_LEN away to prevent
deadlock on pclose. */
while (!feof(dmidecode_pipe))
More information about the flashrom
mailing list