+def is_windows_bootable_iso(file):
+ retval = False
+ regexes = {
+ "Windows XP Home" :"WXH(CCP|FPP|OEM|VOL|OCCP)_[A-Z]{2}",
+ "Windows XP Professional" :"WXP(CCP|FPP|OEM|VOL|OCCP)_[A-Z]{2}",
+ "Windows XP Home (SP1)" :"XRMH(CCP|FPP|OEM|VOL|OCCP)_[A-Z]{2}",
+ "Windows XP Professional (SP1)" :"XRMP(CCP|FPP|OEM|VOL|OCCP)_[A-Z]{2}",
+ "Windows XP Home (SP1a)" :"X1AH(CCP|FPP|OEM|VOL|OCCP)_[A-Z]{2}",
+ "Windows XP Professional (SP1a)" :"X1AP(CCP|FPP|OEM|VOL|OCCP)_[A-Z]{2}",
+ "Windows XP Home (SP2)" :"VRMH(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Professional (SP2)" :"VRMP(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Home (SP2b)" :"VX2H(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Professional (SP2b)" :"VX2P(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Home (SP3)" :"GRTMH(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Home K (SP3)" :"GRTMHK(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Home KN (SP3)" :"GRTMHKN(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Professional (SP3)" :"GRTMP(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Professional K (SP3)" :"GRTMPK(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP Professional KN (SP3)" :"GRTMPKN(CCP|FPP|OEM|VOL)_[A-Z]{2}",
+ "Windows XP from Dell" :"XP2_(PER|PRO)_ENG",
+ "Windows 7 Professional" :"WIN_7_PROFESSIONAL",
+ "Windows 7" :"WIN7",
+ }
+ label = is_iso9660_filesystem_format(file)
+ if label is not False:
+ for k,v in regexes.iteritems():
+ regex_str = "%s.*\(bootable\)" % v
+ regex = re.compile(regex_str)
+ if regex.search(label):
+ retval = k
+ break
+ return retval
+
+def is_linux_bootable_iso(file):
+ retval = False
+ regexes = {
+ "Asianux" :"Asianux",
+ "MIRACLE LINUX \\1.\\2" :"MLSE([0-9])([0-9])",
+ "Turbolinux" :"Turbolinux",
+ "Fedora Core \\1" :"^FC/([0-9\.]*)",
+ "CentOS \\2" :"CentOS( \-_)([0-9].[0-9])",
+ "Red Hat Enterprise Linux \\2 \\3":"RHEL(/|\-)([0-9\.\-U]) (i386|x86_64)",
+ "Red Hat Linux/\\1" :"Red Hat Linux/(.+)",
+ "openSUSE-\\1.\\2" :"^SU(1[0-3])([0-9])0.00",
+ "Debian \\1" :"^Debian (.+)",
+ "Buildix" :"^Buildix",
+ "Ubuntu \\1" :"^Ubuntu ([0-9].+)",
+ "Ubuntu Server \\1" :"^Ubuntu-Server (.+)",
+ }
+ label = is_iso9660_filesystem_format(file)
+ if label is not False:
+ for k,v in regexes.iteritems():
+ regex_str = "%s.*\(bootable\)" % v
+ regex = re.compile(regex_str)
+ if regex.search(label):
+ retval = re.sub(r"""%s\(bootable\)""" % v,k,label).strip()
+ break
+ return retval
+