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(); newHFS_OPT_2048format option ensures 2048-byte
	physical-block file boundaries, compatible with hybrid ISO 9660
	schemes.
- New HFS_OPT_NOCACHEmount 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_ZEROformat/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.hheader 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
	blessTcl 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.con some systems.
- Fixed a problem with font selection in xhfs.
    
- Changed copyouts not to append .txtto 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- 0to
	    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()tohfs_setfork(), and
        addedhfs_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()andhfs_write()to accept avoid *buffer
        pointer rather than demandingchar *.
- 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 -aoption (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 sorting (which affects the search routines)
        has been fixed.
    
- Preliminary work for filename globbing and a new hattrib
        command has started but is not yet finished in this release.
    
- The installation procedure has been made simpler still.
    
- Version
         1.11b has been released.
    
 
- 18-Apr-1996
- 
    - A severe bug has been fixed: it was possible for directories with
        names longer than 21 characters to get corrupted.
    
- Catalog moves and renames have been implemented. A new
        hrename command has been added.
    
- Some minor xhfs enhancements have been made. Files
        and directories can now be renamed using the interface.
    
- Documentation for libhfs has been updated.
    
- Version
         1.10b has been released.
    
 
- 09-Apr-1996
- 
    - The code for libhfs has been modularized. This is
        important to begin development on a fsck-like program
        and other tools.
    
- The code has been made more portable; it should now run without
        problems on any machine regardless of the size or endianness of
        the host's native types.
    
- Version
         1.9b has been released.
    
 
- 05-Apr-1996
- 
    - All transfer modes with the exception of UNIX-to-HFS BinHex have now
        been implemented. (BinHex files can still be copied as text.)
    
- The hcat command has been replaced with a generic
        hcopy which supports all of the implemented transfer
        modes. Files can be copied both to and from HFS volumes.
    
- A new humount command causes a volume to be forgotten
        (removed from $HOME/.hcwd).
    
- Even more UI enhancements have been made to xhfs.
    
- The Tcl interface has been made more robust.
    
- A bug in the MacBinary II encoding CRC algorithm has been fixed.
    
- Version
         1.8b has been released.
    
 
- 02-Apr-1996
- 
    - Many more UI enhancements have been made to xhfs. It is
        now possible to copy files from UNIX to HFS using either text
        or raw translation under xhfs.
    
- Version
         1.7b has been released.
    
 
- 30-Mar-1996
- 
    - A few small bugs have been fixed and a few enhancements have been
        made to the library; invisible files are now flagged.
    
- Several UI enhancements have been made to xhfs, and a
        few minor enhancements and documentation updates have been made to
        hfs.
    
- Version
         1.6b has been released.
    
 
- 29-Mar-1996
- 
    - All B*-tree manipulations have been fully implemented.
    
- The library routines which implement file writing have been completed,
        although none of the supplied programs make use of them yet.
    
- Two new commands hdel and hrmdir have
        been added to delete files and directories, respectively.
    
- Version
         1.5b has been released.
    
 
- 26-Mar-1996
- 
    - Multiple mounts of the same volume are now handled intelligently.
    
- All open files are now closed automatically when a volume is
        unmounted.
    
- Installation of the Tcl and Tk tools has now been made optional.
    
- Version
         1.4b has been released.
    
 
- 25-Mar-1996
- 
    - B*-tree file growth has been implemented. The catalog and extents
        overflow files can grow as large as needed, to the size of the entire
        disk.
    
- An hmkdir program has been added to create new HFS
        directories.
    
- An option to create new directories has been added to the X interface.
    
- Version
         1.3b has been released.
    
 
- 23-Mar-1996
- 
    - B*-tree insertion has been implemented; the hfs shell
        program can now create directories with mkdir until the
        catalog tree gets full.
    
- Version
         1.2b has been released.
    
 
- 22-Mar-1996
- 
- 20-Mar-1996
- 
    - Partial writability has been implemented. New volumes can be cleanly
        initialized with hformat.
    
- New folders can be created, with some severe limitations.
    
 
- 16-Feb-1996
- 
    - Full read-only volume access has been implemented.
    
- The graphical front-end implements MacBinary II and BinHex encoding of
        HFS-to-UNIX file transfers, as well as text and raw translations.
    
- The Tcl and C libraries contain interfaces for the full set of
        expected HFS operations.
    
 
Back to HFS Utilities