+++ /dev/null
-diff -urN cdrtools-1.11a09/mkisofs/README.compression cdrtools-1.11a09-zisofs/mkisofs/README.compression
---- cdrtools-1.11a09/mkisofs/README.compression Wed Dec 31 16:00:00 1969
-+++ cdrtools-1.11a09-zisofs/mkisofs/README.compression Thu Nov 8 12:01:31 2001
-@@ -0,0 +1,17 @@
-+Transparent decompression (-z option) is available on Linux kernels
-+using kernel version 2.4.14 or 2.4.9-ac14 or later.
-+
-+You also need the zisofs-tools package, containing the mkzftree
-+utility, to create the compressed files; this package is available at:
-+
-+ftp://ftp.kernel.org/pub/linux/utils/fs/zisofs/
-+
-+The mkzftree utility can also be used to read compressed CD-ROMs on
-+systems which do not support transparent decompression.
-+
-+The use of a separate utility allows compression to be controlled on a
-+per-file basis. A file which is not compressed can be read on any
-+system.
-+
-+Transparent decompression is implemented as an extension to Rock
-+Ridge, so Rock Ridge needs to be enabled (-R or -r options.)
-diff -urN cdrtools-1.11a09/mkisofs/mkisofs.8 cdrtools-1.11a09-zisofs/mkisofs/mkisofs.8
---- cdrtools-1.11a09/mkisofs/mkisofs.8 Mon Jul 9 05:09:08 2001
-+++ cdrtools-1.11a09-zisofs/mkisofs/mkisofs.8 Thu Nov 8 12:11:13 2001
-@@ -206,7 +206,7 @@
- .B \-pad
- ]
- [
--.B \-no\-pad
-+.B \-no-pad
- ]
- [
- .B \-path-list
-@@ -383,40 +383,40 @@
- .I folder_name
- ]
- [
--.B \--cap
-+.B \-\-cap
- ]
- [
--.B \--netatalk
-+.B \-\-netatalk
- ]
- [
--.B \--double
-+.B \-\-double
- ]
- [
--.B \--ethershare
-+.B \-\-ethershare
- ]
- [
--.B \--ushare
-+.B \-\-ushare
- ]
- [
--.B \--exchange
-+.B \-\-exchange
- ]
- [
--.B \--sgi
-+.B \-\-sgi
- ]
- [
--.B \--xinet
-+.B \-\-xinet
- ]
- [
--.B \--macbin
-+.B \-\-macbin
- ]
- [
--.B \--single
-+.B \-\-single
- ]
- [
--.B \--dave
-+.B \-\-dave
- ]
- [
--.B \--sfm
-+.B \-\-sfm
- ]
- .\" end mkhybrid options
- .B \-o
-@@ -1398,15 +1398,25 @@
-
- mkisofs \-o cd \-x /local/dir1 \-x /local/dir2 /local
- .sp
--NOTE: The \-m and \-x option description should both be updated, they are wrong.
-+NOTE: The
-+.B \-m
-+and
-+.B \-x
-+option description should both be updated, they are wrong.
- Both now work identical and use filename globbing. A file is excluded if either
- the last component matches or the whole path matches.
- .TP
- .B \-z
--Generate special SUSP records for transparently compressed files. This is
--only of use and interest for hosts that support transparent decompression.
--This is an experimental feature, and no hosts yet support this, but there
--are ALPHA patches for Linux that can make use of this feature.
-+Generate special RRIP records for transparently compressed files.
-+This is only of use and interest for hosts that support transparent
-+decompression, such as Linux 2.4.14 or later. You must specify the
-+.B \-R
-+or
-+.B \-r
-+options to enable RockRidge, and generate compressed files using the
-+.B mkzftree
-+utility before running
-+.BR mkisofs .
-
- .SH "HFS OPTIONS
- .TP
-@@ -1505,7 +1515,7 @@
- .BI \-cluster-size " size
- Set the size in bytes of the cluster or allocation units of PC Exchange
- files. Implies the
--.B \--exchange
-+.B \-\-exchange
- option. See the
- .B HFS MACINTOSH FILE FORMATS
- section below.
-@@ -1612,44 +1622,44 @@
- called System Folder, then the whole path name is "./cddata/System Folder"
- (remember to use quotes if the name contains spaces).
- .TP
--.B \--cap
-+.B \-\-cap
- Look for AUFS CAP Macintosh files. Search for CAP Apple/Unix file formats
- only. Searching for the other possible Apple/Unix file formats is disabled,
- unless other
- .I double dash
- options are given.
- .TP
--.B \--netatalk
-+.B \-\-netatalk
- Look for NETATALK Macintosh files
- .TP
--.B \--double
-+.B \-\-double
- Look for AppleDouble Macintosh files
- .TP
--.B \--ethershare
-+.B \-\-ethershare
- Look for Helios EtherShare Macintosh files
- .TP
--.B \--ushare
-+.B \-\-ushare
- Look for IPT UShare Macintosh files
- .TP
--.B \--exchange
-+.B \-\-exchange
- Look for PC Exchange Macintosh files
- .TP
--.B \--sgi
-+.B \-\-sgi
- Look for SGI Macintosh files
- .TP
--.B \--xinet
-+.B \-\-xinet
- Look for XINET Macintosh files
- .TP
--.B \--macbin
-+.B \-\-macbin
- Look for MacBinary Macintosh files
- .TP
--.B \--single
-+.B \-\-single
- Look for AppleSingle Macintosh files
- .TP
--.B \--dave
-+.B \-\-dave
- Look for Thursby Software Systems DAVE Macintosh files
- .TP
--.B \--sfm
-+.B \-\-sfm
- Look for Microsoft's Services for Macintosh files (NT only) (Alpha)
-
- .SH "CHARACTER SETS
-@@ -2285,7 +2295,7 @@
- The floppy will be mounted as a CAP file system by default. Then run mkisofs
- using something like:
-
-- mkisofs \--cap \-o output source_dir /mnt/floppy
-+ mkisofs \-\-cap \-o output source_dir /mnt/floppy
-
- If you are not using Linux, then you can use the hfsutils to copy the icon
- file from the floppy. However, care has to be taken, as the icon file
-@@ -2301,7 +2311,7 @@
- .B mkisofs
- by using something like:
-
-- mkisofs \--macbin \-o output source_dir icon_dir
-+ mkisofs \-\-macbin \-o output source_dir icon_dir
- .PP
- The procedure for creating/using custom folder icons is very similar - paste
- an icon to folder's "Get Info" box and transfer the resulting 'Icon\\r'
-@@ -2520,7 +2530,7 @@
- that contains
- Netatalk Apple/Unix files:
- .PP
--% mkisofs \-o cd.iso \--netatalk cd_dir
-+% mkisofs \-o cd.iso \-\-netatalk cd_dir
- .PP
- To create a HFS hybrid CD from the source directory
- .IR cd_dir ,
-@@ -2754,9 +2764,10 @@
- options.
-
- .SH "SEE ALSO
--.BR cdrecord(1)
-+.BR cdrecord (1),
-+.BR mkzftree (1),
- .BR magic (5),
--.BR apple_driver (8)
-+.BR apple_driver (8).
-
- .SH "FUTURE IMPROVEMENTS
- Some sort of gui interface.
-@@ -2764,8 +2775,13 @@
- .B m\&kisofs
- is available as part of the cdrecord package from
- ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/
-+
- .B hfsutils
- from ftp://ftp.mars.org/pub/hfs
-+
-+.B mkzftree
-+is available as part of the zisofs-tools package
-+from ftp://ftp.kernel.org/pub/linux/utils/fs/zisofs/
- .SH "MAILING LISTS
- If you want to actively take part on the development of m\&kisofs,
- and/or mkhybrid,
-diff -urN cdrtools-1.11a09/mkisofs/mkisofs.c cdrtools-1.11a09-zisofs/mkisofs/mkisofs.c
---- cdrtools-1.11a09/mkisofs/mkisofs.c Sat Oct 20 15:00:34 2001
-+++ cdrtools-1.11a09-zisofs/mkisofs/mkisofs.c Thu Nov 8 11:57:58 2001
-@@ -561,10 +561,8 @@
- '\0', "#", "Set numbers of load sectors", ONE_DASH},
- {{"boot-info-table", no_argument, NULL, OPTION_BOOT_INFO_TABLE},
- '\0', NULL, "Patch boot image with info table", ONE_DASH},
--#ifdef ERIC_neverdef
- {{"transparent-compression", no_argument, NULL, 'z'},
- 'z', NULL, "Enable transparent compression of files", ONE_DASH},
--#endif
- #ifdef APPLE_HYB
- {{"hfs-type", required_argument, NULL, OPTION_HFS_TYPE},
- '\0', "TYPE", "Set HFS default TYPE", ONE_DASH},
-@@ -1984,7 +1982,11 @@
- error(" but without (standard) Rock Ridge extensions.\n");
- error(" It is highly recommended to add Rock Ridge\n");
- }
--
-+ if (transparent_compression && !use_RockRidge) {
-+ error("Warning: transparent decompression is a Rock Ridge extension, but\n");
-+ error(" creating filesystem without Rock Ridge attributes; files\n");
-+ error(" will not be transparently decompressed.\n");
-+ }
- init_nls(); /* Initialize UNICODE tables */
-
- /* initialize code tables from a file - if they exists */
-diff -urN cdrtools-1.11a09/mkisofs/mkisofs.c.orig cdrtools-1.11a09-zisofs/mkisofs/mkisofs.c.orig
-diff -urN cdrtools-1.11a09/mkisofs/rock.c cdrtools-1.11a09-zisofs/mkisofs/rock.c
---- cdrtools-1.11a09/mkisofs/rock.c Tue Jan 23 04:28:34 2001
-+++ cdrtools-1.11a09-zisofs/mkisofs/rock.c Thu Nov 8 11:57:58 2001
-@@ -45,7 +45,7 @@
- #define PX_SIZE 36
- #define RE_SIZE 4
- #define SL_SIZE 20
--#define ZZ_SIZE 15
-+#define ZF_SIZE 16
- #ifdef APPLE_HYB
- #define AA_SIZE 14 /* size of Apple extension */
- #endif /* APPLE_HYB */
-@@ -577,17 +577,24 @@
- #ifndef VMS
- /*
- * If transparent compression was requested, fill in the correct field
-- * for this file
-+ * for this file, if (and only if) it is actually a compressed file!
-+ * This relies only on magic number, but it should in general not
-+ * be an issue since if you're using -z odds are most of your
-+ * files are already compressed.
-+ *
-+ * In the future it would be nice if mkisofs actually did the
-+ * compression.
- */
-- if (transparent_compression &&
-- S_ISREG(lstatbuf->st_mode) &&
-- strlen(name) > 3 &&
-- strcmp(name + strlen(name) - 3, ".gZ") == 0) {
-- FILE *zipfile;
-+ if (transparent_compression && S_ISREG(lstatbuf->st_mode)) {
-+ static const unsigned char zisofs_magic[8] =
-+ { 0x37, 0xE4, 0x53, 0x96, 0xC9, 0xDB, 0xD6, 0x07 };
-+ FILE *zffile;
- char *checkname;
- unsigned int file_size;
-- unsigned char header[8];
-+ unsigned char header[16];
- int OK_flag;
-+ int blocksize;
-+ int headersize;
-
- /*
- * First open file and verify that the correct algorithm was
-@@ -596,73 +603,43 @@
- file_size = 0;
- OK_flag = 1;
-
-- zipfile = fopen(whole_name, "rb");
-- fread(header, 1, sizeof(header), zipfile);
-+ memset(header, 0, sizeof(header));
-
-- /* Check some magic numbers from gzip. */
-- if (header[0] != 0x1f || header[1] != 0x8b || header[2] != 8)
-- OK_flag = 0;
-- /* Make sure file was blocksized. */
-- if (((header[3] & 0x40) == 0))
-- OK_flag = 0;
-- /* OK, now go to the end of the file and get some more info */
-- if (OK_flag) {
-- int status;
--
-- status = (long) lseek(fileno(zipfile), (off_t)(-8),
-- SEEK_END);
-- if (status == -1)
-+ zffile = fopen(whole_name, "rb");
-+ if ( zffile ) {
-+ if ( fread(header, 1, sizeof(header), zffile) != sizeof(header) )
- OK_flag = 0;
-- }
-- if (OK_flag) {
-- if (read(fileno(zipfile), (char *) header,
-- sizeof(header)) != sizeof(header)) {
-+
-+ /* Check magic number */
-+ if ( memcmp(header, zisofs_magic, sizeof zisofs_magic) )
- OK_flag = 0;
-- } else {
-- int blocksize;
-
-- blocksize = (header[3] << 8) | header[2];
-- file_size = ((unsigned int) header[7] << 24) |
-- ((unsigned int) header[6] << 16) |
-- ((unsigned int) header[5] << 8) |
-- header[4];
--#if 0
-- fprintf(stderr, "Blocksize = %d %d\n",
-- blocksize, file_size);
--#endif
-- if (blocksize != SECTOR_SIZE)
-- OK_flag = 0;
-- }
-- }
-- fclose(zipfile);
--
-- checkname = strdup(whole_name);
-- checkname[strlen(whole_name) - 3] = 0;
-- zipfile = fopen(checkname, "rb");
-- if (zipfile) {
-+ /* Get the real size of the file */
-+ file_size = get_731(header+8);
-+
-+ /* Get the header size (>> 2) */
-+ headersize = header[12];
-+
-+ /* Get the block size (log2) */
-+ blocksize = header[13];
-+
-+ fclose(zffile);
-+ } else {
- OK_flag = 0;
--#ifdef USE_LIBSCHILY
-- errmsg(
-- "Unable to insert transparent compressed file - name conflict\n");
--#else
-- fprintf(stderr,
-- "Unable to insert transparent compressed file - name conflict\n");
--#endif
-- fclose(zipfile);
- }
-- free(checkname);
--
-+
- if (OK_flag) {
-- if (MAYBE_ADD_CE_ENTRY(ZZ_SIZE))
-+ if (MAYBE_ADD_CE_ENTRY(ZF_SIZE))
- add_CE_entry();
- Rock[ipnt++] = 'Z';
-- Rock[ipnt++] = 'Z';
-- Rock[ipnt++] = ZZ_SIZE;
-+ Rock[ipnt++] = 'F';
-+ Rock[ipnt++] = ZF_SIZE;
- Rock[ipnt++] = SU_VERSION;
-- Rock[ipnt++] = 'g'; /* Identify compression
-- technique used */
-+ Rock[ipnt++] = 'p'; /* Algorithm: "paged zlib" */
- Rock[ipnt++] = 'z';
-- Rock[ipnt++] = 3;
-+ /* 2 bytes for algorithm-specific information */
-+ Rock[ipnt++] = headersize;
-+ Rock[ipnt++] = blocksize;
- set_733((char *) Rock + ipnt, file_size); /* Real file size */
- ipnt += 8;
- };