Skip to content

v1.1.0 — mds extract

Choose a tag to compare

@pacnpal pacnpal released this 19 May 23:13
· 5 commits to main since this release

Fork of delta62/mds — first release of this fork.

Added

  • mds extract <FILE.mds> — read files straight out of an .mdf without producing an intermediate ISO.
    • -o/--output <DIR> (defaults to the .mds basename), --list to print the tree without writing, --force to extract into a non-empty directory.
    • Prefers Joliet (Unicode) names, falling back to primary ISO9660; strips ;1 version 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 upstream 1.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.