[Kimchi-devel] [PATCH] ISO Scan: Use volume set id instead of volume id for some wrong images.

Mark Wu wudxw at linux.vnet.ibm.com
Wed Mar 12 06:30:32 UTC 2014


Some RHEL ISO images store the infomation of volume id in the location
of volume set id mistakenly. But it's better to support those ISO images
since they're already public available. For details, please see:

isoinfo -d -i rhel-server-6.5-ppc64-dvd.iso
CD-ROM is in ISO 9660 format
System id: PPC
Volume id: RED_HAT
Volume set id: RHEL_6.5 ppc64
Publisher id:
Data preparer id:
Application id: RHEL_6.5 ppc64
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 1634718
Joliet with UCS level 3 found

Signed-off-by: Mark Wu <wudxw at linux.vnet.ibm.com>
---
 src/kimchi/isoinfo.py | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/kimchi/isoinfo.py b/src/kimchi/isoinfo.py
index 8d423ad..b7315e0 100644
--- a/src/kimchi/isoinfo.py
+++ b/src/kimchi/isoinfo.py
@@ -235,7 +235,16 @@ class IsoImage(object):
             raise IsoFormatError("KCHISO0006E", {'filename': self.path})
         if vd_ident != 'CD001' or vd_ver != 1:
             raise IsoFormatError("KCHISO0007E", {'filename': self.path})
-        self.volume_id = vol_id
+        if vol_id.strip() == 'RED_HAT':
+            # Some RHEL ISO images store the infomation of volume id in the
+            # location of volume set id mistakenly.
+            self.volume_id = self._get_volume_set_id(data)
+        else:
+            self.volume_id = vol_id
+
+    def _get_volume_set_id(self, data):
+        # The index is picked from ISO-9660 specification.
+        return data[190: 318]
 
     def _get_iso_data(self, offset, size):
         if self.remote:
-- 
1.8.4.2




More information about the Kimchi-devel mailing list