diff --git a/tools/ffu_extract.py b/tools/ffu_extract.py index 52aa0b8..de01ec9 100644 --- a/tools/ffu_extract.py +++ b/tools/ffu_extract.py @@ -18,27 +18,25 @@ CHUNK = 131072 def load(ffu): - f = open(ffu, "rb") + import mmap + raw = open(ffu, "rb") + f = mmap.mmap(raw.fileno(), 0, access=mmap.ACCESS_READ) sec = f.read(32) _, _, chunk_kb, _, cat, hsh = struct.unpack(" 0 + vals = struct.unpack("<11I", f[st + 204:st + 248]) + assert vals[0] == CHUNK, vals # blkSize sanity wcnt = vals[1] pos = st + 248 disk = {} # diskchunk -> datachunk dc = 0 for _ in range(wcnt): - f.seek(pos) - a, _ = struct.unpack("