Mini Shell
Notes on using the --osx-hfs option when running genisoimage on MacOS X
genisoimage does not use any of the MacOS APIs to access files - it uses
standard (POSIX style) library calls. Under normal circumstances, all
genisoimage will 'see' is the data fork of files on an HFS (or HFS+) file system.
However, Apple have provided a way for POSIX style applications to
access the resource fork - using the following syntax:
If a file exists on an HFS volume with the name 'foo', then the resource fork
can be accessed using the file name 'foo/rsrc' or foo/..namedfork/rsrc'
(the data fork can also be accessed using 'foo/..namedfork/data').
These 'pseudo' file names are not normally visible in a directory - unless
you access them directly (e.g. 'ls -l */rsrc etc).
To access the finder information, Apple have provided an undocumented library
function called getattrlist(). Fortunately there are example of its usage
in the Darwin (MacOS kernel) source code.
Although MacOS X can use HFS(+) as its file system, Apple have decided to
move away from using HFS to store finder info and resource data - for
example, the TYPE of a file may be based on its file name extension and the
TYPE field in the finder info empty.
genisoimage knows nothing about these file name extension mappings, so if the
--osx-hfs option is used and the source files are on MacOS X HFS(+) volumes,
by the fact that they are HFS files, they will get identified as 'MacOS X HFS'
and the resulting file on the output CD image will have empty TYPE and CREATOR
fields.
Therefore, if the input finderinfo is blank and the the resource fork is
empty, genisoimage will assume the input file is not a 'real' HFS file - which
means the TYPE and CREATOR may then be set using the file's magic number or
genisoimage' file name extension mapping.
The only real benefit of using the --osx-hfs option is when the source files
are on an OS9 or earlier HFS or HFS+ volume e.g. an existing HFS CD.
James Pearson 3-Jul-2002
Edited for program name change by Eduard Bloch, 2006
Zerion Mini Shell 1.0