v1.1.0 — mds extract
Fork of delta62/mds — first release of this fork.
Added
mds extract <FILE.mds>— read files straight out of an.mdfwithout producing an intermediate ISO.-o/--output <DIR>(defaults to the.mdsbasename),--listto print the tree without writing,--forceto extract into a non-empty directory.- Prefers Joliet (Unicode) names, falling back to primary ISO9660; strips
;1version suffixes. - Hand-rolled ISO9660 reader (no new dependencies) hardened against malformed images: bounded directory-extent allocation, recursion depth + ancestor cycle detection, both-endian field validation, sector-boundary checks, multi-extent rejection, even-length Joliet identifier validation.
- Output-side path-traversal and symlink defences, plus control-char escaping in
--list.
CookedSectorReader, a 2048-byte logical-sector view over raw 2352/2336/2448 track sectors, shared with the ISO conversion path.
Changed
- ISO conversion (
convert --format iso) carries fork fixes over upstream1.0.0: cooked user-data extraction from raw-mode tracks, MODE2/2336 (0x920) handling, and track-start seeking.
Verified end-to-end against a 564 MB MODE2/2448 Joliet disc: 1278 files, byte-for-byte identical to the same image converted to ISO and mounted.