Skip to content

ODFileSystem v0.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Jul 20:57
· 4 commits to main since this release

Highlights

ODFileSystem v0.7.0 significantly improves large-disc support, audio CD
handling, Workbench integration, and AmigaOS 4 compatibility.

  • Correctly reads large, fragmented, and sparse UDF files.
  • Supports reads beyond 4 GiB on devices without TD64.
  • Exposes CD-Text titles and adds cue/WAV audio-image support.
  • Improves mounting, media changes, and stale-volume handling.
  • Adds resident filesystem metadata and restores the 32 KiB ROM profile.

Filesystem and large-media support

  • Walk the complete UDF allocation-descriptor chain, fixing corrupted reads
    from files larger than approximately 1 GiB, fragmented files, sparse files,
    and multi-extent directories.
  • Read beyond 4 GiB using TD64, NSD, or SCSI READ(10), automatically
    selecting a method supported by the device.
  • Report usable saturated sizes for files too large for classic AmigaDOS size
    fields.
  • Consolidate ISO 9660 and Joliet handling, substantially reducing duplicated
    code and ROM usage.
  • Share and harden UDF directory traversal and Macintosh timestamp conversion.

Audio CD support

  • Show CD-Text track titles as comments on virtual WAV and AIFF files
    (#10).
  • Use the CD-Text album title as the volume name for pure audio CDs.
  • Correct CD-TEXT.txt generation so every decoded string appears on the
    proper track line.
  • Support audio cue sheets backed by raw or RIFF/WAVE files, including
    synthesized CD-Text from cue-sheet titles and performers.
  • Allow imgls, imgcat, and imginfo to mount, inspect, and extract pure
    audio and mixed-mode images.
  • Add a configurable Workbench icon for audio CDs through
    ENV:Sys/def_cdda.info or ENVARC:Sys/def_cdda.info.

AmigaOS handler and Workbench integration

  • Raise the minimum handler stack to 16 KiB and update the packaged DOSDriver
    and mountlist examples accordingly.
  • Continue startup on the supplied stack if the private stack allocation
    fails, avoiding a hung startup packet.
  • Add ForceLoad = 1 to the packaged DOSDriver and examples so the disk
    filesystem is not silently replaced by an older ROM implementation
    (#4).
  • Reference-count shared library bases across handler instances, fixing
    failures after duplicate mounts.
  • Validate startup messages and produce useful diagnostics for malformed
    mountlists.
  • Keep handlers resident when drives are empty and mount media when it is
    subsequently inserted (#8).
  • Return the correct responses for unknown packets and operations attempted
    without mounted media.
  • Report an empty drive as “no disk” instead of “not enough memory”
    (#13).
  • Correct multi-component paths inside the virtual CDDA directory
    (#12).
  • Present normal write/delete protection bits for files copied from read-only
    media, avoiding unnecessarily protected destination files
    (#14).
  • Retain inactive volume nodes while applications still hold locks or file
    handles, allowing Workbench to release .backdrop locks after media removal
    (#15).
  • Retry deferred DOS volume publication when the volume-list lock is busy,
    ensuring Workbench eventually receives the volume icon.
  • Add resident/RomTag support and expose synchronized version information in
    the handler banner, resident metadata, and FileSystem.resource creator.

AmigaOS 4

  • Resolve Rock Ridge and UDF symbolic links through the native filesystem
    vector interface.
  • Run device I/O through caller-owned requests when invoked from vector
    callbacks, preventing hangs during remounts and audio reads.
  • Support longer filenames through a 256-byte OS4 node-name buffer.
  • Honor the DismountDevice() keep-device flag during shutdown.
  • Use GetFileSize() instead of the obsolete Seek() API when loading the
    audio CD icon.

Build, size, and tests

  • Enable LTO for ROM builds and restore the enforced 32 KiB ROM size limit.
  • Remove unused formatting, logging, and CDDA code from feature-reduced ROM
    builds.
  • Derive resident version fields from the release tag.
  • Add a conventional distclean target.
  • Consolidate duplicated cache, CDDA, lock, SCSI, UDF, and mount-finalization
    code.
  • Expand regression coverage for UDF extents and directory traversal, cache
    failures and read-ahead, CD-Text, audio images, virtual audio files, and
    plain ISO 9660 versus Joliet filename behavior.

Full Changelog: v0.6.0...v0.7.0