diff options
author | 2023-03-25 14:31:09 +0000 | |
---|---|---|
committer | 2023-03-26 01:31:09 +1100 | |
commit | fb81cb16bb19603f7fa0fff3698bdfa32b2896fc (patch) | |
tree | 5dbed9954164f635fbb7a4b5c11fa69abcaa1f2f /scripts/minimaws/lib | |
parent | 9225dd2d19f4b9b4a8718a7ad686e10755c54571 (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.py | 12 |
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) |