blob: 946d7ae683168e80d963173dd143122be7f4302f [file] [log] [blame]
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;
};