
Version 1.13b

  * Fixed two bad extent record key sorting bugs; these could have caused
    serious problems on certain fragmented volumes.

  * Fixed a problem related to MacOS default file clump size semantics.

  * Implemented recursive directory copies in `xhfs'.

  * 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.12b

  * Fix to allow mounting of some miscreant partitioned media.

  * Increased copyin/copyout buffer sizes for better performance.

  * Implemented -a for `hcopy' (automatic transfer mode selection.)

  * HFS timestamps are now relative to the current time zone.

Version 1.11b

  * UNIX-to-HFS BinHex transfers have been implemented. All transfer modes
    are now fully implemented.

  * The overall BinHex implementation now uses the stdio library for
    somewhat better performance.

  * New libhfs routines: hfs_setattr(), hfs_fsetattr() for changing file
    and directory attributes (timestamps, type/creator, flags).

  * The copyin routines now update the relevant file information (timestamps,
    flags) for MacBinary and BinHex transfers.

  * The `hvol' command now provides better output.

  * Modified the installation procedure; separate targets now build and
    install the separate components of the package.

  * Fixed a bug in HFS filename sorting which affects the search routines;
    filenames are now sorted precisely according to MacOS idiosyncrasies.

  * Begun work on (but still unimplemented): hattrib, filename globbing.

Version 1.10b

  * Fixed a serious bug in directory record updates; directories with names
    longer than 21 characters could get corrupted.

  * Implemented hfs_rename() and eliminated hfs_move(); functionality for
    the latter has been included in the former.

  * Added an `hrename' command. Minor changes to hcwd.c to cope with
    volume name or cwd path changes.

  * Minor changes to `xhfs'. Files can now be renamed with the interface.

Version 1.9b

  * Modularized the libhfs code.

  * Resolved more portability issues. The code should now work regardless of
    the size or endianness of the host's datatypes.

Version 1.8.1b

  * Fixed some portability bugs.

Version 1.8b

  * More UI enhancements to `xhfs'.

  * UNIX-to-HFS MacBinary II transfers have been implemented; HFS-to-HFS
    copies have been implemented. Only one transfer mode (UNIX-to-HFS BinHex)
    remains unimplemented.

  * Replaced `hcat' with a generic `hcopy'. All transfer modes are supported.
    (But note: The -a option is not yet supported.)

  * Fixed a bug in the MacBinary II encoding CRC algorithm.

  * Tcl hash tables are now used to maintain open files and volumes.

  * Cleaned up some of the Tcl/Tk interface to aid compatibility with
    various versions.

Version 1.7b

  * Many more UI enhancements to `xhfs'.

  * Files can now be copied from UNIX to HFS volumes with `xhfs' using either
    Text or Raw mode translation.

Version 1.6b

  * Fixed a bug in the catalog manipulation routines which would allow files
    and directories to be created at the same level as the root folder.

  * Many UI enhancements to `xhfs'. Some minor enhancements to `hfs'.

  * hfs_islocked() now returns 1 if a volume is locked (read-only).

  * Extended file attributes to recognize invisible files.

Version 1.5b

  * All cases of B*-tree record insertion have been completed.

  * B*-tree record deletion has been implemented. Files and folders may now
    be created and deleted with no limitations (other than the size of the
    volume.)

  * New commands: hrmdir, hdel

  * File writing and truncation have been implemented.

  * The library now maintains its own concept of "current volume". The last
    volume to be mounted is by default current; the new functions
    hfs_getvol() and hfs_setvol() can be used to get and set the current
    volume, respectively. All other functions will now accept a null volume
    pointer to represent the current volume.

  * Absolute pathnames may now refer to (mounted) volumes other than the one
    specified in the call; in this event the specified volume is ignored.

Version 1.4b

  * Updated the installation procedure. The Tcl and Tk programs can now be
    built and installed optionally.

  * Fixed a minor bug which would cause the header node to be read just
    before completing a directory read.

  * Mounting the same volume more than once now returns a reference to the
    same volume, and does the right thing when each reference is
    independently unmounted.

  * Cleaned up some of the Tcl interface to deal with multiply-referenced
    volumes. `xhfs' can now deal with the same volume on both sides.

  * Renamed hfs_cwdid() to hfs_getcwd(), and added hfs_setcwd().

  * hfs_umount() now closes all open files and directories on the volume
    before unmounting it. All external references to the volume and any
    open files/directories will become invalid.

  * Enabled hfs_umountall() which will effectively unmount all volumes,
    invalidating all external volume and file references. This is a
    catch-all that should be called before a program exits. N.B.: Errors
    during volume flushing and unmounting are not reported.

Version 1.3b

  * Enhanced writability: B*-tree file growth has been implemented. New
    directories can be created until the disk gets full. 

  * Added an option to `xhfs' for creating new directories.

Version 1.2b

  * Enhanced writability: B*-tree node splitting has been implemented. New
    directories can be created until the catalog file gets full.

  * Fixed some minor bugs in version 1.1b.

Version 1.1b

  * Full read-only capability.

  * Limited write capability: new directories can be created only until
    a catalog node gets full.

  * New volumes can be created with hfs_format().

