mirror of
https://github.com/autc04/Retro68.git
synced 2024-10-15 02:24:50 +00:00
add hfsutils 3.2.6
This commit is contained in:
parent
dbff29bd61
commit
272a5da348
0
hfsutils/.stamp/config.h
Normal file
0
hfsutils/.stamp/config.h
Normal file
0
hfsutils/.stamp/config.h.in
Normal file
0
hfsutils/.stamp/config.h.in
Normal file
0
hfsutils/.stamp/configure
vendored
Normal file
0
hfsutils/.stamp/configure
vendored
Normal file
47
hfsutils/BLURB
Normal file
47
hfsutils/BLURB
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
Copyright (C) 1996-1998 Robert Leslie
|
||||
|
||||
$Id: BLURB,v 1.1 1998/04/11 08:26:52 rob Exp $
|
||||
|
||||
===============================================================================
|
||||
|
||||
What is this?
|
||||
|
||||
HFS is the "Hierarchical File System" used on modern Macintosh computers.
|
||||
With this package, you can read and write Macintosh-formatted media such as
|
||||
floppy disks, CD-ROMs, and SCSI hard disks on most UNIX platforms. You can
|
||||
also format raw media into an HFS volume.
|
||||
|
||||
This package contains a number of different tools:
|
||||
|
||||
* Several command-line programs (hmount, hls, hcopy, et al.)
|
||||
* A Tk-based front-end for browsing and copying files through a
|
||||
variety of transfer modes (MacBinary, BinHex, text, etc.)
|
||||
* A Tcl package and interface for scriptable access to volumes
|
||||
* A C library for low-level access to volumes
|
||||
|
||||
How is this different from other HFS packages?
|
||||
|
||||
This package attempts to provide a portable, free implementation of
|
||||
routines for accessing HFS volumes. It is implemented as a set of user-level
|
||||
tools to provide maximum portability.
|
||||
|
||||
The command-line programs are intended to be used in the same vein as the
|
||||
Mtools command-line programs used to access MS-DOS filesystems.
|
||||
|
||||
The graphical front-end provides point-and-click access to Macintosh
|
||||
volumes, which is often more convenient than the command line.
|
||||
|
||||
The Tcl interface offers a scriptable HFS "shell" that is more efficient
|
||||
than the external command-line programs and allows for greater
|
||||
extensibility.
|
||||
|
||||
The C library can be linked with other programs wanting to manipulate
|
||||
Macintosh files in their native format. For example, an implementation of
|
||||
the Macintosh Resource Manager could be built on top of this library to
|
||||
provide seamless access to data objects contained within the resource forks
|
||||
of Macintosh files.
|
||||
|
||||
===============================================================================
|
||||
|
482
hfsutils/CHANGES
Normal file
482
hfsutils/CHANGES
Normal file
@ -0,0 +1,482 @@
|
||||
|
||||
hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
Copyright (C) 1996-1998 Robert Leslie
|
||||
|
||||
$Id: CHANGES,v 1.14 1998/11/02 22:08:20 rob Exp $
|
||||
|
||||
===============================================================================
|
||||
|
||||
Version 3.2.6
|
||||
|
||||
* 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.
|
||||
|
||||
* Added a simple next-CNID verification to scavenging.
|
||||
|
||||
* 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.)
|
||||
|
||||
Version 3.2.5
|
||||
|
||||
* Miscellaneous internal `const' and other minor changes.
|
||||
|
||||
Version 3.2.4
|
||||
|
||||
* 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.
|
||||
|
||||
* Changed the OS interface to operate on full block rather than byte
|
||||
offsets.
|
||||
|
||||
* Moved the 800K size check from hfs_format() into v_geometry().
|
||||
|
||||
Version 3.2.3
|
||||
|
||||
* 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.2
|
||||
|
||||
* 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.
|
||||
|
||||
Version 3.2.1
|
||||
|
||||
* Fixed a minor potential problem where BinHex translation might fail to
|
||||
recognize the hqx header.
|
||||
|
||||
Version 3.2
|
||||
|
||||
* Fixed a problem determining medium sizes under unusual conditions.
|
||||
|
||||
* Modified MDB `drVCSize', `drVBMCSize', and `drCtlCSize' to new
|
||||
Sequoia-supporting `drEmbedSigWord' and `drEmbedExtent'.
|
||||
|
||||
Version 3.1.1
|
||||
|
||||
* Fixed a problem related to partition locations on large media.
|
||||
|
||||
* Fixed a problem 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.1
|
||||
|
||||
* `hmount' and friends now properly handle relative pathnames, even if
|
||||
the current directory changes.
|
||||
|
||||
* Enhanced API for managing partitions: hfs_zero() will create a new,
|
||||
empty partition map on any medium. hfs_mkpart() will create a new HFS
|
||||
partition (if space allows) in the map. hfs_nparts() will return the
|
||||
number of HFS partitions currently existing on the medium.
|
||||
|
||||
* hfs_mount() and hfs_format() are now more strict with the partition
|
||||
number passed to them; previously this number was ignored if the medium
|
||||
was not partitioned. Now the partition _must_ exist, or else 0 can be
|
||||
passed to ignore any partitions and select the entire medium.
|
||||
|
||||
* Changed the API for hfs_create(); this routine now returns an open file
|
||||
reference upon successful creation.
|
||||
|
||||
* Added bad block sparing to hfs_format(). This routine now requires two
|
||||
additional arguments specifying a list of block numbers which are
|
||||
defective on the physical medium and should be mapped out of use.
|
||||
|
||||
* Character set translation is now performed as well as end-of-line
|
||||
translation in the "text" transfer mode. The routines convert MacOS
|
||||
Standard Roman to equivalent (or near-equivalent) Latin-1 (ISO 8859-1)
|
||||
sequences and vice versa. It should be noted however that these
|
||||
translations are NOT reversible for all characters.
|
||||
|
||||
* Fixed a bug in xhfs.tcl which failed to include the helper `ctime'
|
||||
procedure (fixed in hfs.tcl) after it was removed from tclhfs.c.
|
||||
|
||||
* Further librsrc development.
|
||||
|
||||
Version 3.0b2
|
||||
|
||||
* Changed the block cache mechanism so that consecutive blocks are read
|
||||
and written in single chunks, significantly improving performance.
|
||||
|
||||
* Improved the efficiency of the internal routines for searching B*-trees
|
||||
by reducing the number of times the record keys are unpacked from their
|
||||
external format.
|
||||
|
||||
Version 3.0b1
|
||||
|
||||
* Package is now configured automatically via GNU `configure' script.
|
||||
|
||||
* Numerous internal changes to support automatic configuration and improve
|
||||
portability, as well as reduce code size.
|
||||
|
||||
* Bug fix: the alternate MDB was sometimes written to the wrong location
|
||||
on non-partitioned media.
|
||||
|
||||
* Bug fix: the Extents Overflow file could become corrupted under some
|
||||
circumstances in which a heavily fragmented file is removed.
|
||||
|
||||
* Bug fix: it was possible for the volume allocation routine to become
|
||||
caught in an infinite loop.
|
||||
|
||||
* Significant librsrc development. The library can now read and return
|
||||
resources to an application, but cannot create or modify them. The
|
||||
library can be used with or without libhfs.
|
||||
|
||||
* hfs_mount() now honors the software volume lock bit and makes the volume
|
||||
read-only accordingly.
|
||||
|
||||
* Added a new hfs_vsetattr() routine to allow some volume attributes to
|
||||
be modified.
|
||||
|
||||
* Added support for partition data blocks that do not start at the
|
||||
beginning of a partition.
|
||||
|
||||
Version 2.1
|
||||
|
||||
* Further hfsck development.
|
||||
|
||||
* Physical blocks from the volume are now cached by the library. This
|
||||
should dramatically improve performance of the programs on some systems.
|
||||
|
||||
* Modified the hfsvolent and hfsdirent structures to include several new
|
||||
fields. The hfs_vstat(), hfs_stat(), and hfs_setattr() functions now
|
||||
manipulate the new fields. Note that hfsdirent now includes a separate
|
||||
union structure for files and directories.
|
||||
|
||||
* Fixed a problem on some systems with `xhfs' that caused it to terminate
|
||||
with the message `Error: can't read "data": no such variable'. The
|
||||
problem was caused by the inability to parse the system's `df' command
|
||||
output.
|
||||
|
||||
Version 2.0
|
||||
|
||||
* 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. N.B. This
|
||||
implementation may not be completely portable, and is isolated to the
|
||||
new source file `./suid.c'.
|
||||
|
||||
* First non-beta release.
|
||||
|
||||
Version 1.19b
|
||||
|
||||
* 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.18b
|
||||
|
||||
* 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.17b
|
||||
|
||||
* 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.16b
|
||||
|
||||
* 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.15b
|
||||
|
||||
* Increased buffer size for native HFS-to-HFS copies to increase
|
||||
performance.
|
||||
|
||||
* Fixed a problem verifying the existence of directory threads.
|
||||
|
||||
* Fixed a problem with the handling of catalog and extents clump sizes.
|
||||
|
||||
Version 1.14b
|
||||
|
||||
* The command-line programs now support filename globbing; see hfsutils(1)
|
||||
for syntax details.
|
||||
|
||||
* 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.
|
||||
|
||||
* The volume bitmap is now reconstructed from the catalog and extents files
|
||||
when a volume is mounted that was not previously cleanly unmounted.
|
||||
|
||||
* Directories may now be deleted recursively using `xhfs'.
|
||||
|
||||
* BinHex and MacBinary header fork size validation limitations have been
|
||||
relaxed. (MacBinary spec suggested 0x007fffff ~= 8MB as maximum length?)
|
||||
|
||||
* 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.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().
|
||||
|
339
hfsutils/COPYING
Normal file
339
hfsutils/COPYING
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
21
hfsutils/COPYRIGHT
Normal file
21
hfsutils/COPYRIGHT
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
Copyright (C) 1996-1998 Robert Leslie
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
If you would like to negotiate alternate licensing terms, you may do
|
||||
so by contacting the author: Robert Leslie <rob@mars.org>
|
||||
|
49
hfsutils/CREDITS
Normal file
49
hfsutils/CREDITS
Normal file
@ -0,0 +1,49 @@
|
||||
|
||||
hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
Copyright (C) 1996-1998 Robert Leslie
|
||||
|
||||
$Id: CREDITS,v 1.11 1998/09/17 00:11:44 rob Exp $
|
||||
|
||||
===============================================================================
|
||||
|
||||
Author: Robert Leslie <rob@mars.org>
|
||||
|
||||
The HFS globbing code was inspired by similar code to perform filename
|
||||
globbing in Tcl by John Ousterhout.
|
||||
|
||||
The code to perform BinHex encoding/decoding is based on the definition of
|
||||
BinHex 4.0 as written by Peter N Lewis.
|
||||
|
||||
The code for `hls' is loosely based on the GNU implementation of `ls'.
|
||||
|
||||
Many thanks to the following people for their support and various
|
||||
contributions to this project:
|
||||
|
||||
Howard Bergstrom <bergy@vnet.ibm.com>
|
||||
Marcus Better <f96-bet@nada.kth.se>
|
||||
Cees de Groot <C.deGroot@inter.nl.net>
|
||||
Pat Dirks <pwd@apple.com>
|
||||
Andy Fyfe <andy@hyperparallel.com>
|
||||
Paul H. Hargrove <hargrove@sccm.Stanford.EDU>
|
||||
George Hoffman <geh@be.com>
|
||||
Jack Howarth <howarth@nitro.med.uc.edu>
|
||||
Geoff Hulten <ghulten@ccs.neu.edu>
|
||||
Richard C.S. Kinne <kinnerc@snymorva.cs.snymor.edu>
|
||||
Marc Lebas <marc-lebas@calvanet.calvacom.fr>
|
||||
Zach Leber <zach@radionics.com>
|
||||
Clifford T. Matthews <ctm@ardi.com>
|
||||
Markus Mayer <may@inflab.tuwien.ac.at>
|
||||
Allen Pouratian <allenp@CSUA.Berkeley.EDU>
|
||||
Steve Revilak <revilak@umbsky.cc.umb.edu>
|
||||
Andrew Ross <andrew.ross@acm.org>
|
||||
Nick Stephen <stephen@gr.osf.org>
|
||||
Ray Van Tassle <rayvt@comm.mot.com>
|
||||
Thomas B. White <tbwhite@hookup.net>
|
||||
John Witford <jwitford@hutch.com.au>
|
||||
|
||||
And thanks of course to the engineers of the truly fascinating HFS filesystem
|
||||
for giving me a challenge. May your extents overflow file never become so
|
||||
fragmented that you cannot locate its own extents.
|
||||
|
||||
===============================================================================
|
||||
|
183
hfsutils/INSTALL
Normal file
183
hfsutils/INSTALL
Normal file
@ -0,0 +1,183 @@
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
|
317
hfsutils/Makefile.in
Normal file
317
hfsutils/Makefile.in
Normal file
@ -0,0 +1,317 @@
|
||||
#
|
||||
# hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
# Copyright (C) 1996-1998 Robert Leslie
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
# $Id: Makefile.in,v 1.12 1998/08/31 18:40:14 rob Exp $
|
||||
#
|
||||
|
||||
@SET_MAKE@
|
||||
src = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
### USER CUSTOMIZATIONS FOLLOW ################################################
|
||||
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
BINDEST = @bindir@
|
||||
MANDEST = @mandir@
|
||||
|
||||
LIBDEST = @libdir@
|
||||
INCDEST = @includedir@
|
||||
|
||||
MANEXT = 1
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
BININSTALL = @INSTALL_PROGRAM@ -m 755
|
||||
LIBINSTALL = @INSTALL_DATA@
|
||||
HARDLINK = ln -f
|
||||
|
||||
CC = @CC@
|
||||
INCLUDES = @CPPFLAGS@ -Ilibhfs @TCL_INCLUDES@ @TK_INCLUDES@
|
||||
DEFINES = @DEFS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
|
||||
TCLLIBS = @TCL_LIB_SPEC@ @TCL_LIBS@
|
||||
TKLIBS = @TK_LIB_SPEC@ @TCL_LIB_SPEC@ @TK_LIBS@
|
||||
|
||||
COPTS = @CFLAGS@
|
||||
LDOPTS = @LDFLAGS@ -Llibhfs
|
||||
|
||||
### END OF USER CUSTOMIZATION #################################################
|
||||
|
||||
CFLAGS = $(COPTS) $(INCLUDES) $(DEFINES)
|
||||
LDFLAGS = $(LDOPTS)
|
||||
|
||||
###############################################################################
|
||||
|
||||
TARGETS = $(CLITARGETS) $(TCLTARGETS) $(TKTARGETS)
|
||||
|
||||
CLITARGETS = hattrib hcd hcopy hdel hdir hformat hls hmkdir hmount hpwd \
|
||||
hrename hrmdir humount hvol
|
||||
TCLTARGETS = hfssh hfs
|
||||
TKTARGETS = xhfs
|
||||
|
||||
LIBHFS = libhfs/libhfs.a
|
||||
INCHFS = libhfs/hfs.h
|
||||
|
||||
LIBRSRC = librsrc/librsrc.a
|
||||
INCRSRC = librsrc/rsrc.h
|
||||
|
||||
HFSUTIL = hfsutil
|
||||
HFSCK = hfsck/hfsck
|
||||
LINUX = linux/mkfs.hfs linux/fsck.hfs linux/kernel/hfs.o
|
||||
|
||||
SUBDIRS = hfsck linux test
|
||||
ACSUBDIRS = @subdirs@
|
||||
|
||||
GENERALDOCS = hfsutils.1
|
||||
CLIDOCS = hattrib.1 hcd.1 hcopy.1 hdel.1 hdir.1 hformat.1 hls.1 \
|
||||
hmkdir.1 hmount.1 hpwd.1 hrename.1 hrmdir.1 humount.1 hvol.1
|
||||
TCLDOCS = hfssh.1 hfs.1
|
||||
TKDOCS = xhfs.1
|
||||
|
||||
CLIOBJS = hattrib.o hcd.o hcopy.o hdel.o hformat.o hls.o hmkdir.o \
|
||||
hmount.o hpwd.o hrename.o hrmdir.o humount.o hvol.o
|
||||
UTILOBJS = crc.o binhex.o copyin.o copyout.o charset.o \
|
||||
darray.o dlist.o dstring.o glob.o suid.o version.o
|
||||
|
||||
###############################################################################
|
||||
|
||||
all :: @MAKE_TARGETS@
|
||||
|
||||
all_cli :: $(CLITARGETS)
|
||||
all_tcl :: $(TCLTARGETS)
|
||||
all_tk :: $(TKTARGETS)
|
||||
all_lib :: $(LIBHFS) $(LIBRSRC)
|
||||
|
||||
check :: all
|
||||
@if [ -f hfs ]; then \
|
||||
cd test && $(MAKE) && \
|
||||
echo "Self-tests passed."; \
|
||||
else \
|
||||
echo "Self-tests only available if configured --with-tcl."; \
|
||||
fi
|
||||
|
||||
install :: @INSTALL_TARGETS@
|
||||
|
||||
install_cli :: all_cli
|
||||
$(BININSTALL) $(HFSUTIL) "$(BINDEST)/."
|
||||
|
||||
for file in $(CLITARGETS); do \
|
||||
$(HARDLINK) "$(BINDEST)/$(HFSUTIL)" "$(BINDEST)/$$file"; \
|
||||
done
|
||||
|
||||
rm -f "$(BINDEST)/$(HFSUTIL)"
|
||||
|
||||
for file in $(GENERALDOCS) $(CLIDOCS); do \
|
||||
$(LIBINSTALL) doc/man/$$file \
|
||||
"$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
|
||||
done
|
||||
|
||||
install_tcl :: all_tcl
|
||||
for file in $(TCLTARGETS); do \
|
||||
$(BININSTALL) $$file "$(BINDEST)/."; \
|
||||
done
|
||||
|
||||
if [ -f "$(BINDEST)/hfs" ]; then \
|
||||
sed -e '1d' "$(BINDEST)/hfs" > "$(BINDEST)/hfs.new"; \
|
||||
$(BININSTALL) "$(BINDEST)/hfs.new" "$(BINDEST)/hfs"; \
|
||||
rm -f "$(BINDEST)/hfs.new"; \
|
||||
fi
|
||||
|
||||
for file in $(TCLDOCS); do \
|
||||
$(LIBINSTALL) doc/man/$$file \
|
||||
"$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
|
||||
done
|
||||
|
||||
install_tk :: all_tk
|
||||
for file in $(TKTARGETS); do \
|
||||
$(BININSTALL) $$file "$(BINDEST)/."; \
|
||||
done
|
||||
|
||||
for file in $(TKDOCS); do \
|
||||
$(LIBINSTALL) doc/man/$$file \
|
||||
"$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
|
||||
done
|
||||
|
||||
install_lib :: all_lib
|
||||
cd libhfs && $(MAKE) install
|
||||
cd librsrc && $(MAKE) install
|
||||
|
||||
again :: clean all
|
||||
|
||||
depend ::
|
||||
for dir in $(ACSUBDIRS) $(SUBDIRS); do \
|
||||
(cd $$dir && $(MAKE) depend); \
|
||||
done
|
||||
|
||||
( sed -n '1,/^### DEPEND/p' Makefile.in; \
|
||||
echo; \
|
||||
$(CC) -MM $(INCLUDES) $(DEFINES) *.c; \
|
||||
) > Makefile.in.new
|
||||
mv -f Makefile.in.new Makefile.in
|
||||
|
||||
clean ::
|
||||
for dir in $(ACSUBDIRS) $(SUBDIRS); do \
|
||||
(cd $$dir && $(MAKE) clean); \
|
||||
done
|
||||
|
||||
rm -f $(TARGETS) *.o gmon.* core
|
||||
rm -f $(HFSUTIL) xhfs.c
|
||||
|
||||
distclean :: clean
|
||||
for dir in $(ACSUBDIRS); do \
|
||||
(cd $$dir && $(MAKE) distclean); \
|
||||
done
|
||||
|
||||
rm -f config.status config.cache config.log config.h
|
||||
rm -f hfsck/Makefile linux/Makefile Makefile
|
||||
|
||||
maintainer-clean :: distclean
|
||||
for dir in . $(ACSUBDIRS); do \
|
||||
rm -f $$dir/config.h.in $$dir/configure; \
|
||||
done
|
||||
|
||||
dist ::
|
||||
for dir in . $(ACSUBDIRS); do \
|
||||
(cd $$dir && $(MAKE) config.h.in configure); \
|
||||
done
|
||||
|
||||
$(MAKE) distclean
|
||||
|
||||
###############################################################################
|
||||
|
||||
Makefile: config.status
|
||||
./config.status && touch .stamp/config.h
|
||||
|
||||
.stamp/config.h: config.status
|
||||
./config.status && touch .stamp/config.h
|
||||
|
||||
config.status: .stamp/configure .stamp/config.h.in Makefile.in
|
||||
./config.status --recheck
|
||||
|
||||
.stamp/configure: configure.in
|
||||
autoconf && touch .stamp/configure
|
||||
|
||||
.stamp/config.h.in: configure.in acconfig.h
|
||||
autoheader && touch .stamp/config.h.in
|
||||
|
||||
###############################################################################
|
||||
|
||||
$(LIBHFS) ::
|
||||
cd libhfs && $(MAKE)
|
||||
|
||||
$(LIBRSRC) ::
|
||||
cd librsrc && $(MAKE)
|
||||
|
||||
$(HFSCK) :: $(LIBHFS)
|
||||
cd hfsck && $(MAKE)
|
||||
|
||||
$(LINUX) :: $(LIBHFS)
|
||||
cd linux && $(MAKE)
|
||||
|
||||
$(HFSUTIL): $(LIBHFS) hfsutil.o hcwd.o $(CLIOBJS) $(UTILOBJS) $(LIBOBJS)
|
||||
$(CC) $(LDFLAGS) hfsutil.o hcwd.o \
|
||||
$(CLIOBJS) $(UTILOBJS) \
|
||||
-lhfs $(LIBS) $(LIBOBJS) -o $@
|
||||
|
||||
$(CLITARGETS): $(HFSUTIL)
|
||||
-$(HARDLINK) $(HFSUTIL) $@
|
||||
|
||||
hfssh: $(LIBHFS) hfssh.o tclhfs.o $(UTILOBJS) $(LIBOBJS)
|
||||
$(CC) $(LDFLAGS) hfssh.o tclhfs.o $(UTILOBJS) \
|
||||
-lhfs $(LIBS) $(TCLLIBS) $(LIBOBJS) -o $@
|
||||
|
||||
hfs: hfs.tcl hfssh
|
||||
( echo "#!./hfssh"; \
|
||||
echo "#! /bin/sh"; \
|
||||
echo "# Start hfssh ... \\"; \
|
||||
echo 'exec hfssh "$$0" "$$@"'; \
|
||||
echo; \
|
||||
cat hfs.tcl; \
|
||||
) > $@
|
||||
chmod a+x $@
|
||||
|
||||
xhfs.c: xhfs.tcl
|
||||
( echo '# include "xhfs.h"'; \
|
||||
echo; \
|
||||
echo "char xhfs[] ="; \
|
||||
sed -e 's|^[ ]*||' -e 's|^#.*||' -e '/^$$/d' \
|
||||
-e 's| *| |g' \
|
||||
-e 's|[\\"]|\\&|g' -e 's|.*|"&\\n"|' xhfs.tcl; \
|
||||
echo ";"; \
|
||||
) > $@
|
||||
|
||||
xhfs: $(LIBHFS) hfswish.o xhfs.o tclhfs.o $(UTILOBJS) $(LIBOBJS)
|
||||
$(CC) $(LDFLAGS) hfswish.o xhfs.o tclhfs.o $(UTILOBJS) \
|
||||
-lhfs $(LIBS) $(TKLIBS) $(LIBOBJS) -o $@
|
||||
|
||||
### DEPENDENCIES FOLLOW #######################################################
|
||||
|
||||
binhex.o: binhex.c config.h binhex.h crc.h
|
||||
charset.o: charset.c config.h charset.h
|
||||
copyin.o: copyin.c config.h libhfs/hfs.h libhfs/data.h copyin.h \
|
||||
charset.h binhex.h crc.h
|
||||
copyout.o: copyout.c config.h libhfs/hfs.h libhfs/data.h copyout.h \
|
||||
charset.h binhex.h crc.h
|
||||
crc.o: crc.c config.h crc.h
|
||||
darray.o: darray.c config.h darray.h
|
||||
dlist.o: dlist.c config.h dlist.h
|
||||
dstring.o: dstring.c config.h dstring.h
|
||||
glob.o: glob.c config.h dlist.h dstring.h libhfs/hfs.h glob.h
|
||||
hattrib.o: hattrib.c config.h libhfs/hfs.h hcwd.h hfsutil.h hattrib.h
|
||||
hcd.o: hcd.c config.h libhfs/hfs.h hcwd.h hfsutil.h hcd.h
|
||||
hcopy.o: hcopy.c config.h libhfs/hfs.h hcwd.h hfsutil.h hcopy.h \
|
||||
copyin.h copyout.h
|
||||
hcwd.o: hcwd.c config.h libhfs/hfs.h hcwd.h
|
||||
hdel.o: hdel.c config.h libhfs/hfs.h hcwd.h hfsutil.h hdel.h
|
||||
hformat.o: hformat.c config.h libhfs/hfs.h hcwd.h hfsutil.h suid.h \
|
||||
hformat.h
|
||||
hfssh.o: hfssh.c config.h tclhfs.h suid.h
|
||||
hfsutil.o: hfsutil.c config.h libhfs/hfs.h hcwd.h hfsutil.h suid.h \
|
||||
glob.h version.h hattrib.h hcd.h hcopy.h hdel.h hformat.h hls.h \
|
||||
hmkdir.h hmount.h hpwd.h hrename.h hrmdir.h humount.h hvol.h
|
||||
hfswish.o: hfswish.c config.h tclhfs.h xhfs.h suid.h images.h \
|
||||
images/macdaemon.xbm images/macdaemon_mask.xbm images/stop.xbm \
|
||||
images/caution.xbm images/note.xbm images/floppy.xbm \
|
||||
images/harddisk.xbm images/cdrom.xbm images/floppy_mask.xbm \
|
||||
images/harddisk_mask.xbm images/cdrom_mask.xbm images/sm_floppy.xbm \
|
||||
images/sm_harddisk.xbm images/sm_cdrom.xbm images/folder.xbm \
|
||||
images/document.xbm images/application.xbm images/folder_mask.xbm \
|
||||
images/document_mask.xbm images/application_mask.xbm \
|
||||
images/sm_folder.xbm images/sm_document.xbm images/sm_application.xbm \
|
||||
images/help.xbm images/padlock.xbm
|
||||
hls.o: hls.c config.h libhfs/hfs.h hcwd.h hfsutil.h darray.h dlist.h \
|
||||
dstring.h hls.h
|
||||
hmkdir.o: hmkdir.c config.h libhfs/hfs.h hcwd.h hfsutil.h hmkdir.h
|
||||
hmount.o: hmount.c config.h libhfs/hfs.h hcwd.h hfsutil.h suid.h \
|
||||
hmount.h
|
||||
hpwd.o: hpwd.c config.h libhfs/hfs.h hcwd.h hfsutil.h hpwd.h
|
||||
hrename.o: hrename.c config.h libhfs/hfs.h hcwd.h hfsutil.h hrename.h
|
||||
hrmdir.o: hrmdir.c config.h libhfs/hfs.h hcwd.h hfsutil.h hrmdir.h
|
||||
humount.o: humount.c config.h libhfs/hfs.h hcwd.h hfsutil.h humount.h
|
||||
hvol.o: hvol.c config.h libhfs/hfs.h hcwd.h hfsutil.h hvol.h
|
||||
strdup.o: strdup.c config.h
|
||||
strerror.o: strerror.c config.h
|
||||
strstr.o: strstr.c config.h
|
||||
strtol.o: strtol.c config.h
|
||||
suid.o: suid.c config.h suid.h
|
||||
tclhfs.o: tclhfs.c config.h tclhfs.h libhfs/hfs.h glob.h copyin.h \
|
||||
copyout.h charset.h suid.h version.h
|
||||
version.o: version.c version.h
|
132
hfsutils/README
Normal file
132
hfsutils/README
Normal file
@ -0,0 +1,132 @@
|
||||
|
||||
hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
Copyright (C) 1996-1998 Robert Leslie
|
||||
|
||||
$Id: README,v 1.10 1998/09/08 18:51:51 rob Exp $
|
||||
|
||||
===============================================================================
|
||||
|
||||
NOTES ON THIS RELEASE
|
||||
|
||||
This release uses GNU autoconf to automatically configure the software
|
||||
for installation and use on your system. This means you should not have
|
||||
to modify any files by hand to get the software to compile -- if you do,
|
||||
please let the author know so it can be fixed.
|
||||
|
||||
For general installation instructions, please read the `INSTALL' file.
|
||||
|
||||
There are a few special options you can give the `configure' program that
|
||||
you should know about:
|
||||
|
||||
--with-tcl build the Tcl/Tk components
|
||||
--with-tk build the Tk-based X interface `xhfs'
|
||||
--disable-cli do not build or install the command-line utils
|
||||
--enable-devlibs enable installation of the developer libraries
|
||||
|
||||
To build the Tcl tools `hfssh' and `hfs', you must use `--with-tcl'.
|
||||
To build the X interface `xhfs', you must use `--with-tcl --with-tk'.
|
||||
|
||||
In order to build the Tcl tools you must have Tcl 7.6 or newer already
|
||||
installed on your system. To build the X interface, you must have Tk 4.2
|
||||
or newer installed as well.
|
||||
|
||||
If `configure' is unable to locate your Tcl or Tk installation, you will
|
||||
have to give it a hint. It looks for the files `tclConfig.sh' and
|
||||
`tkConfig.sh' (respectively) which contain all the details about your
|
||||
configuration; these files were created when Tcl/Tk was installed on your
|
||||
system.
|
||||
|
||||
To help `configure' find these files, you can specify a directory name on
|
||||
the command line. For example:
|
||||
|
||||
./configure --with-tcl=/usr/share/tcl --with-tk=/usr/share/tk
|
||||
|
||||
When in doubt, wait and see if `configure' complains.
|
||||
|
||||
By default, the command-line utilities (hmount, hls, hcopy, etc.) are
|
||||
always built and installed. If you don't want them, use `--disable-cli'.
|
||||
|
||||
If you want to install the developer libraries (libhfs.a, librsrc.a, and
|
||||
associated header files) as well as the programs, use `--enable-devlibs'.
|
||||
The libraries are not installed by default.
|
||||
|
||||
The `INSTALL' file contains the rest of the details you will need to
|
||||
compile and install the software. Please read it!
|
||||
|
||||
===============================================================================
|
||||
|
||||
NOTES ON "SETUID" INSTALLATION
|
||||
|
||||
Although the author has made some effort to make the programs in this
|
||||
package somewhat setuid-safe, none are intended to be installed in such a
|
||||
manner, and you do so at your own risk!
|
||||
|
||||
Specifically, installing the programs setuid root is a bad idea, as it will
|
||||
allow anyone to attempt to open (or format) any file as an HFS volume,
|
||||
disregarding the normal UNIX file permission checks.
|
||||
|
||||
A better idea is to modify the permissions on the necessary device files to
|
||||
allow access to appropriate users. For example, if you make your floppy
|
||||
device group-writable to a special group of floppy users, then only those
|
||||
users will be able to access an inserted floppy disk and nothing needs to
|
||||
be made setuid.
|
||||
|
||||
Here is an example:
|
||||
|
||||
% ls -l /dev/fd0 /usr/local/bin/xhfs
|
||||
brw-rw---- 1 root floppy 2, 0 Sep 17 13:51 /dev/fd0
|
||||
-rwxr-xr-x 1 root staff 339874 Jan 17 20:18 /usr/local/bin/xhfs
|
||||
|
||||
% grep floppy /etc/group
|
||||
floppy:*:25:rob,thigpen
|
||||
|
||||
This configuration permits users `rob' and `thigpen' read/write access to
|
||||
the floppy device, without needing to make any programs setuid.
|
||||
|
||||
Another possibility is to make some of the programs in this package setgid
|
||||
(NOT setuid) to a similar group which has access to the necessary devices.
|
||||
This avoids the need to add specific users to a group, since it allows
|
||||
anyone to access the devices using the utilities, while still maintaining
|
||||
the integrity of the data on the devices since they are not world-writable.
|
||||
(A world-writable device lends itself to the possibility that someone may
|
||||
corrupt some portion of it by other means and render an HFS volume
|
||||
unusable, whereas limiting access only through the utilities means the
|
||||
volume is unlikely to be corrupted under normal usage -- although note that
|
||||
since HFS itself does not provide any file permission structure, anyone may
|
||||
still modify the HFS volume in any way. The only protection here is that
|
||||
the modifications must be made in an HFS-compatible way, so that the
|
||||
possibility of corruption is reduced.)
|
||||
|
||||
Here is another example:
|
||||
|
||||
% ls -l /dev/fd0 /usr/local/bin/xhfs
|
||||
brw-rw---- 1 root floppy 2, 0 Sep 17 13:51 /dev/fd0
|
||||
-rwxr-sr-x 1 root floppy 339874 Jan 17 20:18 /usr/local/bin/xhfs
|
||||
|
||||
% grep floppy /etc/group
|
||||
floppy:*:25:
|
||||
|
||||
In this case, only setgid `floppy' programs (such as `/usr/local/bin/xhfs')
|
||||
are permitted access to the floppy device.
|
||||
|
||||
To summarize: it is suggested that the utilities NOT be installed setuid or
|
||||
setgid. It is possible to install the utilities setgid as described above,
|
||||
but it is NOT recommended that the utilities be installed setuid root under
|
||||
any circumstances.
|
||||
|
||||
===============================================================================
|
||||
|
||||
CONTACTING THE AUTHOR
|
||||
|
||||
Please see the `COPYRIGHT' file for copyright and warranty information.
|
||||
|
||||
Send comments, bug reports, suggestions, patches, etc. to:
|
||||
|
||||
* Robert Leslie <rob@mars.org>
|
||||
|
||||
See also the HFS Utilities home page on the Web:
|
||||
|
||||
* http://www.mars.org/home/rob/proj/hfs/
|
||||
|
||||
===============================================================================
|
||||
|
79
hfsutils/TODO
Normal file
79
hfsutils/TODO
Normal file
@ -0,0 +1,79 @@
|
||||
|
||||
hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
Copyright (C) 1996-1998 Robert Leslie
|
||||
|
||||
$Id: TODO,v 1.14 1998/11/02 22:08:22 rob Exp $
|
||||
|
||||
===============================================================================
|
||||
|
||||
General to-do items (aka bugs):
|
||||
|
||||
libhfs
|
||||
|
||||
* support HFS+ (aka Sequoia, Extended Format)
|
||||
* don't allow reads from spared blocks
|
||||
* further improve efficiency of b*-tree searches?
|
||||
* concurrency considerations: opening same file multiple times;
|
||||
performing directory manipulations on open files
|
||||
* b*-tree record balancing?
|
||||
* smarter block allocation algorithm
|
||||
* volume full: hfs_write() should return bytes written < len, return -1
|
||||
on next call?
|
||||
* seek beyond end of file?
|
||||
* touch directory timestamps on file updates?
|
||||
* improve efficiency of bitmap operations
|
||||
* improve efficiency of search operations
|
||||
* CNID wrapping?
|
||||
* bad block sparing by physical block
|
||||
|
||||
librsrc
|
||||
|
||||
* determine resource sizes without reading them
|
||||
* support writability
|
||||
|
||||
hfsck
|
||||
|
||||
* modify libhfs to support low-level grubbing
|
||||
|
||||
command-line tools
|
||||
|
||||
* preserve timestamps (-p) for hcopy
|
||||
* recursive hcopy (-r)
|
||||
* allow hformat to create files and/or set size?
|
||||
* write Linux utilities mkfs.hfs, fsck.hfs
|
||||
* eliminate ftruncate()
|
||||
* more flags for hdel (-i, -r, -f)
|
||||
* glob :*:foo correctly
|
||||
* glob hcopy destination HFS path?
|
||||
* formalize hdisk.pl into the distribution
|
||||
|
||||
xhfs
|
||||
|
||||
* open arbitrary partitions
|
||||
* rename volumes
|
||||
* change file type/creator
|
||||
* more support for other platforms (correct device defaults; df output)
|
||||
* graphical partition map editor?
|
||||
* recursive copy: map illegal directory name chars
|
||||
|
||||
copyin/copyout
|
||||
|
||||
* finish/fix timestamp preservation
|
||||
* revisit buffer sizes
|
||||
* remember src/dst filenames (for preserve/delete)
|
||||
* allow name mangling to be optional
|
||||
* don't unconditionally clobber
|
||||
* delete incomplete files after failed transfers
|
||||
* AppleSingle, Netatalk-/CAP-style AppleDouble?
|
||||
|
||||
Future wish-list:
|
||||
|
||||
* raw SCSI access for hideous platforms
|
||||
* partitioning utility
|
||||
* defragmenting utility
|
||||
|
||||
Acknowledged limitations:
|
||||
|
||||
* null characters (ASCII 0x00) not supported in filenames
|
||||
* partition maps not managed with A/UX support
|
||||
|
53
hfsutils/acconfig.h
Normal file
53
hfsutils/acconfig.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* hfsutils - tools for reading and writing Macintosh HFS volumes
|
||||
* Copyright (C) 1996-1998 Robert Leslie
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id: acconfig.h,v 1.5 1998/04/11 08:26:53 rob Exp $
|
||||
*/
|
||||
|
||||
/*****************************************************************************
|
||||
* Definitions selected automatically by `configure' *
|
||||
*****************************************************************************/
|
||||
@TOP@
|
||||
|
||||
/* Define if you want to enable diagnostic debugging support. */
|
||||
#undef DEBUG
|
||||
|
||||
/* Define if your system has sys_errlist[] and sys_nerr. */
|
||||
#undef HAVE_SYS_ERRLIST
|
||||
|
||||
@BOTTOM@
|
||||
|
||||
/*****************************************************************************
|
||||
* End of automatically configured definitions *
|
||||
*****************************************************************************/
|
||||