lamfold_squash/lib.rs
1//! # lamfold-squash — the SquashFS frontend of the lamfold read-only media stack.
2//!
3//! Clean-room SquashFS 4.0 reader. SquashFS is the root filesystem inside almost
4//! every Linux live ISO, so this frontend is the *recursion payoff*: mounted over
5//! a file-inside-an-ISO (`FileBlockSource`) via `dispatch_fs_over_source`, it
6//! reads the live root directly — the `lamoptical` + boot-from-ISO + read-the-root
7//! convergence (`the lamfold design spec` §9).
8//!
9//! Reads over a lamfold [`lamfold::BlockSource`] and implements
10//! [`lamfold::FoldFrontend`]; all decompression (gzip/xz/zstd/lz4/lzo) goes
11//! through the shared substrate codec registry — the frontend describes only the
12//! on-disk layout (superblock, compressed metadata blocks, inodes, directory
13//! listings, data blocks, fragments).
14//!
15//! Scope: the read path for basic + extended directories/files, symlinks,
16//! inline directory listings, full data blocks, and fragments. Deferred: xattrs,
17//! the export/lookup table, the directory index (we linear-scan), and sparse
18//! optimisation beyond zero-fill.
19//!
20//! Derived only from the public SquashFS format documentation (kernel
21//! `Documentation/filesystems/squashfs` + the community spec); the GPL kernel
22//! driver and `squashfs-tools` are fenced off — never read or copied.
23
24#![cfg_attr(not(any(test, feature = "std")), no_std)]
25#![forbid(unsafe_code)]
26
27extern crate alloc;
28
29mod squash;
30
31pub use squash::SquashFs;