summaryrefslogtreecommitdiff
path: root/vms/zip_cli.help
diff options
context:
space:
mode:
Diffstat (limited to 'vms/zip_cli.help')
-rw-r--r--vms/zip_cli.help1636
1 files changed, 1636 insertions, 0 deletions
diff --git a/vms/zip_cli.help b/vms/zip_cli.help
new file mode 100644
index 0000000..1bb39c2
--- /dev/null
+++ b/vms/zip_cli.help
@@ -0,0 +1,1636 @@
+.!
+.! File: ZIP_CLI.HELP
+.!
+.! Author: Christian Spieler
+.!
+.! Date: 05 Dec 95 (orig. ZIP.RNH, 22 Oct 91)
+.!
+.! Description:
+.!
+.! TPU-processable source file to produce VMS on-line help for
+.! portable Zip. Adapted from ZIP.RNH, originally based on
+.! ZIP.MAN (now MANUAL).
+.!
+.! To build:
+.! $ EDIT /TPU/NOSECTION/NODISPLAY/COMMAND=CVTHELP.TPU ZIP_CLI.HELP
+.! $ RUNOFF /OUT=ZIP_CLI.HLP ZIP_CLI.RNH
+.! $ LIBR /HELP/INSERT libr ZIP_CLI
+.!
+.! Modification history:
+.!
+.! 01-001 Christian Spieler 05-DEC-1995 02:02
+.! Genesis.
+.! 01-002 Christian Spieler 20-JAN-1996 03:09
+.! Modified /LICENSE and /VERBOSE descriptions.
+.! 01-003 Christian Spieler 11-FEB-1996 23:09
+.! Added /[NO]EXTRA_FIELDS description.
+.! 01-004 Christian Spieler 11-MAR-1996 20:08
+.! Removed /ENCRYPT=VERIFY option.
+.! 01-005 Christian Spieler 11-MAY-1996 23:08
+.! Corrected/enhanced info about how to get help on UNIX options.
+.! 01-006 Christian Spieler 21-JUL-1997 22:26
+.! Updated for new options of Zip 2.2.
+.! 01-006 Christian Spieler 14-OCT-1997 22:04
+.! Cleanups for Zip 2.2 release (no version change).
+.! 01-007 Steven Schweda 15-MAY-2007
+.! Zip 3.0.
+.! 01-007 Ed Gordon 15-MAY-2007
+.! Minor updates to Zip 3.0 help.
+.!
+<INIT>
+<MAIN>
+ZIP
+
+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.
+
+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.
+
+For brief help on Zip or UnZip, run the program without specifying any
+parameters on the command line.
+
+This description covers the Zip program which uses a VMS-style CLI
+command line. The VMS CLI Zip program also accepts UNIX-style "-opt"
+options, but a separate Zip program is available which provides only a
+UNIX-style command line, and it has its own documentation. Refer to
+the Zip installation instructions for details.
+
+<FORMAT>
+ZIP [/options] archive inpath, inpath ...
+
+.!
+
+<TOPIC>
+Basic_Usage
+
+<FORMAT>
+ZIP [/options] archive inpath, inpath ...
+
+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. If /BATCH is specified, Zip
+will read file specifications from a list file or from SYS$INPUT
+(stdin).
+
+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 arguments (file names) must be quoted. 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.
+
+General
+
+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.
+
+Compression
+
+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.
+
+Compatibility
+
+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.
+
+Large Archives and Zip64
+
+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).
+
+Zip automatically uses the Zip64 extensions when a file 4 GB or larger
+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.
+
+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).
+
+<TOPIC>
+More_Usage
+
+Here is a very simple example of Zip use:
+
+<LITERAL>
+| zip stuff.zip *.*
+<LARETIL>
+
+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.
+
+Standard VMS wildcard expansion ($SEARCH) is used to interpret the
+"inpath" file and directory specifications, like the "*.*" in this
+example.
+
+On VMS, the most natural way to archive an entire directory tree is to
+use a directory-depth wildcard ("[...]"). For example:
+
+<LITERAL>
+| zip foo [...]*.*
+<LARETIL>
+
+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 /RECURSE option:
+
+<LITERAL>
+| zip /recurse foo *.*
+<LARETIL>
+
+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.
+
+One or more specific files, directories, or subdirectories may also be
+specified:
+
+<LITERAL>
+| zip foo.zip readme.txt, [www...]*.*, [.ftp...]*.*, -
+| [.src]*.h, [.src]*.c
+<LARETIL>
+
+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.
+
+To use /RECURSE with a specific directory, the name of the directory
+file itself must be specified:
+
+<LITERAL>
+| zip /recurse foo.zip [000000]www.dir, ftp.dir
+<LARETIL>
+
+You may want to make an archive that contains the files in [.foo], but
+not record the directory name, "foo". You can use the /JUNK (junk path)
+option to leave off the path:
+
+<LITERAL>
+| zip /junk foo [.foo]*.*
+<LARETIL>
+
+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:
+
+<LITERAL>
+| zip /move foo [.foo.tom...]*.*
+| zip /move foo [.foo.dick...]*.*
+| zip /move foo [.foo.harry...]*.*
+<LARETIL>
+
+The first command would create foo.zip, and the next two would add to
+it. The /MOVE option 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 /MOVE is used, the /TEST option is
+recommended and will test the resulting archive before deleting the
+input files.
+
+If a file specification list is too long to fit conveniently on the Zip
+command line, the /BATCH option can be used to cause Zip to read a list
+of file specifications from a file or from SYS$INPUT (stdin). If a DCL
+command procedure is used, the names can be specified in the procedure:
+
+<LITERAL>
+| $ zip foo /batch
+| $ deck
+| file_spec_1
+| file_spec_2
+| file_spec_3
+| $ eod
+<LARETIL>
+
+The file specifications can also be put into a separate file, and fed
+into Zip by specifying that file as "/BATCH = list_file", or by
+explicitly defining SYS$INPUT, or by using PIPE. For example, with the
+list in foo.zfl:
+<LITERAL>
+| zip foo /batch = foo.zfl
+<LARETIL>
+or:
+<LITERAL>
+| define /user_mode sys$input foo.zfl
+| zip foo /batch
+<LARETIL>
+or:
+<LITERAL>
+| pipe type foo.zfl | zip foo /batch
+<LARETIL>
+
+If Zip is not able to read a file, it issues a warning but continues.
+See the /MUST_MATCH 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.
+<TOPIC>
+Environment
+
+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.
+
+UNIX-style command-line options are required in these variables, even
+for the VMS CLI Zip program. For details, see the help topic
+UNIX_Options, or the separate Zip help for the UNIX-style command line.
+
+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.
+
+The "zip /VERBOSE" report should show the perceived settings of these
+variables.
+
+For example, the following will cause Zip to skip directories, include
+VMS portable attribute information, and perform all operations at
+quiet-level 1 by default:
+
+<LITERAL>
+| $ define ZIP_OPTS "-qDV"
+<LARETIL>
+
+Note that the quotation marks here are required to preserve lowercase
+options (opposite of the command-line behavior).
+
+<TOPIC>
+Exit_Status
+
+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:
+
+<LITERAL>
+| %x17A38001 normal exit
+| %x17A38000+ 16* Zip_error_code warnings
+| %x17A38002+ 16* Zip_error_code normal errors
+| %x17A38004+ 16* Zip_error_code fatal errors
+<LARETIL>
+
+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.
+
+The Zip VMS exit codes include severity values which approximate those
+defined by PKWARE, as shown in the following table:
+
+<LITERAL0>
+| VMS Zip err
+|severity code Error description
+|---------+---------+----------------------------------------------
+|Success 0 (OK) Normal; no errors or warnings detected.
+|Fatal 2 (EOF) Unexpected end of archive.
+|Error 3 (FORM) 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 (MEM) Zip was unable to allocate memory for
+| one or more buffers during program initializ-
+| ation.
+|Fatal 5 (LOGIC) A severe error in the archive format
+| was detected. Processing probably failed
+| immediately.
+|Error 6 (BIG) Entry too large to split, read, or
+| write.
+|Error 7 (NOTE) Invalid comment format.
+|Fatal 8 (TEST) Zip -T failed or out of memory.
+|Error 9 (ABORT) The user aborted zip prematurely
+| with control-C (or equivalent).
+|Fatal 10 (TEMP) Zip encountered an error while using
+| a tempfile.
+|Fatal 11 (READ) Read or seek error.
+|Warning 12 (NONE) Zip has nothing to do.
+|Error 13 (NAME) Missing or empty zip file.
+|Fatal 14 (WRITE) Error writing to a file.
+|Fatal 15 (CREAT) Zip was unable to create a file to
+| write to.
+|Error 16 (PARMS) Bad command line parameters.
+|Error 18 (OPEN) Zip could not open a specified file
+| to read.
+|Fatal 19 (COMPERR) Zip was built with options not
+| supported on this system.
+|Fatal 20 (ZIP64) Attempt to read unsupported Zip64
+| archive.
+<0LARETIL>
+
+<TOPIC>
+File_Names
+
+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:
+
+<LITERAL>
+[.zip30.vms]descrip.mms
+<LARETIL>
+
+could appear in a Zip archive as:
+
+<LITERAL>
+zip30/vms/descrip.mms
+<LARETIL>
+
+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:
+
+<LITERAL>
+[zip30.vms]descrip.mms
+<LARETIL>
+
+Also, device names are dropped, so the following file specification
+would also give the same archive path:
+
+<LITERAL>
+sys$sysdevice:[zip30.vms]descrip.mms
+<LARETIL>
+
+If an archive is intended for use with PKUNZIP under MSDOS, then the
+/PKZIP 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).
+
+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:
+
+<LITERAL>
+$ back [.zip30...]*.* /excl = [...vms]*.c stuff.bck /save
+<LARETIL>
+
+a corresponding Zip command might look like this:
+
+<LITERAL>
+$ zip /exclude = "*/vms/*.c" stuff.zip [.zip30...]*.*
+<LARETIL>
+
+because the files to be added to the Zip archive are specified using VMS
+file specifications, but the /EXCLUDE option excludes names based
+on their archive path/file names. Options dealing with archive names
+include /COPY_ENTRIES, /DELETE, /EXCLUDE, /INCLUDE, and
+/RECURSE=FILENAMES.
+
+Note that a UNIX-like path specification must be quoted, or else the
+slashes ("/") will confuse the command-line interpreter, causing errors
+like "%CLI-W-IVQUAL, unrecognized qualifier - check validity, spelling,
+and placement".
+
+Note: By default, on VMS, archive name pattern matching (/COPY_ENTRIES,
+/DELETE, /EXCLUDE, /INCLUDE, and /RECURSE=FILENAMES) 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 /PATTERN_CASE=BLIND option.
+<TOPIC>
+Modes_of_Operation
+
+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.
+
+<LITERAL>
+ /UPDATE
+<LARETIL>
+
+Update existing entries and add new files. If the archive does not
+exist, create it. This is the default mode, so /UPDATE is optional.
+
+<LITERAL>
+ /GROW
+<LARETIL>
+
+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.
+
+<LITERAL>
+ /FRESHEN
+<LARETIL>
+
+Update existing entries in an existing archive. Does not add new files
+to the archive.
+
+<LITERAL>
+ /DELETE
+<LARETIL>
+
+Delete entries from an existing archive.
+
+<LITERAL>
+ /COPY_ENTRIES
+<LARETIL>
+
+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 /OUTPUT option to write the resulting archive to a new
+file rather than updating the existing archive, leaving the original
+archive unchanged.
+
+<LITERAL>
+ /DIFFERENCE
+<LARETIL>
+
+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.
+
+For example, if the existing archive was created using
+
+<LITERAL>
+zip foo_full.zip [.foo...]*.*
+<LARETIL>
+
+from just above the foo directory, then the command (also from just
+above the foo directory):
+
+<LITERAL>
+zip /difference /output = foo_incr.zip foo_full.zip [.foo...]*.*
+<LARETIL>
+
+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 /DIFFERENCE" operation, the
+original full archive is specified as the input archive, and the /OUTPUT
+option is used to specify the new (incremental) output archive.
+
+<LITERAL>
+ /FILESYNC
+<LARETIL>
+
+Delete entries in the archive that do not match files on the OS.
+Normally files already in an archive that are not updated remain
+in the archive unchanged. The /FILESYNC option deletes files in
+the archive that are not matched during the directory scan,
+resulting in the archive being updated having the same contents
+as a new archive would. If much of the archive will remain
+unchanged, this can be faster than creating a new archive as
+copying entries is faster than compressing and adding new files.
+
+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.
+
+<TOPIC>
+Self_Extracting_Archives
+
+A self-extracting archive (SFX) comprises a normal Zip archive appended
+to a special UnZip program (such as UNZIPSFX_CLI.EXE) for the intended
+target system.
+
+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.
+
+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 /ADJUST_OFFSETS can be used to adjust
+these offsets in a self-extracting archive. For example, to adjust the
+offsets in foo.sfx_exe:
+
+<LITERAL>
+| zip /adjust_offsets foo.sfx_exe
+<LARETIL>
+
+Similarly, the UnZip SFX program can be removed from a self-extracting
+archive (and the offsets in the archive restored) using the /UNSFX
+option. For example:
+
+<LITERAL>
+| zip /unsfx foo.sfx_exe
+<LARETIL>
+
+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.
+
+<TOPIC>
+Split_Archives
+
+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 /FIX = FULL option is used to fix the offsets.)
+
+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.
+
+<QUALIFIERS>
+<QUALIFIER>
+/ADJUST_OFFSETS
+
+/ADJUST_OFFSETS
+
+Adjust internal offsets of the Zip archive members after some data
+(e.g. a SFX executable stub) has been prepended to the archive file.
+<QUALIFIER>
+/APPEND
+
+/APPEND
+/GROW
+
+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.
+
+See also /DELETE /DIFFERENCE, /FRESHEN, /UPDATE.
+<QUALIFIER>
+/BATCH
+
+/BATCH[=list_file]
+
+Read input file specifications (inpaths) from "list_file" (one per
+line). The list_file defaults to SYS$INPUT.
+<QUALIFIER>
+/BEFORE
+
+/BEFORE=VMS_date_time
+
+Restricts the files by date-time when adding, updating, or freshening an
+archive. Only files with modification date-times earlier than the
+specified date-time are accepted.
+
+See also /SINCE.
+<QUALIFIER>
+/COMMENTS
+
+/COMMENTS[=KEYWORD[,KEYWORD]]
+
+Add comments to the Zip archive.
+
+<LITERAL>
+| ARCHIVE Add/replace the multi-line archive comment. (default)
+| FILES Add file comment to each updated/added archive member.
+<LARETIL>
+
+The Zip program prompts for each comment to be added, which makes sense
+only if Zip is run interactively.
+
+The one-line file (archive member) comments are terminated by typing
+<Return>. To skip a file comment, just type <Return> without entering
+any further characters.
+
+The Zip archive comment may be multi-line. The comment is ended by a
+line containing just a period, or by an end-of-file character (CTRL/Z).
+<QUALIFIER>
+/COMPRESSION
+
+/COMPRESSION = {BZIP2|DEFLATE|STORE}
+
+Specify the compression method to be used when adding or updating files
+in an archive. STORE disables compression (like /LEVEL = 0). Default:
+/COMPRESSION = DEFLATE.
+
+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 highly redundant 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.)
+<QUALIFIER>
+/COPY_ENTRIES
+
+/COPY_ENTRIES
+
+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 /OUTPUT option to write the resulting archive to a new
+file rather than updating the existing archive, leaving the original
+archive unchanged.
+<QUALIFIER>
+/DELETE
+
+/DELETE
+
+Delete entries from archive.
+
+See also /DIFFERENCE, /FRESHEN, /GROW, /UPDATE.
+<QUALIFIER>
+/DIFFERENCE
+
+/DIFFERENCE
+
+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.
+
+See also /DELETE, /FRESHEN, /GROW, /UPDATE.
+<QUALIFIER>
+/DIRNAMES
+
+/DIRNAMES (default)
+/NODIRNAMES
+
+Store directory entries in the archive.
+<QUALIFIER>
+/DISPLAY
+
+/DISPLAY=(KEYWORD[,KEYWORD[...]])
+
+Enable display of progress messages.
+<LITERAL>
+| BYTES Running count of bytes processed and bytes to go.
+| COUNTS Running count of entries done and entries to go.
+| DOTS = size Dots every <size> MB while processing files.
+| (0: no dots.)
+| GLOBALDOTS Progress dots reflect the whole archive instead of each
+| file.
+| USIZE Uncompressed size of each entry.
+| VOLUME Display the volume (disk) number each entry is being
+| written to.
+<LARETIL>
+
+The default is a dot every 10 MB of input file processed. The /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 /DISPLAY=DOTS=size.
+<QUALIFIER>
+/DOT_VERSION
+
+/DOT_VERSION
+
+Directs Zip to retain VMS file version numbers on names in an archive,
+but as ".nnn" instead of ";nnn". By default, for compatibility
+with non-VMS systems, Zip strips VMS file version numbers from the names
+stored in an archive. Thus, without /DOT_VERSION or /KEEP_VERSION, a
+version number wildcard (";*") can cause errors when multiple versions
+of a single file are treated as multiple files with the same name.
+
+See also /KEEP_VERSION.
+<QUALIFIER>
+/ENCRYPT
+
+/ENCRYPT[="password"]
+
+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.
+
+You may specify the password on the command line, although we do not
+recommend it because THIS IS INSECURE. Remember to enclose the password
+string with quotation marks ("pass word"), to prevent automatic
+conversion to upper case or misinterpretation of punctuation characters
+by DCL.
+
+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.
+<QUALIFIER>
+/EXCLUDE
+
+/EXCLUDE=(file[,...])
+
+A comma-separated list of files to exclude when deleting, updating, or
+adding files in the archive. If multiple files are specified, the list
+should be enclosed in parentheses.
+<QUALIFIER>
+/EXLIST
+
+/EXLIST=list_file
+
+The files matching the filename patterns listed in "list_file" are
+excluded when deleting, updating or adding files in the archive.
+The "list_file" is a normal text file with one filename pattern entry per
+line. The name pattern entries are recognized exactly as found in
+"list_file", including leading, embedded, and trailing whitespace or most
+control characters (with exception of LineFeed and probably CarriageReturn).
+<QUALIFIER>
+/EXTRA_FIELDS
+
+/EXTRA_FIELDS (default)
+/NOEXTRA_FIELDS
+
+Allows (or suppresses) the saving of any optional extra fields in the
+archive. (/NOEXTRA_FIELDS conflicts with /VMS[=ALL].)
+
+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 /VMS[=ALL], 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.
+
+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.
+<QUALIFIER>
+/FILESYNC
+
+/FILESYNC
+
+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 /FILESYNC 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.
+
+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 /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.
+<QUALIFIER>
+/FIX_ARCHIVE
+
+/FIX=_ARCHIVE={NORMAL|FULL}
+
+The /FIX_ARCHIVE=NORMAL option (NORMAL is the default) 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.
+
+If the archive is too damaged or the end (where the central directory is
+situated) has been truncated, you must use /FIX_ARCHIVE=FULL. This is
+a change from zip 2.32, where the /FIX=NORMAL option was able to read a
+truncated archive. The /FIX=NORMAL option now more reliably fixes
+archives with minor damage, and the /FIX=FULL option is needed to fix
+some archives where /FIX=NORMAL was sufficient before.
+
+With /FIX=FULL, the archive is scanned from the beginning and Zip scans
+for special signatures to identify the limits between the archive
+members. The /FIX=NORMAL option is more reliable if the archive is not
+too much damaged, so try this option first.
+
+Neither option will recover archives that have been incorrectly
+transferred, such as by FTP in ASCII mode instead of binary. After the
+repair, the /TEST (-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 /DELETE option of Zip.
+
+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:
+
+<LITERAL>
+zip /fix_archive /output=foo_fix foo
+<LARETIL>
+
+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 /FIX_ARCHIVE=FULL:
+
+<LITERAL>
+zip /fix_archive=full /output=foo_fixfix foo
+<LARETIL>
+
+and compare the resulting archive to the archive created using
+/FIX=NORMAL. The /FIX=FULL option may create an inconsistent archive.
+Depending on what is damaged, you can then use the /FIX=NORMAL option to
+fix that archive.
+
+A split archive with missing split files can be fixed using /FIX=NORMAL
+if you have the last split of the archive (the ".zip" file). If this
+file is missing, you must use /FIX=FULL to fix the archive, which will
+prompt you for the splits you have.
+
+Currently, the fix options can't recover an entry which has a bad
+checksum or is otherwise damaged.
+<QUALIFIER>
+/FRESHEN
+
+/FRESHEN
+
+Update existing entries in an existing archive. Does not add new files
+to the archive.
+
+See also /DELETE, /DIFFERENCE, /GROW, /UPDATE.
+<QUALIFIER>
+/FULL_PATH
+
+/FULL_PATH (default)
+/NOFULL_PATH
+
+Directs Zip to store the directory part of the file names (relative to
+the current working directory) in the Zip archive. With /NOFULL_PATH,
+Zip stores only the file names, discarding any directory information.
+<QUALIFIER>
+/GROW
+
+/GROW
+/APPEND
+
+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.
+
+See also /DELETE, /DIFFERENCE, /FRESHEN, /UPDATE.
+<QUALIFIER>
+/HELP
+
+/HELP[=EXTENDED]
+
+Display Zip's help screen, including the version message. With
+/HELP=EXTENDED, more detailed (longer) help information is shown.
+<QUALIFIER>
+/INCLUDE
+
+/INCLUDE=(file[,...])
+
+A comma-separated list of files to include when deleting, updating, or
+adding files in the archive. If multiple files are specified, the list
+should be enclosed in parentheses.
+<QUALIFIER>
+/INLIST
+
+/INLIST=list_file
+
+The files matching the filename patterns listed in "list_file" are
+included when deleting, updating, or adding files in the archive.
+The "list_file" is a normal text file with one filename pattern entry per
+line. The name pattern entries are recognized exactly as found in
+"list_file", including leading, embedded, and trailing whitespace or most
+control characters (with exception of LineFeed and probably CarriageReturn).
+<QUALIFIER>
+/JUNK
+
+/JUNK
+/NOJUNK (default)
+
+Junk (discard) the directory part of the file names for added entries
+(do not not save the directory structure). The /JUNK qualifier is an
+alias for /NOFULL_PATH.
+<QUALIFIER>
+/KEEP_VERSION
+
+/KEEP_VERSION
+/NOKEEP_VERSION (default)
+
+Directs Zip to retain VMS file version numbers on names in an archive.
+By default, for compatibility with non-VMS systems, Zip strips VMS
+file version numbers from the names stored in an archive. Thus, without
+/DOT_VERSION or /KEEP_VERSION, a version number wildcard (";*") can
+cause errors when multiple versions of a single file are treated as
+multiple files with the same name.
+
+See also /DOT_VERSION.
+<QUALIFIER>
+/LATEST
+
+/LATEST
+
+The archive's creation and modification time is set to the latest
+modification time of all archive members.
+<QUALIFIER>
+/LEVEL
+
+/LEVEL=number
+
+Specifies the compression level:
+<LITERAL>
+| 0 Store
+| 1 Fastest compression (Defl:F)
+| ...
+| 9 Best compression (Defl:X)
+<LARETIL>
+
+The default level is 6.
+<QUALIFIER>
+/LICENSE
+
+/LICENSE
+
+Displays the Zip license.
+<QUALIFIER>
+/LOG_FILE
+
+/LOG_FILE=(FILE=log_file [, APPEND] [, INFORMATIONAL])
+
+Zip normally sends messages to the user's terminal, but these may be
+also directed to a log file.
+
+<LITERAL>
+ FILE=log_file
+<LARETIL>
+
+Open a logfile at the given path. By default, a new version will be
+created.
+
+<LITERAL>
+ APPEND
+<LARETIL>
+
+Append to an existing log file. Default is to create a new version.
+
+<LITERAL>
+ INFORMATIONAL
+<LARETIL>
+
+Only warnings and errors are written to the log unless the INFORMATIONAL
+option is also specified, then all information messages are also written
+to the log.
+<QUALIFIER>
+/MOVE
+
+/MOVE
+
+Move the specified files into the Zip archive. That is, Zip will delete
+any files which are successfully added to or updated in the archive. 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. It's recommended
+that /TEST also be used to test the archive before the input files are
+deleted.
+<QUALIFIER>
+/MUST_MATCH
+
+/MUST_MATCH
+
+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 /MUST_MATCH, 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.
+
+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 /MUST_MATCH
+and just check the exit status. Also, a log file (see /LOG_FILE) could
+be useful.
+<QUALIFIER>
+/PATTERN_CASE
+
+/PATTERN_CASE={BLIND|SENSITIVE}
+
+<LITERAL>
+| BLIND Use case-blind pattern matching for archive entry names.
+| SENSITIVE Use case-sensitive pattern matching for archive entry
+| names. (Default.)
+<LARETIL>
+
+By default, on VMS, archive name pattern matching (/COPY_ENTRIES,
+/DELETE, /EXCLUDE, /INCLUDE, and /RECURSE=FILENAMES) 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 /PATTERN_CASE=BLIND option.
+<QUALIFIER>
+/PKZIP
+
+/PKZIP
+/NOPKZIP (default)
+
+Create PKZIP-compatible archive entries. File names and paths are
+adjusted 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).
+<QUALIFIER>
+/PRESERVE_CASE
+
+/NOPRESERVE_CASE
+/PRESERVE_CASE[=(keyword[, ...])]
+
+Directs Zip to preserve the case of, or convert to lower-case, file names
+in the archive. Optional keywords are:
+<LITERAL>
+| NOODS2 Down-case ODS2 file names (default).
+| NOODS5 Down-case ODS5 file names.
+| ODS2 Preserve case of ODS2 file names.
+| ODS5 Preserve case of ODS5 file names (default).
+<LARETIL>
+
+By default, file names from an ODS2 file system are converted to lower
+case for storage in an archive, while the case of file names from an
+ODS5 file system is preserved.
+
+/NOPRESERVE_CASE is equivalent to /PRESERVE_CASE = (NOODS2, NOODS5),
+which causes all file names to be converted to lower-case. This is
+equivalent to the behavior of Zip before version 3.0.
+
+/PRESERVE_CASE is equivalent to /PRESERVE_CASE = (ODS2, ODS5), which
+preserves the case of all file names.
+<QUALIFIER>
+/QUIET
+
+/QUIET
+
+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 /quiet foo
+*.c").
+<QUALIFIER>
+/RECURSE
+
+/RECURSE[=KEYWORD]
+/NORECURSE (default)
+
+Directs Zip to recurse into subdirectories.
+The optional keywords recognized are:
+<LITERAL>
+| PATH take patterns as full path specifiers (-r) (default)
+| FILENAMES start from current dir;
+| only use filename part of file patterns (-R)
+<LARETIL>
+The optional FILENAMES keyword modifies the recursion algorithm to be
+(almost) compatible to PKZIP's behaviour on subdirectory recursion.
+
+On VMS, directory recursion can also be requested by using the
+directory depth wildcard ("[...]") in an input file specification.
+<QUALIFIER>
+/SHOW
+
+/SHOW=(KEYWORD[,KEYWORD[...]])
+
+Controls various diagnostic messages.
+
+The keywords recognized are:
+<LITERAL>
+| COMMAND Show command line arguments as processed (only, then exit).
+| DEBUG Show Debug information.
+| FILES Show files to process (only, then exit).
+| OPTIONS Show all available command-line options on this system.
+<LARETIL>
+<QUALIFIER>
+/SINCE
+
+/SINCE=VMS_date_time
+
+Restricts the files by date-time when adding, updating, or freshening an
+archive. Only files with modification date-times at or later than the
+specified date-time are accepted.
+
+See also /BEFORE.
+<QUALIFIER>
+/SPLIT
+
+/SPLIT = (SIZE=size [, PAUSE [, BELL]] [, VERBOSE])
+
+Enables split archives, specifies the size of the splits, and controls
+other related behavior.
+
+SIZE=size specifies 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:
+
+<LITERAL>
+| zip /split = size = 670m foo [.bar...]*.*
+<LARETIL>
+
+Using /SPLIT without PAUSE 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 PAUSE below for
+enabling split pause mode which allows splits to be written directly to
+removable media.
+
+PAUSE causes Zip to pause between splits to allow
+changing removable media, for example. PAUSE uses stream mode to
+write splits so unzips that can't read stream mode entries may not
+be able to read some entries in the archive. Unless standard encryption
+was used, copy mode using /COPY_ENTRIES can convert stream mode entries
+to normal entries.
+
+BELL ring the terminal bell when Zip pauses for the next split
+destination.
+
+VERBOSE enables verbose splitting and display details of how the
+splitting is being done.
+
+Though Zip does not update split archives, Zip provides the option
+/OUTPUT to allow split archives to be updated and saved in a new
+archive. For example:
+
+<LITERAL>
+| zip inarchive.zip foo.c bar.c /output = outarchive.zip
+<LARETIL>
+
+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.
+<QUALIFIER>
+/STORE_TYPES
+
+/STORE_TYPES=(.ext1,.ext2,... )
+
+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 with /STORE_TYPES. The default list of types where
+compression is suppressed is /STORE_TYPES=(.Z, .zip, .zoo, .arc, .lzh,
+ .arj), and the comparison is case-insensitive.
+
+/LEVEL=9 will override /STORE_TYPES, causing compression to be attempted
+for all files.
+<QUALIFIER>
+/SYMLINKS
+
+/SYMLINKS
+
+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.
+
+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.
+<QUALIFIER>
+/TEMP_PATH
+
+/TEMP_PATH=temp_dir
+
+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).
+
+/TEMP_PATH=temp_dir specifies an alternate device:[directory],
+"temp_dir", 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:
+
+<LITERAL>
+| zip /temp_path = disk$scratch:[tmp] stuff *
+<LARETIL>
+
+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.
+<QUALIFIER>
+/TEST
+
+/TEST[=UNZIP=unzip_cmd]
+
+Test the integrity of a Zip archive (the new one, if /OUTPUT is
+specified). If the check fails, the old archive is unchanged and
+(with the /MOVE option) no input files are removed.
+
+Implementation
+"zip /TEST" actually runs an "unzip -t" command to do the testing, so
+UnZip must be installed properly for this to work.
+
+With UNZIP=unzip_cmd, Zip uses the UnZip command specified by
+"unzip_cmd" (normally a DCL symbol), instead of the default command,
+"unzip -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).
+
+In "unzip_cmd", the string "{}" is replaced by the name of the
+(temporary) 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.
+<QUALIFIER>
+/TRANSLATE_EOL
+
+/TRANSLATE_EOL[=KEYWORD]
+
+Selects conversion of the end-of-line markers in text files. This
+option should be used on text files only. The optional keywords
+recognized are:
+<LITERAL>
+| LF convert LF -> CRLF (UNIX to DOS) (default)
+| CRLF convert CRLF -> LF, strip trailing CTRL-Z's (DOS to UNIX)
+<LARETIL>
+
+The CRLF option may be useful when a DOS text file has been transfered
+to a VMS disk in stream (or stream_lf) format.
+<QUALIFIER>
+/UNSFX
+
+/UNSFX
+
+Strip any prepended data from the Zip archive. ZIP /UNSFX is normally
+used to convert a self-extracting archive to a normal archive by
+removing the UnZip SFX executable from the beginning of the SFX archive.
+
+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.
+<QUALIFIER>
+/UPDATE
+
+/UPDATE
+
+Update existing archive entries and add new files. If the archive does
+not exist, create it. This is the default mode, so /UPDATE is optional.
+
+See also /DELETE /DIFFERENCE, /GROW, /FRESHEN.
+<QUALIFIER>
+/VERBOSE
+
+/VERBOSE[=NORMAL|MORE|DEBUG] [, COMMAND]]
+
+Verbose mode or print diagnostic version info.
+
+Normally, when applied to real operations, this option enables the
+display of a progress indicator during compression (see /DISPLAY=DOTS
+for more on dots) and requests verbose diagnostic info about archive
+structure oddities.
+
+/VERBOSE with no value is equivalent to /VERBOSE=NORMAL. MORE adds more
+messages, and DEBUG adds still more messages.
+
+When /VERBOSE is the only command line argument, a diagnostic report is
+displayed, showing:
+
+<LITERAL>
+| o Copyright and other legal notices
+| o Program name, version, and release date
+| o Pointers to Info-ZIP FTP and Web sites
+| o Program build information (compiler type and version, OS version,
+| and the compilation date
+| o Optional features enabled at compile-time
+| o Environment variable definitions (ZIP_OPTS, ZIPOPT)
+<LARETIL>
+
+This information should be included in bug reports.
+
+/VERBOSE=COMMAND causes Zip to display the UNIX-style command-line
+argument vector which is generated from the VMS-style CLI command line
+before executing the command. This is of primary interest to program
+developers debugging the CLI.
+<QUALIFIER>
+/VMS
+
+/VMS[=ALL]
+
+The /VMS and /VMS=ALL 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.
+
+With /VMS, 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 /VMS 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.)
+
+With /VMS=ALL, 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.
+<QUALIFIER>
+/WILDCARD
+
+<LITERAL>
+/NOWILDCARD
+/WILDCARD=NOSPAN
+<LARETIL>
+
+Controls wildcard processing.
+
+/NOWILDCARD Wildcard processing is disabled.
+
+/WILDCARD=NOSPAN Wildcards don't span directory boundaries in paths.
+<QUALIFIER>
+/ZIP64
+
+/ZIP64
+
+Forces use of Zip64 archive format, even for small files. This is
+mainly for testing and should never be used. Zip will automatically
+use Zip64 as needed without this option.
+<TOPIC>
+UNIX_Options
+
+"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.)
+
+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:
+
+<LITERAL>
+| -v
+| --verbose
+| --verb
+<LARETIL>
+
+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.)
+
+Some options may be negated (or modified) by appending a "-":
+
+<LITERAL>
+| -la-
+| --show-files-
+<LARETIL>
+
+Some options take a value, which may immediately follow the option, or
+be separated by a space or "=". For example:
+<LITERAL>
+| -ttmmddyyyy
+| -tt mmddyyyy
+| -tt=mmddyyyy
+<LARETIL>
+
+<LITERAL0>
+| 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 arcv (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/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 sz = 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 update or delete)
+| 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
+| J junk-sfx junk (remove) archive preamble (unzipsfx)
+| j junk-paths junk (don't store) dir 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 (wildcrds 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 archv)
+| 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 subdirs from cur dir, match names only
+| r recurse-paths recurse directories from specified path pats
+| s split-size size split archive at "size" (K/MB) (0: don't split)
+| sb split-bell ring termnl bell at pause for split medium chng
+| 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)
+| V VMS-portable save VMS file attributes
+| VV VMS-specific save VMS file attributes and all allocated blks
+| v verbose verbose messages (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 cmprs method "mthd" (bzip2 or deflate)
+| z archive-comment ask for archive comment
+<0LARETIL>
+
+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.
+<TOPIC>
+Copyright_and_License
+
+Zip has an option to display its copyright and license.
+
+<LITERAL>
+| /LICENSE
+<LARETIL>
+
+The license is reproduced below.
+
+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.
+
+--------------------------------------------------------
+<LITERAL0>
+|Copyright (c) 1990-2007 Info-ZIP. All rights reserved.
+|
+|For the purposes of this copyright and license, "Info-ZIP" is defined as
+|the following set of individuals:
+|
+|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.
+|
+|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.
+|
+|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:
+|
+|1. Redistributions of source code (in whole or in part) must retain
+| the above copyright notice, definition, disclaimer, and this list
+| of conditions.
+|
+|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.
+|
+|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.
+|
+|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.
+<0LARETIL>
+
+===