File i2c-tools-r6063-dont-choke-when-no-eeprom.diff of Package i2c-tools

Subject: decode-dimms: Don't choke when no EEPROM is found
Upstream: yes, r6063

Don't choke when no SPD EEPROM is found while the eeprom or at24 driver
is loaded. This can happen, handle the case gracefully.
---
 eeprom/decode-dimms |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

--- i2c-tools-3.1.0.orig/eeprom/decode-dimms
+++ i2c-tools-3.1.0/eeprom/decode-dimms
@@ -1728,7 +1728,7 @@ sub sysfs_device_attribute
 
 sub get_dimm_list
 {
-	my (@dirs, $dir, $file, @files);
+	my (@dirs, $dir, $opened, $file, @files);
 
 	if ($use_sysfs) {
 		@dirs = ('/sys/bus/i2c/drivers/eeprom', '/sys/bus/i2c/drivers/at24');
@@ -1738,6 +1738,7 @@ sub get_dimm_list
 
 	foreach $dir (@dirs) {
 		next unless opendir(local *DIR, $dir);
+		$opened++;
 		while (defined($file = readdir(DIR))) {
 			if ($use_sysfs) {
 				# We look for I2C devices like 0-0050 or 2-0051
@@ -1758,12 +1759,12 @@ sub get_dimm_list
 		close(DIR);
 	}
 
-	if (@files) {
-		return sort { $a->{file} cmp $b->{file} } @files;
-	} elsif (! -d '/sys/module/eeprom') {
-		print "No EEPROM found, are you sure the eeprom module is loaded?\n";
+	if (!$opened) {
+		print STDERR "No EEPROM found, try loading the eeprom or at24 module\n";
 		exit;
 	}
+
+	return sort { $a->{file} cmp $b->{file} } @files;
 }
 
 # @dimm is a list of hashes. There's one hash for each EEPROM we found.
openSUSE Build Service is sponsored by