~az1/iso9660-rs

iso9660-rs fork with support for long filenames
8cc434a3 — Alex Zepeda 1 year, 3 months ago
Update README to match reality
f513c30c — Alex Zepeda 1 year, 3 months ago
cdfs: run doc tests relative to workspace
68ee1b84 — Alex Zepeda 1 year, 3 months ago
Split things up into two crates:

clone

read-only
https://git.sr.ht/~az1/iso9660-rs
read/write
git@git.sr.ht:~az1/iso9660-rs

You can also use your local clone with git send-email.

#cdfs

builds.sr.ht status docs.rs status

ISO 9660 / ECMA-119 filesystem implementation written in Rust. It's still very much a work-in-progress. The project overview lives at Sourcehut:

https://sr.ht/~az1/cdfs/

#Usage (cdfs)

See the examples directory and the documentation for more information on how to use the cdfs library in your project.

#Usage (cdfs-fuse)

If you're just interested in using cdfs to mount an ISO, there's a FUSE implementation in the cdfs-fuse crate.

To install locally:

$ cargo install cdfs-fuse
…
   Compiling cdfs-fuse v0.2.4
    Finished release [optimized] target(s) in 21.97s
  Installing /home/user/.cargo/bin/cdfs_fuse
   Installed package `cdfs v0.2.4` (executable `cdfs_fuse`)
$ cdfs_fuse images/rockridge.iso mountpoint/
2023-09-06T00:00:00.203Z INFO  [cdfs_fuse] NOTE: The filesystem must be manually unmounted after exit
2023-09-06T00:00:00.206Z INFO  [cdfs_fuse] Found POSIX.1 extensions with usable inodes.
2023-09-06T00:00:00.206Z INFO  [fuser::session] Mounting mountpoint/

Or run cdfs-fuse directly from the workspace root like so:

$ cargo run -- images/rockridge.iso mountpoint/
    Finished dev [unoptimized + debuginfo] target(s) in 0.15s
     Running `target/debug/cdfs_fuse`
2023-09-06T00:00:00.203Z INFO  [cdfs_fuse] NOTE: The filesystem must be manually unmounted after exit
2023-09-06T00:00:00.206Z INFO  [cdfs_fuse] Found POSIX.1 extensions with usable inodes.
2023-09-06T00:00:00.206Z INFO  [fuser::session] Mounting mountpoint/
…

#Supported ISO 9660 Extensions

System Use Sharing Protocol
CE – continuation area yes
PD – padding field no
SP – SUSP start not enforced
ST – SUSP end ignored
ER – extensions reference yes
ES – extensions selector no
Rock Ridge Interchange
PX – POSIX attributes yes
PN – POSIX inodes yes
SL – symbolic links yes
NM – long file names yes
CL – child links yes
PL – parent links N/A
RE – relocated directories yes
TF – file timestamps yes
SF – sparse files no

#References

#Licensing

This project is available under the Apache 2.0 or MIT license at your choosing.