Releases: JotaRandom/hfsutils
Releases · JotaRandom/hfsutils
Release list
Hfsutils Version 4.1.0A
[4.1.0A] - 2025-10-21
Added
- HFS+ Journaling Support: Complete implementation of HFS+ journal replay and validation
- journal.h/journal.c - Full journaling infrastructure
- Journal transaction replay for crash recovery
- Journal validation and corruption detection
- Automatic journal disabling for corrupted journals
- Comprehensive logging to hfsutils.log
- Enhanced fsck.hfs+: Advanced HFS+ filesystem checking with journaling support
- Automatic journal replay before filesystem validation
- Journal corruption detection and repair
- Support for both journaled and non-journaled HFS+ volumes
- Complete Manual Pages: Comprehensive man pages for all filesystem utilities
- mkfs.hfs.8, mkfs.hfs+.8 - Filesystem creation utilities
- fsck.hfs.8, fsck.hfs+.8 - Filesystem checking utilities
- Proper symlinks for .hfsplus variants
- Enhanced Installation: Section 8 manual pages installed to correct directories
- GitHub Integration: Complete CI/CD workflow and Copilot instructions
- Updated Documentation: Comprehensive TODO file with project status
Fixed
- Journal Write Warnings: Fixed unused result warnings in journal operations
- Compilation Warnings: Fixed setreuid/setregid unused result warnings
- Makefile Warnings: Removed duplicate rules in hfsck Makefile
- Version Strings: Cleaned up version information, removed "(Apple Silicon fork) for uniformity"
Changed
- Project Status: Updated TODO file to reflect completed features
- Build System: Enhanced .gitignore for filesystem utility symlinks
Hfsutils for Apple Silicon version 4.0.0
Note: only hfsutils-for-apple-silicon-master.zip is the correct source.
Other tarbals are done automagically by GitHub and are from later releases
What's New in This Version
- Apple Silicon Support - Full ARM64 compatibility for M1, M2, M3+ Macs
- Modern Build System - Updated autotools configuration for current macOS
- Organized Structure - Source code organized into logical directories
- Comprehensive Testing - Full test suite with integration tests
- Updated Documentation - User manual, examples, and test documentation
- GitHub Integration - Easy issue reporting and contributions
- Removed Legacy Components - Tcl/Tk/X11 GUI removed for better maintainability Installation
Acknowledgments
Robert Leslie - Original author and creator of HFS Utilities
Brock Gunter-Smith - Apple Silicon fork
Contributors - All those who have contributed patches and improvements over the years
Apple Silicon Community - For testing and feedback on ARM64 compatibility
HFSutils version 3.2.6
Initial import from https://www.mars.org/home/rob/proj/hfs/
The next is the CHANGELOG from the original page:
Current Status
02-Nov-1998
Added casts and made other changes to satisfy fussy signed/unsigned compilers.
Fixed a problem in which volumes were not marked as ``cleanly unmounted,'' causing unnecessary scavenging to occur when the volume is mounted again.
Fixed a problem where scavenging failed to mark all extents from the final B*-tree node.
Introduced a flags parameter to hfs_format(); new HFS_OPT_2048 format option ensures 2048-byte physical-block file boundaries, compatible with hybrid ISO 9660 schemes.
New HFS_OPT_NOCACHE mount option inhibits use of libhfs' internal block cache, useful for RAM file systems or systems/circumstances where the cache may decrease performance.
New HFS_OPT_ZERO format/mount option forces all allocated blocks to be zero-initialized before use, for systems/circumstances in which blocks may otherwise contain random data. (This is primarily a security feature with a performance cost.)
Fixed a problem with the handling of catalog and extents clump sizes (again; first fixed in 1.15b but re-introduced in 3.0b1, alas.)
Modified configure once again to search for tcl.h/tk.h header files.
Fixed a problem with the B*-tree node splitting code. This could have caused the libhfs routines to crash under some rare circumstances.
Version 3.2.6 has been released.
02-Sep-1998
Added support for ``blessing'' the MacOS System Folder by means of a new field in the hfsvolent struct. A new option to hattrib can be used to set this field, as can a new bless Tcl volume command.
Modified configure to use existing Tcl/Tk configuration information rather than reconstruct it.
Fixed a minor potential problem where binhex translation might fail to recognize the hqx header.
Version 3.2.2 has been released.
19-Feb-1998
Fixed a problem determining medium sizes under some unusual conditions.
Made some initial changes to support Sequoia.
Fixed a problem related to partition locations on large media.
Fixed a few problems with suid.c on some systems.
Fixed a problem with font selection in xhfs.
Changed copyouts not to append .txt to text files if the filename already contains a period.
Fixed a few other minor problems.
Version 3.2 has been released.
11-Nov-1997
Introduced a new internal block cache; multiple consecutive volume blocks are read and written with fewer system calls, and are cached for efficiency. The result is an enormous performance boost on many platforms.
Fixed three bugs:
the alternate MDB was sometimes written to the wrong location on non-partitioned media;
the Extents Overflow file could become corrupted under some circumstances in which a heavily fragmented file is removed; and
it was possible for the volume allocation routine to become caught in an infinite loop.
Character set translation (MacOS Standard Roman <=> ISO-8859-1 aka Latin-1) now occurs when copying text files, in addition to end-of-line conversion.
Introduced several libhfs API changes:
hfs_create() now returns an open file reference like hfs_open();
hfs_format() accepts a list of bad blocks which are to be spared;
hfs_mount() and hfs_format() now require the given partition number to exist, or allow 0 to specify the entire medium; and
new routines hfs_zero(), hfs_mkpart(), hfs_nparts() allow new partition maps and HFS partitions to be created and counted.
The entire package is now configured via a GNU `configure' script. Details for the new, simplified installation procedure can be found in the distributed `README' file.
Many other minor improvements.
Version 3.1 has been released.
08-Feb-1997
Renamed hfs_fork() to hfs_setfork(), and added hfs_getfork().
Modified all programs to be setuid-aware. Setuid privileges are only engaged when opening devices as HFS volumes; this can be useful to limit access to and/or help protect the structural integrity of HFS volumes, for example by installing the hfsutils programs setgid.
First non-beta release, version 2.0!
15-Jan-1997
Fixed a problem which prevented large volumes from being properly formatted by hfs_format(). This should also allow the library to correctly manipulate large volumes in certain other cases.
Adapted the code to work with Tcl 7.6 and Tk 4.2.
Added an HFS globbing interface to Tcl, and extended the hfs shell to use it.
Modified globbing routine to ignore Finder-invisible files.
Rewrote hls and hdir; many UNIX-like options are now available.
Updated the general documentation.
Continued development of hfsck.
Version 1.19b has been released.
31-Oct-1996
Resolved many signed/unsigned argument passing conflicts throughout the code. It should now compile cleanly even on very strict systems.
Changed the interface for hfs_read() and hfs_write() to accept a void * buffer pointer rather than demanding char *.
Made volume file locking optional for systems that don't support it.
Included a few other portability fixes for AIX and BeOS.
Version 1.18b has been released.
07-Aug-1996
Completed the implementation for hattrib; HFS file attributes (type, creator, invisible/locked) can now be changed from the command line.
Fixed an off-by-one error in computing catalog record key lengths.
Fixed a problem with backslash-quoted braces during globbing.
Improved Makefile handling.
Regularized the handling of the volume-unmounted flag.
Streamlined the internal and external interface header files.
Added a parid field to the hfsdirent structure.
Updated libhfs documentation.
Implemented a better error message reporting format involving pathnames.
Version 1.17b has been released.
03-Jul-1996
Improved the robustness of the HFS path resolution routine.
Fixed hfs_rename() to better detect the validity of destination paths.
Changed mount-time scavenging only to mark bits in the volume bitmap, not clear them. This reduces the risk of causing further damage to a corrupt disk, leaving serious recovery to more advanced tools.
Added file locking to hfs_mount() to prevent concurrent processes from potentially creating inconsistencies in a volume.
Added a new argument to hfs_mount() for specifying mount flags. This now allows a volume to be explicitly mounted read-only, read-write, or don't care (whichever is available).
Improved detection and handling of multiple same-device mounts by a single process.
Improved error message reporting for all programs.
Fixed a problem where hrenaming a volume caused it to become inaccessible until it was hmounted again.
Version 1.16b has been released.
20-Jun-1996
The buffer size for native HFS-to-HFS copies has been increased to boost performance.
A problem verifying the existence of directory threads has been fixed.
A problem with the handling of catalog and extents clump sizes has been fixed.
Version 1.15b has been released.
11-Jun-1996
The command-line programs now support filename globbing.
File threads are now managed properly when the associated file is deleted, moved, or renamed. However, there is no mechanism yet to explicitly create or remove threads, or to use them in catalog searches.
If a volume is mounted that was not cleanly unmounted, the volume bitmap for that volume is now reconstructed from the catalog and extents files.
Directories may now be deleted recursively using xhfs.
BinHex and MacBinary header fork size validation limitations have been relaxed.
Volumes are now flushed automatically by xhfs every 30 seconds to reduce risk of accidental data loss.
Begun work on hfsck, a program to verify and correct HFS volume consistency.
Begun work on librsrc, a library for manipulating the resource forks of HFS files.
Version 1.14b has been released.
04-Jun-1996
Two bad extent record key sorting bugs have been fixed; these could have caused serious problems on certain fragmented volumes.
A problem related to MacOS default file clump size semantics has been fixed.
Recursive directory copies in xhfs have been implemented.
Files and directories may now be renamed with a mere change of case.
Multiple files may now be moved with hrename.
A UNIX pathname of "-" in hcopy may now be used to mean stdin or stdout when used as the source or destination target, respectively.
Version 1.13b has been released.
27-May-1996
A fix has been implemented to allow certain miscreant partitioned media to be recognized and mounted.
The buffer sizes for file transfers have been increased, resulting in drastic speed improvements for some systems.
The -a option (automatic transfer mode selection) for hcopy has been implemented. This is also the default.
HFS timestamps are now interpreted as being relative to the current time zone.
Still no globbing or file attribute munging (other than via libhfs) yet, sorry.
Version 1.12b has been released.
03-May-1996
UNIX-to-HFS BinHex transfers have been implemented. All transfer modes are now fully implemented.
New libhfs routines have been added to manipulate file and directory attributes (timestamps, type/creator, flags).
A bug in HFS filename...