appledouble: initial commit, extracted from ad-decoder

The codec module (src/appledouble.rs) lifted verbatim from ad-decoder's
working tree at extraction time — including its uncommitted entry-ID
constant additions — with only the crate-level docs rewritten. 17
in-module tests carried over and green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Claude Fable 5
2026-07-19 11:38:23 -05:00
commit c2a6c95f15
5 changed files with 910 additions and 0 deletions

17
README.md Normal file
View File

@@ -0,0 +1,17 @@
# appledouble
AppleSingle/AppleDouble container codec: exhaustive parse, lossless build.
Extracted from [ad-decoder] as a shared crate. Entries decode into a
`BTreeMap<u32, Vec<u8>>` with typed views over Real Name (3), Comment (4),
File Dates (8), Finder Info (9), and Macintosh File Info (10) — everything
else is preserved as raw bytes, so parse → build round trips are lossless
even for entry types this crate has no opinion about. The macOS `ATTR`
extension (arbitrary xattrs packed after Finder Info) is parsed and rebuilt.
Consumers:
- **ad-decoder** — assertive (non-obliterative) sidecar folding onto APFS
- **adx** — AS/AD inspection and editing
- **fsinspect** — FUSE-side AppleDouble synthesis for Linux EA recovery
[ad-decoder]: https://code.movq.us/movq/ad-decoder