Skip to content

HFSutils version 3.2.6

Latest
Compare
Choose a tag to compare
@JotaRandom JotaRandom released this 27 Sep 03:24

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 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

    The code has been cleaned up and a few small bugs fixed.
    I have now begun collaboration with Paul Hargrove who is writing an HFS kernel module for Linux. Working together we should be able to improve upon each other's implementation.
    Version 1.1b has been released. 

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