mirror of
https://github.com/JotaRandom/hfsutils.git
synced 2026-04-27 05:19:22 +00:00
master
PDF Generation Complete:
- 94 pages of exhaustive HFS/HFS+ documentation
- Size: 309KB (316,326 bytes)
- PDF version 1.7
- All 11 chapters included
- Fixed all LaTeX errors:
* Replaced \text{clumpSize} with \mathrm{clumpSize}
* Removed Chinese character 危 (U+5371)
* All equations using \mathrm{} correctly
Contains complete bit-level specifications:
- Chapter 00: Filesystem History (485 lines)
- Chapter 01: Introduction (227 lines)
- Chapter 02: HFS Specification (472 lines)
- Chapter 03: HFS+ Specification (1060 lines)
- Chapter 04: mkfs Utilities (478 lines)
- Chapter 05: fsck Utilities (493 lines)
- Chapter 06: mount Utilities (305 lines)
- Chapter 07: hfsutil Commands (331 lines)
- Chapter 08: Implementation Details (133 lines)
- Chapter 09: Testing & Validation (149 lines)
- Chapter 10: Appendix (206 lines)
Total: 4,339 lines of documentation
Goal achieved: Complete filesystem reimplementation guide without internet
GitHub Workflows for hfsutils
This directory contains GitHub Actions workflows for continuous integration and testing.
Workflows
CI Workflow (.github/workflows/ci.yml)
Comprehensive continuous integration workflow that builds and tests hfsutils on multiple platforms.
Jobs
-
build-and-test-ubuntu
- Platform: Ubuntu Latest
- Builds complete project using
build.sh - Creates symlinks for filesystem utilities
- Runs comprehensive test suite:
- Basic functionality tests
- Integration workflow tests
- HFS+ specific tests
- Error handling tests
- Specification conformance tests
- Tests installation to verify package structure
- Uploads artifacts on failure for debugging
-
build-and-test-archlinux
- Platform: Arch Linux (container)
- Same test suite as Ubuntu
- Validates compatibility with rolling-release distribution
- Uses latest Arch Linux packages
- Independent artifact upload for debugging
-
test-specification-conformance
- Platform: Ubuntu Latest
- Runs after successful Ubuntu build
- Validates HFS/HFS+ specification compliance:
- HFS Alternate MDB Location: Verifies signature
0x4244atdevice_size - 1024 - HFS+ Alternate Volume Header: Verifies signature
0x482Bor0x4244atdevice_size - 1024 - HFS+ attributes Field: Validates
kHFSVolumeUnmountedBit(0x0100) is set
- HFS Alternate MDB Location: Verifies signature
- Uses
hexdumpto inspect binary structures - Ensures conformance to Apple TN1150 specification
-
cross-platform-compatibility
- Platform: Ubuntu Latest
- Runs after all builds complete
- Summary job to verify all platforms passed
- Provides single checkpoint for PR approval
Test Categories
The test suite (test/run_tests.sh) includes:
- basic: Core functionality (mount, ls, copy, etc.)
- integration: Real-world workflows (backup, migration, archive)
- hfsplus: HFS+ specific features (formatting, detection, journaling)
- errors: Error handling and edge cases
- all: Complete test suite
Triggers
- Push: Any push to
masterbranch - Pull Request: Any PR targeting
masterbranch
Dependencies
Ubuntu:
- build-essential
- gcc
- make
- perl
- hexdump
- util-linux
Arch Linux:
- base-devel
- gcc
- make
- perl
- git
- util-linux
Running Tests Locally
Ubuntu/Debian
sudo apt-get install build-essential gcc make perl hexdump
./build.sh
cd test
./run_tests.sh all
Arch Linux
sudo pacman -S base-devel gcc make perl util-linux
./build.sh
cd test
./run_tests.sh all
Quick Tests
cd test
./run_tests.sh basic # Basic functionality only
Specification Tests
cd test
./test_hfs_spec_validation.sh
./test_hfsplus_complete.sh
Artifacts
On test failure, the following artifacts are uploaded:
test/temp/- Temporary test files and imagestest/*.log- Test execution logs*.img- HFS/HFS+ disk images created during tests
Artifacts are kept for 90 days and can be downloaded from the Actions tab.
Status Badges
Add to README.md:

Maintenance
Adding New Tests
- Add test function to
test/run_tests.sh - Update workflow to include new test category if needed
- Test locally before pushing
Updating Dependencies
- Update package lists in workflow file
- Test in container locally:
docker run -it --rm -v $(pwd):/workspace -w /workspace ubuntu:latest bash # or docker run -it --rm -v $(pwd):/workspace -w /workspace archlinux:latest bash
Debugging Failures
- Check Actions tab for logs
- Download artifacts if available
- Reproduce locally using same commands
- Check specification conformance with
hexdump
References
Description
HFS is the “Hierarchical File System,” the native volume format used on modern Macintosh computers. hfsutils is the name of a comprehensive software package being developed to permit manipulation of HFS volumes from UNIX and other systems.
2.9 MiB
0 Stars
1 Watchers
0 Forks
Languages
C
87.6%
Makefile
6.5%
Shell
5.6%
M4
0.3%