summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/minimaws/lib
diff options
context:
space:
mode:
author wilbertpol <wilbertpol@users.noreply.github.com>2023-03-25 14:31:09 +0000
committer GitHub <noreply@github.com>2023-03-26 01:31:09 +1100
commitfb81cb16bb19603f7fa0fff3698bdfa32b2896fc (patch)
tree5dbed9954164f635fbb7a4b5c11fa69abcaa1f2f /scripts/minimaws/lib
parent9225dd2d19f4b9b4a8718a7ad686e10755c54571 (diff)
minimaws: Let command-line romident identify media inside zip archives. (#11024)
Diffstat (limited to 'scripts/minimaws/lib')
-rw-r--r--scripts/minimaws/lib/auxverbs.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/scripts/minimaws/lib/auxverbs.py b/scripts/minimaws/lib/auxverbs.py
index bff43bc9601..ac520da7d87 100644
--- a/scripts/minimaws/lib/auxverbs.py
+++ b/scripts/minimaws/lib/auxverbs.py
@@ -11,6 +11,7 @@ import os
import os.path
import struct
import sys
+import zipfile
import zlib
@@ -129,8 +130,15 @@ class _Identifier(object):
def processFile(self, path):
if os.path.splitext(path)[1].lower() != '.chd':
- with open(path, mode='rb', buffering=0) as f:
- self.processRomFile(path, f)
+ if zipfile.is_zipfile(path):
+ with zipfile.ZipFile(path, 'r') as zip:
+ for info in zip.namelist():
+ if info.filename[-1] != '/':
+ with zip.open(info, mode='r') as f:
+ self.processRomFile(path + '/' + info.filename, f)
+ else:
+ with open(path, mode='rb', buffering=0) as f:
+ self.processRomFile(path, f)
else:
with open(path, mode='rb') as f:
sha1 = self.probeChd(f)