diff options
Diffstat (limited to 'vms/VMS_ZIP.RNH')
-rw-r--r-- | vms/VMS_ZIP.RNH | 1467 |
1 files changed, 1467 insertions, 0 deletions
diff --git a/vms/VMS_ZIP.RNH b/vms/VMS_ZIP.RNH new file mode 100644 index 0000000..183ceea --- /dev/null +++ b/vms/VMS_ZIP.RNH @@ -0,0 +1,1467 @@ +.! +.! File: ZIP.RNH +.! +.! Author: Hunter Goatley +.! +.! Date: October 22, 1991 +.! +.! Description: +.! +.! RUNOFF source file for portable ZIP on-line help for VMS. +.! Adapted from MANUAL, distributed with ZIP. +.! +.! To build: $ RUNOFF ZIP.RNH +.! $ LIBR/HELP/INSERT libr ZIP +.! +.! Modification history: +.! +.! Hunter Goatley 22-OCT-1991 20:45 +.! Genesis. +.! Jean-loup Gailly 25 March 92 +.! Adaptation to zip 1.6. +.! Igor Mandrichenko 9-JUN-1992 +.! Added explanation of -V option. +.! Jean-loup Gailly 14 June 92 +.! Adaptation to zip 1.8. +.! Jean-loup Gailly 20 Aug 92 +.! Adaptation to zip 1.9. +.! Jean-loup Gailly 31 Aug 93 +.! Adaptation to zip 2.0. +.! Christian Spieler 20 Sep 93 +.! Adaptation to zip 2.0 and OpenVMS completed. +.! Christian Spieler 05 Dec 95 +.! Adaptation to zip 2.1, new options. +.! Christian Spieler 20 Jan 96 +.! Changed -L and -v descriptions. +.! Christian Spieler 11 Feb 96 +.! Added -X option. +.! Onno van der Linden, +.! Christian Spieler 13 Mar 96 +.! Removed -ee option. +.! Christian Spieler 09 Feb 96 +.! Updated copyright notice, Zip version. +.! Christian Spieler 21 Jul 97 +.! Added -P, -R, -i@, -x@ and -tt options, modified for Zip 2.2. +.! Christian Spieler 14 Oct 97 +.! unified spelling of "Info-ZIP", final cleanups for 2.2. +.! Steven Schweda 10 May 2007 +.! General update for version 3.0. +.! Ed Gordon 12 May 2007 +.! Minor updates for version 3.0. +.! +.noflags +.lm4 .rm72 +.indent -4 +1 ZIP +.br +Zip is a compression and file packaging utility for several operating +systems, including UNIX, VMS, MSDOS, OS/2, Windows 9x/NT/XP, Minix, Atari, +Macintosh, Amiga, and Acorn RISC OS. It is analogous to a combination of +tar and compress and is compatible with PKZIP (Phil Katz's ZIP) for +MSDOS systems. +.sk +Zip is useful for packaging a set of files for distribution, for +archiving files, and for saving disk space by temporarily compressing +unused files or directories. A companion program, UnZip, unpacks Zip +archives. +.sk +For brief help on Zip or UnZip, run the program without specifying any +parameters on the command line. +.sk +This description covers the Zip program which uses a UNIX-style command +line. A separate program is available which provides a VMS-style CLI +command line, and it has its own documentation. Refer to the Zip +installation instructions for details. +.sk +Format +.sk;.lm+2;.literal +ZIP [-options] archive inpath inpath ... +.end literal;.lm-2 +.!------------------------------------------------------------------------------ +.indent -4 +2 Basic_Usage +.br +Format +.sk;.lm+2;.literal +ZIP [-options] archive inpath inpath ... +.end literal;.lm-2 +.sk +The default action of Zip is to add or replace entries in "archive" from +the list of "inpath" file specifications, which can include directories +and file names with VMS-style wildcards, or the special name -@ to read +file specifications from SYS$INPUT (stdin). +.sk +With SET PROCESS /PARSE_STYLE = EXTENDED (available on recent non-VAX +systems), Zip preserves the case of the command line. Otherwise, mixed- +or upper-case options and arguments must be quoted. For example, +"-V". Examples in this document generally do not show this quotation, +so VAX and /PARSE_STYLE = TRADITIONAL users (that is, troglodytes) will +need to add quotation where needed when working with these examples. +.sk +General +.sk +Zip reads one or more files, compresses the data (normally), and stores +the compressed information into a single Zip archive file, along with +information about each file (name, path, date and time of last +modification, protection, and check information to verify file +integrity). On a VMS system, Zip can also save VMS/RMS file attributes, +allowing UnZip to restore the files without loss of important file +attributes. Zip can pack an entire directory structure into a Zip +archive with a single command. +.sk +Compression +.sk +Compression ratios of 2:1 to 3:1 are common for text files. Zip has one +standard compression method ("deflate") and can also store files without +compression. Zip (and UnZip) may be built with optional support for the +bzip2 compression method. Then, the user may select bzip2 compression +instead of the default "deflate" method. Zip automatically chooses +simple storage over compression for a file, if the specified compression +method does not actually compress the data in that file. +.sk +Compatibility +.sk +Zip and UnZip can work with archives produced by PKZIP (supporting most +PKZIP features up to PKZIP version 4.6), and PKZIP and PKUNZIP can work +with archives produced by Zip (with some exceptions, notably streamed +archives, but recent changes in the .ZIP file standard may facilitate +better compatibility). Zip version 3.0 is compatible with PKZIP 2.04 +and also supports the Zip64 extensions of PKZIP 4.5 which allows +archives as well as files to exceed the previous 2 GB limit (4 GB in +some cases). Zip also supports bzip2 compression if the bzip2 library +is included when Zip is built. Note that PKUNZIP 1.10 cannot extract +files produced by PKZIP 2.04 or Zip 3.0. You must use PKUNZIP 2.04g or +UnZip 5.0p1 (or later versions) to extract them. +.sk +Large Archives and Zip64 +.sk +Where the operating system and C run-time support allow, Zip 3.0 and +UnZip 6.0 (and later versions) support large files (input and archive), +using the Zip64 extensions to the original .ZIP file format. On VMS, +this genarally means non-VAX systems with VMS V7.2 or later (perhaps +requiring a C RTL ECO before VMS V7.3-2). +.sk +Zip automatically uses the Zip64 extensions when a file larger than 2 GB +is added to an archive, an archive containing a Zip64 entry is updated +(if the resulting archive still needs Zip64), the size of the archive +will exceed 4 GB, or when the number of entries in the archive will +exceed about 64K. Zip64 is also used for archives streamed to a +non-seekable output device. You must use a 4.5 compatible UnZip to +extract files using the Zip64 extensions such as UnZip 6.0 or later. +.sk +In addition, streamed archives, entries encrypted with standard +encryption, or split archives created with the pause option may not be +compatible with PKZIP as data descriptors are used, and PKZIP at the +time of this writing does not support data descriptors (but recent +changes in the PKWare published .ZIP file standard now include some +support for the data descriptor format Zip uses). +.!------------------------------------------------------------------------------ +.indent -4 +2 More_Usage +.br +Here is a very simple example of Zip use: +.sk;.indent 10; +$ zip stuff.zip *.* +.sk +This will create the Zip archive "stuff.zip" (assuming it does not +already exist) and put all the (non-directory) files (";0") from the +current default directory into "stuff.zip" in a compressed form. The +archive is opened using a default file specification of +"SYS$DISK:[].zip", so specifying "stuff" as the archive name would also +create (or use an existing) "stuff.zip", but specifying "stuff.other" +would give you that name. In general, Zip doesn't care about the type +in the file specification, but for split archives (archives split over +multiple files), the user should normally specify a type-less name, +because Zip will normally generate sequentially numbered types ".z01", +".z02", and so on for the early splits, and then the required ".zip" for +the last split. These file types are required by the Zip standard for +split archives. +.sk +Standard VMS wildcard expansion ($SEARCH) is used to interpret the +"inpath" file and directory specifications, like the "*.*" in this +example. +.sk +On VMS, the most natural way to archive an entire directory tree is to +use a directory-depth wildcard ("[...]"). For example: +.sk;.indent 10 +zip foo [...]*.* +.sk +This will create the file "foo.zip" containing all the files (";0") and +directories in and below the current default directory. A more +UNIX-like way to do this would be to use the -r (--recurse-paths) +option: +.sk;.indent 10 +$ zip -r foo *.* +.sk +Zip avoids including its own output files when selecting files to +include in the archive, so it should be safe, as in this case, to create +the archive in the same drectory as the input files. +.sk +One or more specific files, directories, or subdirectories may also be +specified: +.lm +10;.literal +zip foo.zip readme.txt [www...]*.* [.ftp...]*.* - + [.src]*.h [.src]*.c +.end literal;.lm -10 +.sk +For security reasons, paths in Zip archives are always stored as +relative paths, so some care is needed when creating an archive so that +it will create the intended directory structure when UnZip is used to +unpack it. +.sk +To use -r with a specific directory, the name of the directory file +itself must be specified: +.sk;.indent 10 +zip -r foo.zip [000000]www.dir ftp.dir +.sk +You may want to make an archive that contains the files in [.foo], but not +record the directory name, "foo". You can use the -j (junk path) option +to leave off the path: +.sk;.indent 10 +$ zip -j foo [.foo]*.* +.sk +If you are short on disk space, you might not have enough room to hold +both the original directory and the corresponding compressed Zip +archive. In this case, you can create the archive in steps, and use the +-m option. For example, if [.foo] contains the subdirectories [.tom], +[.dick], and [.harry], you could: +.sk +.lm +10;.literal +zip -m foo [.foo.tom...]*.* +zip -m foo [.foo.dick...]*.* +zip -m foo [.foo.harry...]*.* +.end literal;.lm -10 +.sk +The first command would create foo.zip, and the next two would add to +it. The -m option means "move", and it will cause Zip to delete all +files added to the archive after making or updating foo.zip. No +deletions will be done until the Zip operation has completed with no +errors. This option is obviously dangerous and should be used with +care, but it does reduce the need for free disk space. When -m is +used, the -T option is recommended and will test the resulting archive +before deleting the input files. +.sk +If a file specification list is too long to fit conveniently on the Zip +command line, the -@ option can be used to cause Zip to read a list of +file specifications from SYS$INPUT (stdin). If a DCL command procedure +is used, the names can be specified in the procedure: +.sk; +.lm +10;.literal +$ zip foo -@ +$ deck +file_spec_1 +file_spec_2 +file_spec_3 +$ eod +.end literal;.lm -10 +.sk +The file specifications can also be put into a separate file, and fed +into Zip by explicitly defining SYS$INPUT, or by using PIPE. For +example, with the list in foo.zfl: +.sk; +.lm +10;.literal +$ define /user_mode sys$input foo.zfl +$ zip foo -@ +.end literal;.lm -10; +or: +.lm +10;.literal +$ pipe type foo.zfl | zip foo -@ +.end literal;.lm -10 +.sk +If Zip is not able to read a file, it issues a warning but continues. +See the -MM option for more on how Zip handles patterns that are not +matched and files that are not readable. If some files were skipped, a +warning is issued at the end of the Zip operation noting how many files +were read and how many skipped. +.!------------------------------------------------------------------------------ +.indent -4 +2 Comments +.br +One-line comments may be included in the archive for each file added, +using the -c (--entry-comments) option. File operations (adding, +updating) are done first, and the user is then prompted for a one-line +comment for each file added or updated. Enter the comment followed by +<Return>, or just <Return> for no comment. +.sk +A single multi-line comment may be included for the archive as a whole, +using the -z (--archive-comment) option. UnZip (including UnZip SFX) +will display this comment when it expands the archive. The comment is +read from SYS$INPUT (stdin), and is terminated by the usual end-of-file +character, CTRL/Z. As usual, in a DCL command procedure, these data can +be included in-line in the procedure, or a user may DEFINE SYS$INPUT to +a file to get the comment from that file. Where supported, the DCL PIPE +command can also be used to redirect SYS$INPUT from a file. +.sk +Note that -z (--archive-comment) and -@ (read file specifications from +SYS$INPUT (stdin)) can't be used together (successfully). +.!------------------------------------------------------------------------------ +.indent -4 +2 Compression +.br +Zip can archive files with or without compression. The standard +compression method ("deflate") is compatible with all UnZip versions +(except really old ones that only understand the "store" method). +Current Zip and UnZip versions may be built with optional support for +the bzip2 compression method. (The bzip2 method can compress better, +especially when compressing smaller files, but uses more CPU time, and +requires an UnZip which includes the optional bzip2 support. See the +installation instructions for details on adding bzip2 compression +support at build time.) +.sk +Numeric compression level options control the effort put into data +compression, with -1 being the fastest, and -9 giving the most +compression. +.sk +Compression control options: +.sk;.lm +10;.literal +-Z mthd use compress method "mthd", +--compression-method mthd "bzip2" or "deflate" (default) + +-0 (--store) no compression +-1 (--compress-1) compression level 1 +-2 (--compress-2) compression level 2 +-3 (--compress-3) compression level 3 +-4 (--compress-4) compression level 4 +-5 (--compress-5) compression level 5 +-6 (--compress-6) compression level 6 +-7 (--compress-7) compression level 7 +-8 (--compress-8) compression level 8 +-9 (--compress-9) compression level 9 +.end literal;.lm -10 +.sk +Normally, a file which is already compressed will not be compressed much +further (if at all) by Zip, and trying to do it can waste considerable +CPU time. Zip can suppress compression on files with particular types, +specified as a colon- or semi-colon-separated list of file types: +.sk;.indent 10 +-n type1[:type2[...]] (--suffixes type1[:type2[...]]) +.sk +For example: +.sk;.indent 10 +zip -n .bz2:.gz:.jpeg:.jpg:.mp3:.zip foo [.foo]*.* +.sk +will put everything (";0") from [.foo] into foo.zip, but will store any +files that end in .bz2, .gz, .jpeg, .jpg, .mp3, or .zip, without trying +to compress them. +.sk +The default type list is .Z:.zip:.zoo:.arc:.lzh:.arj, and the comparison +is case-insensitive. +.sk +-9 (--compress-9) will override -n (--suffixes), causing compression to +be attempted for all files. +.!------------------------------------------------------------------------------ +.indent -4 +2 Encryption +.br +Zip offers optional encryption, using a method which by modern standards +is generally considered to be weak. +.sk;.literal +-e --encrypt +.end literal;.br +Encrypt new or updated archive entries using a password which is +supplied by the user interactively on the terminal in response to a +prompt. (The password will not be echoed.) If SYS$COMMAND is not a +terminal, Zip will exit with an error. The password is verified before +being accepted. +.sk;.literal +-P password --password password +.end literal;.br +Use "password" to encrypt new or updated archive entries (if any). +USING -P IS INSECURE! Many multi-user operating systems provide ways +for any user (or a privileged user) to see the current command line of +any other user. Even on more secure systems, there is always the threat +of over-the-shoulder peeking. Storing the plaintext password as part of +a command line in a command procedure is even less secure. Whenever +possible, use the non-echoing, interactive password entry method. +.sk +Because standard Zip encryption is weak, where security is truly +important, use a strong encryption program, such as Pretty Good Privacy +(PGP) or GNU Privacy Guard (GnuPG), on an archive instead of standard +Zip encryption. A stronger encryption method, such as AES, is planned +for Zip 3.1. +.!------------------------------------------------------------------------------ +.indent -4 +2 Exit_Status +.br +On VMS, Zip's UNIX-style exit values are mapped into VMS-style status +codes with facility code 1955 = %x7A3, and with the inhibit-message +(%x10000000) and facility-specific (%x00008000) bits set: +.sk +.literal + %x17A38001 normal exit + %x17A38000+ 16* Zip_error_code warnings + %x17A38002+ 16* Zip_error_code normal errors + %x17A38004+ 16* Zip_error_code fatal errors +.end literal +.sk +Note that multiplying the UNIX-style Zip error code by 16 places it +conveniently in the hexadecimal representation of the VMS exit code, +"__" in %x17A38__s, where "s" is the severity code. For example, a +truncated archive might cause Zip error code 2, which would be +transformed into the VMS exit status %x17A38024. +.sk +The Zip VMS exit codes include severity values which approximate those +defined by PKWARE, as shown in the following table: +.literal + + VMS Zip err + severity code Error description + ----------+---------+---------------------------------------------- + Success 0 Normal; no errors or warnings detected. + Fatal 2 Unexpected end of archive. + Error 3 A generic error in the archive format was + detected. Processing may have completed + successfully anyway; some broken archives + created by other archivers have simple work- + arounds. + Fatal 4 Zip was unable to allocate memory for one or + more buffers during program initialization. + Fatal 5 A severe error in the archive format was + detected. Processing probably failed imme- + diately. + Error 6 Entry too large to be split with zipsplit. + Error 7 Invalid comment format. + Fatal 8 Zip -T failed or out of memory. + Error 9 The user aborted zip prematurely with con- + trol-C (or equivalent). + Fatal 10 Zip encountered an error while using a temp + file. + Fatal 11 Read or seek error. + Warning 12 Zip has nothing to do. + Error 13 Missing or empty zip file. + Fatal 14 Error writing to a file. + Fatal 15 Zip was unable to create a file to write to. + Error 16 Bad command line parameters. + Error 18 Zip could not open a specified file to read. + Fatal 19 Zip was built with options not supported on + this system + Fatal 20 Attempt to read unsupported Zip64 archive +.end literal +.!------------------------------------------------------------------------------ +.indent -4 +2 Extra_Fields +.br +The .ZIP file format allows some extra data to be stored with a file in +the archive. For example, where local time zone information is +available, Zip can store UTC date-time data for files. (Look for +USE_EF_UT_TIME in a "zip -v" report.) On VMS, with -V or -VV, Zip will +also store VMS-specific file attributes. These data are packaged as +"extra fields" in the archive. Some extra fields are specific to a +particular operating system (like VMS file attributes). Large files +(bigger than 4GB) on any OS require an extra field to hold their 64-bit +size data. Depending on the capabilities of the UnZip program used to +expand the archive, these extra fields may be used or ignored when files +are extracted from the archive. +.sk +Some extra fields, like UTC date-times or VMS file attributes, are +optional. Others, like the Zip64 extra field which holds 64-bit sizes +for a large file, are required. +.sk +The -X (--strip-extra) option suppresses the saving of any optional +extra fields in the archive. (Thus, -X conflicts with -V or -VV.) +.!------------------------------------------------------------------------------ +.indent -4 +2 Environment +.br +A user can specify default command-line options and arguments by +defining an "environment variable" (that is, a logical name or DCL +symbol), "ZIP_OPTS" or "ZIPOPT", to specify them. If both "ZIP_OPTS" and +"ZIPOPT" are specified, the definition of "ZIPOPT" prevails. +.sk +The C RTL function getenv() is used to sense these variables, so its +behavior determines what happens if both a logical name and a symbol are +defined. As of VMS V7.3, a logical name supercedes a symbol. +.sk +The "zip -v" report should show the perceived settings of these +variables. +.!------------------------------------------------------------------------------ +.indent -4 +2 File_Names +.br +Zip deals with file names in the system file system and with file names +in Zip archives. File names in a Zip archive are stored in a UNIX-like +path-name format. For example, a VMS file specification like this: +.sk;.indent 10 +[.zip30.vms]descrip.mms +.sk +could appear in a Zip archive as: +.sk;.indent 10 +zip30/vms/descrip.mms +.sk +For security reasons, paths in Zip archives are always stored as +relative paths, so an absolute VMS directory specification will be +transformed to a relative path in the archive (that is, no leading "/"). +For example, the following absolute directory specification would give +the same archive path as the previous (relative) example: +.sk;.indent 10 +[zip30.vms]descrip.mms +.sk +Also, device names are dropped, so the following file specification +would also give the same archive path: +.sk;.indent 10 +sys$sysdevice:[zip30.vms]descrip.mms +.sk +If an archive is intended for use with PKUNZIP under MSDOS, then the -k +(for "Katz", --DOS-names) option should be used to attempt to adjust the +names and paths to conform to MSDOS character-set and length +limitations, to store only the MSDOS file attributes (just the +owner:write attribute from VMS), and to mark the entry as made under +MSDOS (even though it wasn't). +.sk +Note that file specifications in the file system must be specified using +VMS notation, but file names in an archive must be specified using the +UNIX-like notation used in the archive. For example, where a BACKUP +command might look like this: +.sk.indent 10 +$ back [.zip30...]*.* /excl = [...vms]*.c stuff.bck /save +.sk +a corresponding Zip command might look like this: +.sk;.indent 10; +$ zip stuff.zip [.zip30...]*.* -x */vms/*.c +.sk +because the files to be added to the Zip archive are specified using VMS +file specifications, but the -x (--exclude) option excludes names based +on their archive path/file names. Options dealing with archive names +include -R (--recurse-patterns), -d (--delete), -i (--include), -x +(--exclude), and -U (--copy-entries). +.sk +Note: By default, on VMS, archive name pattern matching (-R, -d, -i, -x, +and -U) is case sensitive, even when the file system is not case +sensitive (or even case preserving). This allows accurate matching of +mixed-case names in an archive which may have been created on a system +with a case sensitive file system, but it can involve extra effort on +VMS, where it may be necessary to use unnatural case names (or the same +names in multiple cases, like "*.obj *.OBJ") for this kind of pattern +matching to give the desired behavior. If completely case-blind pattern +matching behavior is desired, specify the -ic (--ignore-case) option. +.!------------------------------------------------------------------------------ +.indent -4 +3 Case +.br +For better compatibility with UNIX-like systems, Zip, by default, +down-cases ODS2 file names. For example, the following file on an ODS2 +file system: +.sk;.indent 10 +[.ZIP30.VMS]DESCRIP.MMS +.sk +would appear in an archive as: +.sk;.indent 10 +zip30/vms/descrip.mms +.sk +Zip versions before 3.0 down-cased all VMS file names. Now, various +options give the user control over these conversions: +.sk +.lm +10;.literal +-C preserve case of all file names +-C- down-case all file names +-C2 preserve case of ODS2 names +-C2- down-case ODS2 file names (default) +-C5 preserve case of ODS5 names (default) +-C5- down-case ODS5 file names +.end literal;.lm -10 +.sk +Case is handled differently for archive member names, which the user +specifies with the -R, -d, -i, -x, and -U options. By default, on VMS, +archive name pattern matching is case sensitive, even when the file +system is not case sensitive (or even case preserving). This allows +accurate matching of mixed-case names in an archive which may have been +created on a system with a case sensitive file system, but it can +involve extra effort on VMS, where it may be necessary to use unnatural +case names (or the same names in multiple cases, like "*.obj *.OBJ") for +this kind of pattern matching to give the desired behavior. If +completely case-blind pattern matching behavior is desired, specify the +-ic (--ignore-case) option. +.!------------------------------------------------------------------------------ +.indent -4 +2 Fixing_Damage +.br +Two options can be used to fix a damaged Zip archive. +.sk;.literal +-F --fix +-FF --fixfix +.end literal;.sk +The -F (--fix) option can be used if some portions of the archive are +missing, but it requires a reasonably intact central directory. The +input archive is scanned as usual, but zip will ignore some problems. +The resulting archive should be valid, but any inconsistent entries +will be left out. +.sk +If the archive is too damaged or the end (where the central directory is +situated) has been truncated, you must use -FF (--fixfix). This is a +change from zip 2.32, where the -F option is able to read a truncated +archive. The -F option now more reliably fixes archives with minor +damage, and the -FF option is needed to fix archives where -F and -FF +was used before. +.sk +With -FF, the archive is scanned from the beginning and Zip scans for +special signatures to identify the limits between the archive members. +The -F option is more reliable if the archive is not too much damaged, +so try this option first. +.sk +Neither option will recover archives that have been incorrectly +transferred, such as by FTP in ASCII mode instead of binary. After the +repair, the -t option of UnZip may show that some files have a bad CRC. +Such files cannot be recovered; you can remove them from the archive +using the -d option of Zip. +.sk +Because of the uncertainty of the "fixing" process, it's required +to specify an output archive, rather than risking further damage to the +original damaged archive. For example, to fix the damaged archive +foo.zip, +.sk;.indent 10 +zip -F foo --out foo_fix +.sk +tries to read the entries normally, copying good entries to the new +archive foo_fix.zip. If this doesn't work, as when the archive is +truncated, or if some entries are missed because of bad central +directory entries, try -FF: +.sk;.indent 10 +zip -FF foo --out foo_fixfix +.sk +and compare the resulting archive to the archive created using -F. The +-FF option may create an inconsistent archive. Depending on what is +damaged, you can then use the -F option to fix that archive. +.sk +A split archive with missing split files can be fixed using -F if you +have the last split of the archive (the ".zip" file). If this file is +missing, you must use -FF to fix the archive, which will prompt you for +the splits you have. +.sk +Currently, the fix options can't recover an entry which has a bad +checksum or is otherwise damaged. +.!------------------------------------------------------------------------------ +.indent -4 +2 Log_File +.br +Zip normally sends messages to the user's terminal, but these may be +also directed to a log file. +.sk;.literal +-la --log-append +.end literal;.br +Append to an existing log file. Default is to create a new version. +.sk;.literal +-lf logfilepath --logfile-path logfilepath +.end literal;.br +Open a logfile at the given path. By default, a new version will be +created, but with the -la option an existing file will be opened and the +new log information appended to any existing information. Only +warnings and errors are written to the log unless the -li option is also +given, then all information messages are also written to the log. +.sk;.literal +-li --log-info +.end literal;.br +Include information messages, such as file names being zipped, in the +log. The default is to include only the command line, any warnings +and errors, and the final status. +.!------------------------------------------------------------------------------ +.indent -4 +2 Modes_of_Operation +.br +Zip supports two distinct types of command modes, external and +internal. The external modes (update, grow, and freshen) read files +from the file system (as well as from an existing archive) while the +internal modes (delete and copy) operate exclusively on entries in an +existing archive. +.sk;.literal +-u --update +.end literal;.br +Update existing entries and add new files. If the archive does not +exist, create it. This is the default mode, so -u is optional. +.sk;.literal +-g --grow +.end literal;.br +Grow (append to) the specified Zip archive, instead of creating a new +one. If this operation fails, Zip attempts to restore the archive to +its original state. If the restoration fails, the archive might become +corrupted. This option is ignored when there's no existing archive or +when at least one archive member must be updated or deleted. +.sk;.literal +-f --freshen +.end literal;.br +Update existing entries in an existing archive. Does not add new files +to the archive. +.sk;.literal +-d --delete +.end literal;.br +Delete entries from an existing archive. +.sk;.literal +-DF --difference-archive +.end literal;.br +Create an incremental backup-style archive, where the resulting archive +will contain all new and changed files since the original archive was +created. For this to work, the input file list and current directory +must be the same as during the original Zip operation. +.sk +For example, if the existing archive was created using +.sk;.indent 10 +zip foo_full.zip [.foo...]*.* +.sk +from just above the foo directory, then the command (also from just +above the foo directory): +.sk;.indent 10 +zip foo_full.zip [.foo...]*.* -DF -O foo_incr.zip +.sk +creates the archive foo_incr.zip with just the files not in foo_full.zip +and the files where the size or date-time of the files does not match +that in foo_full.zip. Note that in the "zip -DF" operation, the +original full archive is specified as the input archive, and the -O +(--output-file) option is used to specify the new (incremental) output +archive. +.sk;.literal +-FS --filesync +.end literal;.br +Delete entries in the archive that do not match files on the OS. +Normally when an archive is updated, new files are added and changed +files are updated but files that no longer exist on the OS are not +deleted from the archive. This option enables deleting of entries that +are not matched on the OS. Enabling this option should create archives +that are the same as new archives, but since existing entries are copied +instead of compressed, updating an existing archive with -FS can be much +faster than creating a new archive. If few files are being copied from +the old archive, it may be faster to create a new archive instead. +.sk +This option deletes files from the archive. If you need to preserve the +original archive, make a copy of the archive first, or use the -O +(--output) option to output the new archive to a new file. Even though +it's slower, creating a new archive with a new archive name is safer, +avoids mismatches between archive and OS paths, and is preferred. +.sk;.literal +-U --copy-entries +.end literal;.br +Select entries in an existing archive and copy them to a new archive. +Copy mode is like update mode, but entries in the existing archive are +selected by command line patterns rather than files from the file system +and it uses the -O (--output-file) option to write the resulting archive +to a new file rather than updating the existing archive, leaving the +original archive unchanged. +.sk +Normally, when updating an archive using relative file specifications +("[]", "[.xxx]", and so on), it helps to have the same default directory +as when the archive was created, but this is not a strict requirement. +.sk +Date-time information in a Zip archive may be influenced by time zone. +.!------------------------------------------------------------------------------ +.indent -4 +3 Examples +.br +When given the name of an existing archive, Zip will replace identically +named entries in the archive or add entries for new names. For example, +if foo.zip exists and contains foo/file1 and foo/file2, and the +directory [.foo] contains the files file1 and file3, then: +.sk;.indent 10 +$ zip foo [.foo...]*.* +.sk +will replace foo/file1 in foo.zip and add foo/file3 to foo.zip. After +this, foo.zip contains foo/file1, foo/file2, and foo/file3, with foo/file2 +unchanged from before. This is the default mode -u (update). +.sk +Update will add new entries to the archive and will replace +existing entries only if the modified date of the file is more recent than +the date recorded for that name in the archive. For example: +.sk;.indent 10 +$ zip -u stuff *.* +.sk +will add any new files in the current directory, and update any changed +files in the archive stuff.zip. Note that Zip will not try to pack +stuff.zip into itself when you do this. Zip avoids including its own +output files when selecting files to include in the archive, so it +should be safe, as in this case, to have the archive included in the +list of input files. +.sk +A second mode, -f (freshen), like update will only +replace entries with newer files. Unlike update, however, it will not +add files that are not already in the archive. For example: +.sk;.indent 10 +$ zip -f foo +.sk +Note that the -f option with no arguments freshens all the entries in the +archive. The same is true of -u, so "zip -u foo" and "zip -f foo" do +the same thing. +.sk +When these options are used, Zip should be run from the same directory +as when the original Zip command was run, so that the path names in the +archive will continue to agree with the path names in the file system. +Normally, it's also a good idea to keep the other options the same (-V, +-w, and the like), to keep the archive contents consistent. +.sk +The -t (--from-date) and -tt (--before-date) options can also be used +with adding, updating, or freshening to restrict further the files to be +included in the archive. For example: +.sk;.indent 10 +$ zip -rt 12071991 infamy [.FOO]*.* +.sk +will add all the files in [.FOO] and its subdirectories that were last +modified on December 7, 1991, or later to the achive infamy.zip. Dates +can be in format mmddyyyy or yyyy-mm-dd. +.sk +Also, files can be explicitly excluded using the -x option: +.sk;.indent 10 +$ zip -r foo [.FOO] -x *.obj +.sk +which will zip up the contents of [.FOO] into foo.zip but exclude all the +files that end in ".obj". +.sk +The -d (delete) mode will remove entries from an +archive. An example might be: +.sk;.indent 10 +$ zip -d foo foo/harry/*.* *.obj +.sk +which will remove all of the files that start with "foo/harry/" and all of +the files that end with ".obj" (in any path). +.sk +The last mode, -U (--copy-entries), selects entries from an existing +archive and copies them to a new archive. +.sk;.indent 10 +$ zip -U foo *.obj --out fooobj +.sk +will copy all .obj entries from foo.zip and put them in the new archive +fooobj.zip. +.sk +Note: By default, on VMS, archive name pattern matching (-R, -d, -i, -x, +and -U) is case sensitive, even when the file system is not case +sensitive (or even case preserving). This allows accurate matching of +mixed-case names in an archive which may have been created on a system +with a case sensitive file system, but it can involve extra effort on +VMS, where it may be necessary to use unnatural case names (or the same +names in multiple cases, like "*.obj *.OBJ") for this kind of pattern +matching to give the desired behavior. If completely case-blind pattern +matching behavior is desired, specify the -ic (--ignore-case) option. +.!------------------------------------------------------------------------------ +.indent -4 +2 Options_List +.br +"zip -h" provides a concise list of common command-line options. "zip +-h2" provides more details. "zip -so" provides a list of all available +options. "zip -v" shows the program version and available features. +(The list below was derived from a "zip -so" listing.) +.sk +Short-form options begin with a single hyphen ("-"). Long-form option +begin with a double hyphen ("--"), and may be abbreviated to any +unambiguous shorter string. For example: +.lm +10;.literal +-v +--verbose +--verb +.end literal;.lm -10 +.sk +To avoid confusion, if a negatable option contains an embedded hyphen +("-"), then avoid abbreviating it at the hyphen if you plan to negate +it. For example, if an option like --some-option were abbreviated to +--some-, the parser would consider that trailing hyphen to be part of +the option name, rather than as a negating trailing hyphen. This +behavior may change in the future, to interpret the trailing hyphen in +--some- to be negating. (So don't do it.) +.sk +Some options may be negated (or modified) by appending a "-": +.lm +10;.literal +-la- +--show-files- +.end literal;.lm -10 +.sk +Some options take a value, which may immediately follow the option, or +be separated by a space or "=". For example: +.lm +10;.literal +-ttmmddyyyy +-tt mmddyyyy +-tt=mmddyyyy +.end literal;.lm -10 +.sk +.lm -4;.literal + Sh Long Description +----+-------------------+-------------------------------------------------- + 0 store store (instead of compress) + 1 compress-1 compress faster (-2, -3, -4, ...) + 9 compress-9 compress better + ? show the Zip help screen + @ names-stdin read input file patterns from SYS$INPUT (1/line) + A adjust-sfx adjust self-extracting executable + b temp-path path use "path" directory for temporary files + C preserve-case preserve case of all file names added to archive + C- preserve-case- down-case all file names added to archive + C2 preserve-case-2 preserve case of ODS2 names added to archive + C2- preserve-case-2- down-case ODS2 file added to archive (default) + C5 preserve-case-5 preserve case of ODS5 names added to archive (dflt) + C5- preserve-case-5- down-case ODS5 names added to archive + c entry-comments add a comment for each entry added to archive + D no-dir-entries do not add archive entries for directories + DF difference-archive difference archive: add only changed or new files + d delete delete entries in archive + db display-bytes display running byte counts + dc display-counts display running file counts + dd display-dots display progress dots for files (dflt size = 10MB) + dg display-globaldots display progress dots for archive, not each file + ds dot-size size set progress dot interval to "size" (MB) + du display-usize display original uncompressed size for entries + dv display-volume display volume (disk) number as in_disk>out_disk + e encrypt encrypt entries, ask for password + F fix fix mostly intact archive (try F before FF) + FF fixfix salvage what can be salvaged (not as reliable) + FS filesync remove archive entries unmatched in file system + f freshen update existing entries (only changed files) + fd force-descriptors force data descriptors as if streaming + fz force-zip64 force use of Zip64 format + g grow grow existing archive (unless updating or deleting) + H show the Zip help screen + h help show the Zip help screen + h2 more-help show extended Zip help + i include pat1 [pat2 [...]] include only names matching the patterns + ic ignore-case ignore case (case-blind archive entry name matching) + J junk-sfx junk (remove) archive preamble (unzipsfx) + j junk-paths junk (don't store) directory names, only file names + k DOS-names simulate PKZIP-made archive (DOS 8.3 names) + L license show software license + l to-crlf translate end-of-lines (LF -> CRLF) + la log-append append to existing log file + lf logfile-path lfile log to log file at lfile (default: new version) + li log-info include informational messages in log + ll from-crlf translate end-of-lines (CRLF -> LF) + MM must-match input file spec must exist (wildcards must match) + m move delete files added to archive + n suffixes sfx1[:sfx2[...]] don't compress files with these suffixes + nw no-wild no wildcards during add or update + O output-file ozf use "ozf" as the output archive (dflt = inp archive) + o latest-time set archive date-time to match oldest entry + P password password encrypt with supplied "password" string + q quiet quiet operation (no info messages) + R recurse-patterns recurse into subdirs from cur dir, match names only + r recurse-paths recurse into directories from specified path pats + s split-size size split archive at "size" (K/MB) (0: don't split) + sb split-bell ring terminal bell at pause for split medium change + sc show-command show command line + sd show-debug show debug messages + sf show-files show files to process (only) + so show-options show list of all command-line options + sp split-pause pause to select split destination(s) + sv split-verbose be verbose about creating splits + T test test archive integrity (runs UnZip -T) + t from-date mmddyyyy only do files since (at or after) "mmddyyyy" + tt before-date mmddyyyy only do files before "mmddyyyy" + u update update changed files, add new files (default mode) + V VMS-portable save VMS file attributes + VV VMS-specific save VMS file attributes and all allocated blocks + v verbose verbose messages (print version info if only arg) + w VMS-versions save VMS version numbers in archive + ww VMS-dot-versions save VMS version numbers as ".nnn", not ";nnn" + X strip-extra strip all but critical extra fields + X- strip-extra- keep all extra fields + x exclude pat1 [pat2 [...]] exclude all names matching the patterns + Z compression-method mthd use compress method "mthd" (bzip2 or deflate) + z archive-comment ask for archive comment +.end literal;.lm +4 +.!------------------------------------------------------------------------------ +.indent -4 +2 Miscellaneous_Options +.sk;.literal +-D --no-dir-entries +.end literal;.br +Do not create entries in the archive for directories. By default, +directory entries are added to an archive, so that their attributes can +be saved in the archive. When an archive is created using -D, UnZip +will still create directories as needed (subject to user control), but +they will get the default attributes (date-time, permissions, ...) on +the destination system, rather than their original atributes. +.sk;.literal +-MM --must-match +.end literal;.br +All input patterns must match at least one file and all input files +found must be readable. Normally when an input pattern does not match +a file the "name not matched" warning is issued and when an input +file has been found but later is missing or not readable a "missing or +not readable" warning is issued. In either case Zip continues +creating the archive, with missing or unreadable new files being skipped +and files already in the archive remaining unchanged. After the +archive is created, if any files were not readable zip returns the OPEN +error code (18 on most systems) instead of the normal success return (0 +on most systems). With -MM, Zip exits as soon as an input pattern +is not matched (whenever the "name not matched" warning would be issued) +or when an input file is not readable. In either case Zip exits with +an OPEN error and no archive is created. +.sk +This option is useful when a known list of files is to be zipped so any +missing or unreadable files should result in an error. It may be less +useful when used with wildcards, but Zip will still exit with an error +if any input pattern doesn't match at least one file or if any +matched files are unreadable. If you want to create the archive anyway +and only need to know if files were skipped, then don't use -MM and just +check the exit status. Also, a log file (see -lf (--logfile-path)) +could be useful. +.sk;.literal +-O out_file --output-file out_file +.end literal;.br +Process the archive changes as usual, but instead of updating the +existing archive, send the output to a new archive, "out_file". The +output archive specified must be a different file from the input +archive. +.sk +This option can be used to create updated split archives. It can +also be used with -U to copy entries from an existing archive to +a new archive. See the EXAMPLES section below. +.sk +Another use is converting zip files from one split size to +another. For instance, to convert an archive with 700MB CD splits +to one with 2GB DVD splits, can use: +.sk;.indent 10 +zip -s 2g cd-split.zip --out dvd-split.zip +.sk +which uses copy mode. See -U below. Also: +.sk;.indent 10 +zip -s 0 split.zip --out unsplit.zip +.sk +will convert a split archive to a single-file archive. +.sk +Copy mode will convert stream entries (using data descriptors and which +may be incompatible with some unzip programs) to normal entries (which +should be compatible with all unzip programs), except if standard +encryption was used. For archives with encrypted entries, zipcloak +will decrypt the entries and convert them to normal entries. +.sk;.literal +-o --latest-time +.end literal;.br +Set the modification date-time of the Zip archive file to the latest +(newest) modification date-time found among the entries in the zip +archive. This can be used without any other operations, if +desired. For example: +.sk;.indent 10 +zip -o foo +.sk +will change the modification date-time of foo.zip to the latest time of +the entries in foo.zip. +.sk;.literal +-q --quiet +.end literal;.br +Quiet mode. Eliminates informational messages and comment prompts. +This mode may be useful in command procedures, or if the Zip operation +is being performed as a background task ("$ spawn/nowait zip -q foo +*.c"). +.sk +.sk;.literal +-T --test +.end literal;.br +Test the integrity of a zip archive (the new one, if -O (--output-file) +is specified). If the check fails, the old zip file is unchanged and +(with the -m option) no input files are removed. +.sk +Implementation +.br +"zip -T" actually runs an "unzip -t" command to do the testing, so UnZip +must be installed properly for this to work. +.sk;.literal +-TT unzip_cmd --unzip-command unzip_cmd +.end literal;.br +Specify the actual UnZip command, "unzip_cmd" (normally a DCL symbol) to +use for "zip -T". This can be useful if multiple versions of UnZip are +installed on a system, and the default DCL symbol "UNZIP" would run the +wrong one (or the logical name DCL$PATH would lead to the wrong one). +.sk +In "unzip_cmd", the string "{}" is replaced by the temporary name of the +archive to be tested, otherwise the name of the archive is appended +to the end of the command. The exit status is checked for success severity. +.sk;.literal +-v --verbose +.end literal;.br +Verbose mode or print diagnostic version info. +.sk +Normally, when applied to real operations, this option enables the +display of a progress indicator during compression (see -dd for more on +dots) and requests verbose diagnostic info about archive structure +oddities. +.sk +When -v is the only command line argument, a diagnostic report is +displayed, showing: +.lm +3;.br;.indent -2 +o Copyright and other legal notices +.br;.indent -2 +o Program name, version, and release date +.br;.indent -2 +o Pointers to Info-ZIP FTP and Web sites +.br;.indent -2 +o Program build information (compiler type and version, OS version, and +the compilation date +.br;.indent -2 +o Optional features enabled at compile-time +.br;.indent -2 +o Environment variable definitions (ZIP_OPTS, ZIPOPT) +.lm -3;.br +.sk +This information should be included in bug reports. +.sk;.literal +-y --symlinks +.end literal;.br +Store symbolic links as such in the Zip archive, instead of compressing +and storing the file referred to by the link. A symbolic link normally +requires less storage than the actual file, both in the archive, and on +the destination file system. +.sk +On VMS, symbolic links are supported on ODS5 disks where the C RTL +supports symbolic links. Full support for symbolic links seems to +require VMS V8.3, but a Zip program supporting symbolic links may be +built on VMS V7.3-2. +.!------------------------------------------------------------------------------ +.indent -4 +2 Progress_Display +.br +Various options control the display of progress messages during Zip +operation. +.sk;.literal +-db --display-bytes +.end literal;.br +Display running byte counts showing the bytes processed and the bytes to +go. +.sk;.literal +-dc --display-counts +.end literal;.br +Display running count of entries processed and entries to go. +.sk;.literal +-dd --display-dots +.end literal;.br +Display dots while each entry is processed (except on ports that have +their own progress indicator). See -ds below for setting dot size. The +default is a dot every 10 MB of input file processed. The -v +(--verbose) option also displays dots and used to at a higher rate than +this (at the same rate as in previous versions of Zip) but this rate has +been changed to the new 10 MB default, and is also controlled by -ds. +.sk;.literal +-dg --display-globaldots +.end literal;.br +Display progress dots for the archive instead of for each file. The +command +.sk;.indent 10 +zip -qdgds 10m +.sk +will turn off most output except dots every 10 MB. +.sk;.literal +-ds size --dot-size size +.end literal;.br +Set amount of input file processed for each dot displayed. See -dd to +enable displaying dots. Setting this option implies -dd. "size" is in +the format "nm" where n is a number and m is a multiplier. Currently +"m" can be k (KB), m (MB), g (GB), or t (TB), so if "n" is 100 and "m" +is k, "size" would be 100k which is 100KB. The default is 10MB. +.sk +The -v (--verbose) option also displays dots and used to default to a +higher rate than this (at the same rate as in previous versions of Zip) +but now the default is 10 MB and the -v dots are also controlled by this +option. A "size" of 0 turns dots off. +.sk +This option does not control the dots from the "Scanning files" message +as Zip scans for input files. The dot size for that is fixed at 2 +seconds or a fixed number of entries, whichever is longer. +.sk;.literal +-du --display-usize +.end literal;.br +Display the uncompressed size of each entry. +.sk;.literal +-dv --display-volume +.end literal;.br +Display the volume (disk) number each entry is being written to. +.!------------------------------------------------------------------------------ +.indent -4 +2 Self_Extracting_Archives +.br +A self-extracting archive (SFX) comprises a normal Zip archive appended +to a special UnZip program (such as UNZIPSFX.EXE) for the intended +target system. +.sk +The UnZip distribution includes a VMS command procedure, +[,vms]makesfx.com, which can be used directly or adapted to create an +SFX archive from a normal Zip archive. +.sk +The .ZIP file format includes offsets to data structures in the archive, +and these offsets are measured from the start of the archive file. +Appending an archive to an UnZip SFX executable effectively moves the +start of the archive file. That makes the original offsets wrong, and +that will cause the UnZip SFX program to emit warning messages when it +tries to unpack the archive. Zip -A can be used to adjust these offsets +in a self-extracting archive. For example, to adjust the offsets in +foo.sfx_exe: +.sk;.indent 10 +zip -A foo.sfx_exe +.sk +Similarly, the UnZip SFX program can be removed from a self-extracting +archive (and the offsets in the archive restored) using the -J +(--junk-sfx) option. For example: +.sk;.indent 10 +zip -J foo.sfx_exe +.sk +Note that a self-extracting archive contains a normal Zip archive, and a +normal UnZip program can be used to expand it in the normal way. You +may get a warning about extra bytes at the beginning of the archive (the +UnZip SFX program), but UnZip should work properly after that. This +allows data in a self-extracting archive to be accessed on any system, +not just the target system where its embedded UnZip SFX program runs. +.!------------------------------------------------------------------------------ +.indent -4 +2 Split_Archives +.br +Beginning with version 3.0, Zip supports split archives. A split +archive is one which is divided into multiple files, usually to allow it +to be stored on multiple storage media (floppy diskettes, CD-ROMs, or +the like) when a single medium would be too small to contain the whole +archive. (Note that split archives are not just unitary archives split +into pieces, as the .ZIP file format includes offsets to data structures +in the archive, and for a split archive these are based on the start of +each split, not on the start of the whole archive. Concatenating the +pieces will invalidate these offsets, but UnZip can usually deal with +it. Zip will usually refuse to process such a spliced archive unless +the -FF fix option is used to fix the offsets.) +.sk +For a split archive with, say, 20 split files, the files are typically +named ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip, where +"ARCHIVE" is the archive name specified by the user on the Zip command +line. Note that the last split file is the ".zip" file. In contrast, +"spanned" archives are the original multi-disk archive generally +requiring floppy disks and using volume labels to store disk numbers. +Zip supports split archives but not spanned archives, though a procedure +exists for converting split archives of the right size to spanned +archives. The reverse is also true, where each file of a spanned +archive can be copied in order to files with the above names to create a +split archive. +.!------------------------------------------------------------------------------ +.indent -4 +3 Options +.br +Use "-s size" to create a split archive (and to set the split size). +The size is given as a number followed optionally by a multiplier suffix +of k (KB), m (MB, the default if no suffix is specified), g (GB), or t +(TB). (All are powers of 1024, not 1000). 64K is the minimum split +size. For example, the following command could be used to create a +split archive called "foo" from the contents of the "bar" directory with +splits of 670MB, which might be useful for burning on CDs: +.sk;.indent 10 +zip -s 670m foo [.bar...]*.* +.sk +Using -s without -sp as above creates all the splits in the directory +specified by "foo", in this case the current default directory. This +split mode updates the splits as the archive is being created, requiring +all splits to remain writable, but creates split archives that are +readable by any UnZip that supports split archives. See -sp below for +enabling split pause mode which allows splits to be written directly to +removable media. +.sk +The -sv option can be used to enable verbose splitting and display +details of how the splitting is being done. The -sb option can be used +to ring the terminal bell when Zip pauses for the next split +destination. +.sk +The -sp option can be used to pause Zip between splits to allow +changing removable media, for example, but read the descriptions and +warnings for both -s and -sp below. +.sk +Though Zip does not update split archives, Zip provides the option +-O (--output-file) to allow split archives to be updated and saved in a +new archive. For example: +.sk;.indent 10 +zip inarchive.zip foo.c bar.c -O outarchive.zip +.sk +reads archive inarchive.zip, even if split, adds the files foo.c and +bar.c, and writes the resulting archive to outarchive.zip. If +inarchive.zip is split, then outarchive.zip defaults to the same split +size. Be aware that outarchive.zip and any split files that are created +with it are always overwritten without warning. This may be changed in +the future. +.!------------------------------------------------------------------------------ +.indent -4 +2 Temporary_Files +.br +When creating a new archive or normally when changing an existing +archive, Zip will write a temporary file in the archive destination +directory ("ZIxxxxxxxx", where "xxxxxxxx" is the hexadecimal process ID) +with the new contents. Then, if and when the Zip job has completed with +no errors, it will rename the temporary file to the specified archive +name (replacing the old archive, if any). +.sk +You can use the -b (--temp-path) option to specify a different path +(device and/or directory) for the temporary file, but specifying a +different device will force Zip to copy the temporary file to its final +destination instead of simply renaming it, and that copying will take +more time than renaming, especially for a large archive. For example: +.sk;.indent 10 +$ zip -b disk$scratch:[tmp] stuff * +.sk +will cause Zip to put its temporary files in the directory +"disk$scratch:[tmp]", copying the temporary file back to the current +directory as stuff.zip when it's complete. +.!------------------------------------------------------------------------------ +.indent -4 +2 Text_Files +.br +Zip offers some options to help deal with line endings in text files. +These may have limited utility on VMS. +.sk;.literal +-l --to-crlf +.end literal;.br +Translate the UNIX end-of-line character LF (CR on MAC) into the MSDOS +convention CR-LF. This option should not be used on binary files. This +option can be used on UNIX if the Zip file is intended for PKUNZIP under +MSDOS. If the input files already contain CR-LF, this option adds an +extra CR. This ensure that "unzip -a" on Unix will get back an exact +copy of the original file, to undo the effect of "zip -l". See -ll +below for the binary checks. +.sk;.literal +-ll --from-crlf +.end literal;.br +Translate the MSDOS end-of-line CR LF into UNIX LF (CR on MAC). This +option should not be used on binary files. This option can be used on +MSDOS if the Zip archive is intended for UnZip under UNIX. +.sk +For both -l and -ll, if the file is converted and the file is later +determined to be binary, a warning is issued and the file is probably +corrupted. If Zip with -l or -ll detects binary (non-text) in the first +buffer read from a file, it issues a warning and skips line-ending +conversion on the file, avoiding corruption. This check seems to catch +all binary files tested, but the original check remains and if a +converted file is later determined to be binary, that warning is still +issued. The algorithm now being used for binary detection should allow +line-ending conversion of text files in UTF-8 and similar encodings. +.!------------------------------------------------------------------------------ +.indent -4 +2 VMS_Specifics +.br +VMS File Attributes +.sk;.literal +-V --VMS-portable +-VV --VMS-specific +.end literal;.br +The -V and -VV options cause Zip to store VMS file atributes (such as +file organization, record format, carriage control, and so on) in +VMS-specific "extra fields" in an archive along with the usual data. +These extra fields are ignored on non-VMS systems, but on a VMS system, +they allow UnZip to restore the files with their VMS attributes intact. +.sk +With -V, Zip ignores any data in the file after the end-of-file (EOF) +point (defined by FAT$L_EFBLK and FAT$W_FFBYTE), which works well for +well-formed files (that is, those with no valid data beyond EOF). +Portable-format files (Stream_LF, fixed-512) archived with -V should be +extracted properly on a non-VMS system. Files with more complex +structures, such as indexed files and files with embedded byte counts +or other such data may be of limited use on other systems. (UnZip on +non-VMS systems may be able to extract various VMS-format text files, +however.) +.sk +With -VV, Zip processes all allocated blocks for the file (including +those beyond EOF). When extracted on a VMS system, the original file +should be reproduced with as much fidelity as possible, but on a non-VMS +system, most files will be seen as corrupt because of the data from +beyond EOF. +.sk +VMS File Version Numbers +.sk;.literal +-w --VMS-versions +-ww --VMS-dot-versions +.end literal;.br +By default, for compatibility with non-VMS systems, Zip strips VMS file +version numbers from the names stored in an archive. The -w +(--VMS-versions) option causes Zip to retain file version numbers on +names in an archive. Without -w, a version number wildcard (";*") can +cause errors when multiple versions of a single file are treated as +multiple files with the same name. +.sk +For better compatibility with non-VMS systems where semi-colons are less +popular in file names, the -ww (--VMS-dot-versions) option stores the +file version numbers with a dot (".nnn") instead of a semi-colon +(";nnn"). +.!------------------------------------------------------------------------------ +.indent -4 +2 Copyright_and_License +.br +Zip has an option to display its copyright and license. +.sk;.literal +-L --license +.end literal;.br +The license is reproduced below. +.sk.lm +3 +This is version 2007-Mar-4 of the Info-ZIP license. The definitive +version of this document should be available at +ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and a copy +at http://www.info-zip.org/pub/infozip/license.html. +.lm -3;.sk +-------------------------------------------------------- +.sk +Copyright (c) 1990-2007 Info-ZIP. All rights reserved. +.sk +For the purposes of this copyright and license, "Info-ZIP" is defined as +the following set of individuals: +.sk;.lm +3 + Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, + Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth, + Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, + David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, + Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, + Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, + Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, + Rich Wales, Mike White. +.lm -3;.sk +This software is provided "as is," without warranty of any kind, express +or implied. In no event shall Info-ZIP or its contributors be held +liable for any direct, indirect, incidental, special or consequential +damages arising out of the use of or inability to use this software. +.sk +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the above disclaimer and the following restrictions: +.sk;.lm +7;.indent -4 + 1. Redistributions of source code (in whole or in part) must retain + the above copyright notice, definition, disclaimer, and this list + of conditions. +.sk;.indent -4 + 2. Redistributions in binary form (compiled executables and libraries) + must reproduce the above copyright notice, definition, disclaimer, + and this list of conditions in documentation and/or other materials + provided with the distribution. The sole exception to this condition + is redistribution of a standard UnZipSFX binary (including SFXWiz) as + part of a self-extracting archive; that is permitted without inclusion + of this license, as long as the normal SFX banner has not been removed + from the binary or disabled. +.sk;.indent -4 + 3. Altered versions -- including, but not limited to, ports to new operating + systems, existing ports with new graphical interfaces, versions with + modified or added functionality, and dynamic, shared, or static library + versions not from Info-ZIP -- must be plainly marked as such and must not + be misrepresented as being the original source or, if binaries, + compiled from the original source. Such altered versions also must not + be misrepresented as being Info-ZIP releases -- including, but not + limited to, labeling of the altered versions with the names "Info-ZIP" + (or any variation thereof, including, but not limited to, different + capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the + explicit permission of Info-ZIP. Such altered versions are further + prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP + e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP + will provide support for the altered versions. +.sk;.indent -4 + 4. Info-ZIP retains the right to use the names "Info-ZIP", "Zip", + "UnZip", "UnZipSFX", "WiZ", "Pocket UnZip", "Pocket Zip", and + "MacZip" for its own source and binary releases. +.lm -7;.sk +.!------------------------------------------------------------------------------ +.indent -4 +2 Acknowledgements +.br + Thanks to R. P. Byrne for his Shrink.Pas program, which + inspired this project, and from which the shrink algorithm + was stolen; to Phil Katz for placing in the public domain + the zip file format, compression format, and .ZIP filename + extension, and for accepting minor changes to the file + format; to Steve Burg for clarifications on the deflate + format; to Haruhiko Okumura and Leonid Broukhis for providing + some useful ideas for the compression algorithm; to + Keith Petersen, Rich Wales, Hunter Goatley and Mark Adler + for providing a mailing list and ftp site for the Info-ZIP + group to use; and most importantly, to the Info-ZIP group + itself (listed in the file infozip.who) without whose + tireless testing and bug-fixing efforts a portable zip + would not have been possible. Finally we should thank + (blame) the first Info-ZIP moderator, David Kirschbaum, + for getting us into this mess in the first place. +.!------------------------------------------------------------------------------ +.indent -4 +2 Bugs +.br +All bug reports, patches, or suggestions should go to zip-bugs via the +web site contact form at http://www.Info-ZIP.org. Patches should be +sent as unified or context diffs only (diff -u or diff -c). +.sk +Any bug report should include the Zip version, any special compilation +options (see "zip -v" report), the host system type and operating system +version, and any other relevant information (compiler version, lunar +phase, ...). +.!------------------------------------------------------------------------------ |