[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