1.!
2.!  File:       ZIP_CLI.HELP
3.!
4.!  Author:     Christian Spieler
5.!
6.!  Date:       05 Dec 95 (orig. ZIP.RNH, 22 Oct 91)
7.!
8.!  Description:
9.!
10.!      TPU-processable source file to produce VMS on-line help for
11.!      portable Zip.  Adapted from ZIP.RNH, originally based on
12.!      ZIP.MAN (now MANUAL).
13.!
14.!      To build:
15.!          $ EDIT /TPU/NOSECTION/NODISPLAY/COMMAND=CVTHELP.TPU ZIP_CLI.HELP
16.!          $ RUNOFF /OUT=ZIP_CLI.HLP ZIP_CLI.RNH
17.!          $ LIBR /HELP/INSERT libr ZIP_CLI
18.!
19.!  Modification history:
20.!
21.!      01-001          Christian Spieler       05-DEC-1995 02:02
22.!              Genesis.
23.!      01-002          Christian Spieler       20-JAN-1996 03:09
24.!              Modified /LICENSE and /VERBOSE descriptions.
25.!      01-003          Christian Spieler       11-FEB-1996 23:09
26.!              Added /[NO]EXTRA_FIELDS description.
27.!      01-004          Christian Spieler       11-MAR-1996 20:08
28.!              Removed /ENCRYPT=VERIFY option.
29.!      01-005          Christian Spieler       11-MAY-1996 23:08
30.!              Corrected/enhanced info about how to get help on UNIX options.
31.!      01-006          Christian Spieler       21-JUL-1997 22:26
32.!              Updated for new options of Zip 2.2.
33.!      01-006          Christian Spieler       14-OCT-1997 22:04
34.!              Cleanups for Zip 2.2 release (no version change).
35.!      01-007          Steven Schweda          15-MAY-2007
36.!              Zip 3.0.
37.!      01-007          Ed Gordon               15-MAY-2007
38.!              Minor updates to Zip 3.0 help.
39.!
40<INIT>
41<MAIN>
42ZIP
43
44Zip is a compression and file packaging utility for several operating
45systems, including UNIX, VMS,  MSDOS, OS/2, Windows 9x/NT/XP, Minix,
46Atari, Macintosh, Amiga, and Acorn RISC OS.  It is analogous to a
47combination of tar and compress and is compatible with PKZIP (Phil
48Katz's ZIP) for MSDOS systems.
49
50Zip is useful for packaging a set of files for distribution, for
51archiving files, and for saving disk space by temporarily compressing
52unused files or directories.  A companion program, UnZip, unpacks Zip
53archives.
54
55For brief help on Zip or UnZip, run the program without specifying any
56parameters on the command line.
57
58This description covers the Zip program which uses a VMS-style CLI
59command line.  The VMS CLI Zip program also accepts UNIX-style "-opt"
60options, but a separate Zip program is available which provides only a
61UNIX-style  command line, and it has its own documentation.  Refer to
62the Zip installation instructions for details.
63
64<FORMAT>
65ZIP [/options] archive inpath, inpath ...
66
67.!
68
69<TOPIC>
70Basic_Usage
71
72<FORMAT>
73ZIP [/options] archive inpath, inpath ...
74
75The default action of Zip is to add or replace entries in "archive" from
76the list of "inpath" file specifications, which can include directories
77and file names with VMS-style wildcards.  If /BATCH is specified, Zip
78will read file specifications from a list file or from SYS$INPUT
79(stdin).
80
81With SET PROCESS /PARSE_STYLE = EXTENDED (available on recent non-VAX
82systems), Zip preserves the case of the command line.  Otherwise, mixed-
83or upper-case arguments (file names) must be quoted.  Examples in this
84document generally do not show this quotation, so VAX and /PARSE_STYLE =
85TRADITIONAL users (that is, troglodytes) will need to add quotation
86where needed when working with these examples.
87
88General
89
90Zip reads one or more files, compresses the data (normally), and stores
91the compressed information into a single Zip archive file, along with
92information about each file (name, path, date and time of last
93modification, protection, and check information to verify file
94integrity).  On a VMS system, Zip can also save VMS/RMS file attributes,
95allowing UnZip to restore the files without loss of important file
96attributes.  Zip can pack an entire directory structure into a Zip
97archive with a single command.
98
99Compression
100
101Compression ratios of 2:1 to 3:1 are common for text files.  Zip has one
102standard compression method ("deflate") and can also store files without
103compression.  Zip (and UnZip) may be built with optional support for the
104bzip2 compression method.  Then, the user may select bzip2 compression
105instead of the default "deflate" method.  Zip automatically chooses
106simple storage over compression for a file, if the specified compression
107method does not actually compress the data in that file.
108
109Compatibility
110
111Zip and UnZip can work with archives produced by PKZIP (supporting most
112PKZIP features up to PKZIP version 4.6), and PKZIP and PKUNZIP can work
113with archives produced by Zip (with some exceptions, notably streamed
114archives, but recent changes in the .ZIP file standard may facilitate
115better compatibility).  Zip version 3.0 is compatible with PKZIP 2.04
116and also supports the Zip64 extensions of PKZIP 4.5 which allows
117archives as well as files to exceed the previous 2 GB limit (4 GB in
118some cases).  Zip also supports bzip2 compression if the bzip2 library
119is included when Zip is built.  Note that PKUNZIP 1.10 cannot extract
120files produced by PKZIP 2.04 or Zip 3.0.  You must use PKUNZIP 2.04g or
121UnZip 5.0p1 (or later versions) to extract them.
122
123Large Archives and Zip64
124
125Where the operating system and C run-time support allow, Zip 3.0 and
126UnZip 6.0 (and later versions) support large files (input and archive),
127using the Zip64 extensions to the original .ZIP file format.  On VMS,
128this genarally means non-VAX systems with VMS V7.2 or later (perhaps
129requiring a C RTL ECO before VMS V7.3-2).
130
131Zip automatically uses the Zip64 extensions when a file 4 GB or larger
132is added to an archive, an archive containing a Zip64 entry is updated
133(if the resulting archive still needs Zip64), the size of the archive
134will exceed 4 GB, or when the number of entries in the archive will
135exceed about 64K.  Zip64 is also used for archives streamed to a
136non-seekable output device.  You must use a 4.5 compatible UnZip to
137extract files using the Zip64 extensions such as UnZip 6.0 or later.
138
139In addition, streamed archives, entries encrypted with standard
140encryption, or split archives created with the pause option may not be
141compatible with PKZIP as data descriptors are used, and PKZIP at the
142time of this writing does not support data descriptors (but recent
143changes in the PKWare published .ZIP file standard now include some
144support for the data descriptor format Zip uses).
145
146<TOPIC>
147More_Usage
148
149Here is a very simple example of Zip use:
150
151<LITERAL>
152|  zip stuff.zip *.*
153<LARETIL>
154
155This will create the Zip archive "stuff.zip" (assuming it does not
156already exist) and put all the (non-directory) files (";0") from the
157current default directory into "stuff.zip" in a compressed form.  The
158archive is opened using a default file specification of
159"SYS$DISK:[].zip", so specifying "stuff" as the archive name would also
160create (or use an existing) "stuff.zip", but specifying "stuff.other"
161would give you that name.  In general, Zip doesn't care about the type
162in the file specification, but for split archives (archives split over
163multiple files), the user should normally specify a type-less name,
164because Zip will normally generate sequentially numbered types ".z01",
165".z02", and so on for the early splits, and then the required ".zip" for
166the last split.  These file types are required by the Zip standard for
167split archives.
168
169Standard VMS wildcard expansion ($SEARCH) is used to interpret the
170"inpath" file and directory specifications, like the "*.*" in this
171example.
172
173On VMS, the most natural way to archive an entire directory tree is to
174use a directory-depth wildcard ("[...]").  For example:
175
176<LITERAL>
177|  zip foo [...]*.*
178<LARETIL>
179
180This will create the file "foo.zip" containing all the files (";0") and
181directories in and below the current default directory.  A more
182UNIX-like way to do this would be to use the /RECURSE option:
183
184<LITERAL>
185|  zip /recurse foo *.*
186<LARETIL>
187
188Zip avoids including its own output files when selecting files to
189include in the archive, so it should be safe, as in this case, to create
190the archive in the same drectory as the input files.
191
192One or more specific files, directories, or subdirectories may also be
193specified:
194
195<LITERAL>
196|  zip foo.zip readme.txt, [www...]*.*, [.ftp...]*.*, -
197|   [.src]*.h, [.src]*.c
198<LARETIL>
199
200For security reasons, paths in Zip archives are always stored as
201relative paths, so some care is needed when creating an archive so that
202it will create the intended directory structure when UnZip is used to
203unpack it.
204
205To use /RECURSE with a specific directory, the name of the directory
206file itself must be specified:
207
208<LITERAL>
209|  zip /recurse foo.zip [000000]www.dir, ftp.dir
210<LARETIL>
211
212You may want to make an archive that contains the files in [.foo], but
213not record the directory name, "foo".  You can use the /JUNK (junk path)
214option to leave off the path:
215
216<LITERAL>
217|  zip /junk foo [.foo]*.*
218<LARETIL>
219
220If you are short on disk space, you might not have enough room to hold
221both the original directory and the corresponding compressed Zip
222archive.  In this case, you can create the archive in steps, and use the
223-m option.  For example, if [.foo] contains the subdirectories [.tom],
224[.dick], and [.harry], you could:
225
226<LITERAL>
227|  zip /move foo [.foo.tom...]*.*
228|  zip /move foo [.foo.dick...]*.*
229|  zip /move foo [.foo.harry...]*.*
230<LARETIL>
231
232The first command would create foo.zip, and the next two would add to
233it.  The /MOVE option will cause Zip to delete all files added to the
234archive after making or updating foo.zip.  No deletions will be done
235until the Zip operation has completed with no errors.  This option is
236obviously dangerous and should be used with care, but it does reduce the
237need for free disk space.  When /MOVE is used, the /TEST option is
238recommended and will test the resulting archive before deleting the
239input files.
240
241If a file specification list is too long to fit conveniently on the Zip
242command line, the /BATCH option can be used to cause Zip to read a list
243of file specifications from a file or from SYS$INPUT (stdin).  If a DCL
244command procedure is used, the names can be specified in the procedure:
245
246<LITERAL>
247|  $ zip foo /batch
248|  $ deck
249|  file_spec_1
250|  file_spec_2
251|  file_spec_3
252|  $ eod
253<LARETIL>
254
255The file specifications can also be put into a separate file, and fed
256into Zip by specifying that file as "/BATCH = list_file", or by
257explicitly defining SYS$INPUT, or by using PIPE.  For example, with the
258list in foo.zfl:
259<LITERAL>
260|  zip foo /batch = foo.zfl
261<LARETIL>
262or:
263<LITERAL>
264|  define /user_mode sys$input foo.zfl
265|  zip foo /batch
266<LARETIL>
267or:
268<LITERAL>
269|  pipe type foo.zfl | zip foo /batch
270<LARETIL>
271
272If Zip is not able to read a file, it issues a warning but continues.
273See the /MUST_MATCH option for more on how Zip handles patterns that are
274not matched and files that are not readable.  If some files were
275skipped, a warning is issued at the end of the Zip operation noting how
276many files were read and how many skipped.
277<TOPIC>
278Environment
279
280A user can specify default command-line options and arguments by
281defining an "environment variable" (that is, a logical name or DCL
282symbol), "ZIP_OPTS" or "ZIPOPT", to specify them.  If both "ZIP_OPTS"
283and "ZIPOPT" are specified, the definition of "ZIPOPT" prevails.
284
285UNIX-style command-line options are required in these variables, even
286for the VMS CLI Zip program.  For details, see the help topic
287UNIX_Options, or the separate Zip help for the UNIX-style command line.
288
289The C RTL function getenv() is used to sense these variables, so its
290behavior determines what happens if both a logical name and a symbol are
291defined.  As of VMS V7.3, a logical name supercedes a symbol.
292
293The "zip /VERBOSE" report should show the perceived settings of these
294variables.
295
296For example, the following will cause Zip to skip directories, include
297VMS portable attribute information, and perform all operations at
298quiet-level 1 by default:
299
300<LITERAL>
301|  $ define ZIP_OPTS "-qDV"
302<LARETIL>
303
304Note that the quotation marks here are required to preserve lowercase
305options (opposite of the command-line behavior).
306
307<TOPIC>
308Exit_Status
309
310On VMS, Zip's UNIX-style exit values are mapped into VMS-style status
311codes with facility code 1955 = %x7A3, and with the inhibit-message
312(%x10000000) and facility-specific (%x00008000) bits set:
313
314<LITERAL>
315|     %x17A38001                        normal exit
316|     %x17A38000+ 16* Zip_error_code    warnings
317|     %x17A38002+ 16* Zip_error_code    normal errors
318|     %x17A38004+ 16* Zip_error_code    fatal errors
319<LARETIL>
320
321Note that multiplying the UNIX-style Zip error code by 16 places it
322conveniently in the hexadecimal representation of the VMS exit code,
323"__" in %x17A38__s, where "s" is the severity code.  For example, a
324truncated archive might cause Zip error code 2, which would be
325transformed into the VMS exit status %x17A38024.
326
327The Zip VMS exit codes include severity values which approximate those
328defined by PKWARE, as shown in the following table:
329
330<LITERAL0>
331|  VMS      Zip err
332|severity    code     Error description
333|---------+---------+----------------------------------------------
334|Success       0      (OK) Normal; no errors or warnings detected.
335|Fatal         2      (EOF) Unexpected end of archive.
336|Error         3      (FORM) A generic error in the archive format
337|                     was detected.  Processing may have completed
338|                     successfully anyway;  some  broken  archives
339|                     created by other archivers have simple work-
340|                     arounds.
341|Fatal         4      (MEM) Zip was unable to allocate memory for
342|                     one or more buffers during program initializ-
343|                     ation.
344|Fatal         5      (LOGIC) A severe error in the archive format
345|                     was detected.  Processing  probably  failed
346|                     immediately.
347|Error         6      (BIG) Entry too large to  split,  read,  or
348|                     write.
349|Error         7      (NOTE) Invalid comment format.
350|Fatal         8      (TEST) Zip -T failed or out of memory.
351|Error         9      (ABORT) The user aborted  zip  prematurely
352|                     with  control-C (or equivalent).
353|Fatal        10      (TEMP) Zip  encountered an error while using
354|                     a tempfile.
355|Fatal        11      (READ) Read or seek error.
356|Warning      12      (NONE) Zip has nothing to do.
357|Error        13      (NAME) Missing or empty zip file.
358|Fatal        14      (WRITE) Error writing to a file.
359|Fatal        15      (CREAT) Zip was unable to create a file to
360|                     write to.
361|Error        16      (PARMS) Bad command line parameters.
362|Error        18      (OPEN) Zip could not open a specified file
363|                     to read.
364|Fatal        19      (COMPERR) Zip was built with options not
365|                     supported on this system.
366|Fatal        20      (ZIP64) Attempt to read unsupported Zip64
367|                     archive.
368<0LARETIL>
369
370<TOPIC>
371File_Names
372
373Zip deals with file names in the system file system and with file names
374in Zip archives.  File names in a Zip archive are stored in a UNIX-like
375path-name format.  For example, a VMS file specification like this:
376
377<LITERAL>
378[.zip30.vms]descrip.mms
379<LARETIL>
380
381could appear in a Zip archive as:
382
383<LITERAL>
384zip30/vms/descrip.mms
385<LARETIL>
386
387For security reasons, paths in Zip archives are always stored as
388relative paths, so an absolute VMS directory specification will be
389transformed to a relative path in the archive (that is, no leading "/").
390For example, the following absolute directory specification would give
391the same archive path as the previous (relative) example:
392
393<LITERAL>
394[zip30.vms]descrip.mms
395<LARETIL>
396
397Also, device names are dropped, so the following file specification
398would also give the same archive path:
399
400<LITERAL>
401sys$sysdevice:[zip30.vms]descrip.mms
402<LARETIL>
403
404If an archive is intended for use with PKUNZIP under MSDOS, then the
405/PKZIP option should be used to attempt to adjust the names and paths to
406conform to MSDOS character-set and length limitations, to store only the
407MSDOS file attributes (just the owner:write attribute from VMS), and to
408mark the entry as made under MSDOS (even though it wasn't).
409
410Note that file specifications in the file system must be specified using
411VMS notation, but file names in an archive must be specified using the
412UNIX-like notation used in the archive.  For example, where a BACKUP
413command might look like this:
414
415<LITERAL>
416$ back [.zip30...]*.* /excl = [...vms]*.c stuff.bck /save
417<LARETIL>
418
419a corresponding Zip command might look like this:
420
421<LITERAL>
422$ zip /exclude = "*/vms/*.c" stuff.zip [.zip30...]*.*
423<LARETIL>
424
425because the files to be added to the Zip archive are specified using VMS
426file specifications, but the /EXCLUDE option excludes names based
427on their archive path/file names.  Options dealing with archive names
428include /COPY_ENTRIES, /DELETE, /EXCLUDE, /INCLUDE, and
429/RECURSE=FILENAMES.
430
431Note that a UNIX-like path specification must be quoted, or else the
432slashes ("/") will confuse the command-line interpreter, causing errors
433like "%CLI-W-IVQUAL, unrecognized qualifier - check validity, spelling,
434and placement".
435
436Note: By default, on VMS, archive name pattern matching (/COPY_ENTRIES,
437/DELETE, /EXCLUDE, /INCLUDE, and /RECURSE=FILENAMES) is case sensitive,
438even when the file system is not case sensitive (or even case
439preserving).  This allows accurate matching of mixed-case names in an
440archive which may have been created on a system with a case sensitive
441file system, but it can involve extra effort on VMS, where it may be
442necessary to use unnatural case names (or the same names in multiple
443cases, like "*.obj *.OBJ") for this kind of pattern matching to give the
444desired behavior.  If completely case-blind pattern matching behavior is
445desired, specify the /PATTERN_CASE=BLIND option.
446<TOPIC>
447Modes_of_Operation
448
449Zip supports two distinct types of command modes, external and
450internal.  The external modes (update, grow, and freshen) read files
451from the file system (as well as from an existing archive) while the
452internal modes (delete and copy) operate exclusively on entries in an
453existing archive.
454
455<LITERAL>
456  /UPDATE
457<LARETIL>
458
459Update existing entries and add new files.  If the archive does not
460exist, create it.  This is the default mode, so /UPDATE is optional.
461
462<LITERAL>
463  /GROW
464<LARETIL>
465
466Grow (append to) the specified Zip archive, instead of creating a new
467one.  If this operation fails, Zip attempts to restore the archive to
468its original state.  If the restoration fails, the archive might become
469corrupted.  This option is ignored when there's no existing archive or
470when at least one archive member must be updated or deleted.
471
472<LITERAL>
473  /FRESHEN
474<LARETIL>
475
476Update existing entries in an existing archive.  Does not add new files
477to the archive.
478
479<LITERAL>
480  /DELETE
481<LARETIL>
482
483Delete entries from an existing archive.
484
485<LITERAL>
486  /COPY_ENTRIES
487<LARETIL>
488
489Select entries in an existing archive and copy them to a new archive.
490Copy mode is like update mode, but entries in the existing archive are
491selected by command line patterns rather than files from the file system
492and it uses the /OUTPUT option to write the resulting archive to a new
493file rather than updating the existing archive, leaving the original
494archive unchanged.
495
496<LITERAL>
497  /DIFFERENCE
498<LARETIL>
499
500Create an incremental backup-style archive, where the resulting archive
501will contain all new and changed files since the original archive was
502created.  For this to work, the input file list and current directory
503must be the same as during the original Zip operation.
504
505For example, if the existing archive was created using
506
507<LITERAL>
508zip foo_full.zip [.foo...]*.*
509<LARETIL>
510
511from just above the foo directory, then the command (also from just
512above the foo directory):
513
514<LITERAL>
515zip /difference /output = foo_incr.zip foo_full.zip [.foo...]*.*
516<LARETIL>
517
518creates the archive foo_incr.zip with just the files not in foo_full.zip
519and the files where the size or date-time of the files does not match
520that in foo_full.zip.  Note that in the "ZIP /DIFFERENCE" operation, the
521original full archive is specified as the input archive, and the /OUTPUT
522option is used to specify the new (incremental) output archive.
523
524<LITERAL>
525  /FILESYNC
526<LARETIL>
527
528Delete entries in the archive that do not match files on the OS.
529Normally files already in an archive that are not updated remain
530in the archive unchanged.  The /FILESYNC option deletes files in
531the archive that are not matched during the directory scan,
532resulting in the archive being updated having the same contents
533as a new archive would.  If much of the archive will remain
534unchanged, this can be faster than creating a new archive as
535copying entries is faster than compressing and adding new files.
536
537Normally, when updating an archive using relative file specifications
538("[]", "[.xxx]", and so on), it helps to have the same default directory
539as when the archive was created, but this is not a strict requirement.
540
541<TOPIC>
542Self_Extracting_Archives
543
544A self-extracting archive (SFX) comprises a normal Zip archive appended
545to a special UnZip program (such as UNZIPSFX_CLI.EXE) for the intended
546target system.
547
548The UnZip distribution includes a VMS command procedure,
549[,vms]makesfx.com, which can be used directly or adapted to create an
550SFX archive from a normal Zip archive.
551
552The .ZIP file format includes offsets to data structures in the archive,
553and these offsets are measured from the start of the archive file.
554Appending an archive to an UnZip SFX executable effectively moves the
555start of the archive file.  That makes the original offsets wrong, and
556that will cause the UnZip SFX program to emit warning messages when it
557tries to unpack the archive.  Zip /ADJUST_OFFSETS can be used to adjust
558these offsets in a self-extracting archive.  For example, to adjust the
559offsets in foo.sfx_exe:
560
561<LITERAL>
562|  zip /adjust_offsets foo.sfx_exe
563<LARETIL>
564
565Similarly, the UnZip SFX program can be removed from a self-extracting
566archive (and the offsets in the archive restored) using the /UNSFX
567option.  For example:
568
569<LITERAL>
570|  zip /unsfx foo.sfx_exe
571<LARETIL>
572
573Note that a self-extracting archive contains a normal Zip archive, and a
574normal UnZip program can be used to expand it in the normal way.  You
575may get a warning about extra bytes at the beginning of the archive (the
576UnZip SFX program), but UnZip should work properly after that.  This
577allows data in a self-extracting archive to be accessed on any system,
578not just the target system where its embedded UnZip SFX program runs.
579
580<TOPIC>
581Split_Archives
582
583Beginning with version 3.0, Zip supports split archives.  A split
584archive is one which is divided into multiple files, usually to allow it
585to be stored on multiple storage media (floppy diskettes, CD-ROMs, or
586the like) when a single medium would be too small to contain the whole
587archive.  (Note that split archives are not just unitary archives split
588into pieces, as the .ZIP file format includes offsets to data structures
589in the archive, and for a split archive these are based on the start of
590each split, not on the start of the whole archive.  Concatenating the
591pieces will invalidate these offsets, but UnZip can usually deal with
592it.  Zip will usually refuse to process such a spliced archive unless
593the /FIX = FULL option is used to fix the offsets.)
594
595For a split archive with, say, 20 split files, the files are typically
596named ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip, where
597"ARCHIVE" is the archive name specified by the user on the Zip command
598line.  Note that the last split file is the ".zip" file.  In contrast,
599"spanned" archives are the original multi-disk archive generally
600requiring floppy disks and using volume labels to store disk numbers.
601Zip supports split archives but not spanned archives, though a procedure
602exists for converting split archives of the right size to spanned
603archives.  The reverse is also true, where each file of a spanned
604archive can be copied in order to files with the above names to create a
605split archive.
606
607<QUALIFIERS>
608<QUALIFIER>
609/ADJUST_OFFSETS
610
611/ADJUST_OFFSETS
612
613Adjust internal offsets of the Zip archive members after some data
614(e.g. a SFX executable stub) has been prepended to the archive file.
615<QUALIFIER>
616/APPEND
617
618/APPEND
619/GROW
620
621Grow (append to) the specified Zip archive, instead of creating a new
622one.  If this operation fails, Zip attempts to restore the archive to
623its original state.  If the restoration fails, the archive might become
624corrupted.  This option is ignored when there's no existing archive or
625when at least one archive member must be updated or deleted.
626
627See also /DELETE /DIFFERENCE, /FRESHEN, /UPDATE.
628<QUALIFIER>
629/BATCH
630
631/BATCH[=list_file]
632
633Read input file specifications (inpaths) from "list_file" (one per
634line).  The list_file defaults to SYS$INPUT.
635<QUALIFIER>
636/BEFORE
637
638/BEFORE=VMS_date_time
639
640Restricts the files by date-time when adding, updating, or freshening an
641archive.  Only files with modification date-times earlier than the
642specified date-time are accepted.
643
644See also /SINCE.
645<QUALIFIER>
646/COMMENTS
647
648/COMMENTS[=KEYWORD[,KEYWORD]]
649
650Add comments to the Zip archive.
651
652<LITERAL>
653|  ARCHIVE   Add/replace the multi-line archive comment. (default)
654|  FILES     Add file comment to each updated/added archive member.
655<LARETIL>
656
657The Zip program prompts for each comment to be added, which makes sense
658only if Zip is run interactively.
659
660The one-line file (archive member) comments are terminated by typing
661<Return>.  To skip a file comment, just type <Return> without entering
662any further characters.
663
664The Zip archive comment may be multi-line. The comment is ended by a
665line containing just a period, or by an end-of-file character (CTRL/Z).
666<QUALIFIER>
667/COMPRESSION
668
669/COMPRESSION = {BZIP2|DEFLATE|STORE}
670
671Specify the compression method to be used when adding or updating files
672in an archive.  STORE disables compression (like /LEVEL = 0).  Default:
673/COMPRESSION = DEFLATE.
674
675Zip can archive files with or without compression.  The standard
676compression method ("deflate") is compatible with all UnZip versions
677(except really old ones that only understand the "store" method).
678Current Zip and UnZip versions may be built with optional support for
679the bzip2 compression method.  (The bzip2 method can compress better,
680especially when compressing highly redundant files, but uses more CPU
681time, and requires an UnZip which includes the optional bzip2 support.
682See the installation instructions for details on adding bzip2
683compression support at build time.)
684<QUALIFIER>
685/COPY_ENTRIES
686
687/COPY_ENTRIES
688
689Select entries in an existing archive and copy them to a new archive.
690Copy mode is like update mode, but entries in the existing archive are
691selected by command line patterns rather than files from the file system
692and it uses the /OUTPUT option to write the resulting archive to a new
693file rather than updating the existing archive, leaving the original
694archive unchanged.
695<QUALIFIER>
696/DELETE
697
698/DELETE
699
700Delete entries from archive.
701
702See also /DIFFERENCE, /FRESHEN, /GROW, /UPDATE.
703<QUALIFIER>
704/DIFFERENCE
705
706/DIFFERENCE
707
708Create an incremental backup-style archive, where the resulting archive
709will contain all new and changed files since the original archive was
710created.  For this to work, the input file list and current directory
711must be the same as during the original Zip operation.
712
713See also /DELETE, /FRESHEN, /GROW, /UPDATE.
714<QUALIFIER>
715/DIRNAMES
716
717/DIRNAMES (default)
718/NODIRNAMES
719
720Store directory entries in the archive.
721<QUALIFIER>
722/DISPLAY
723
724/DISPLAY=(KEYWORD[,KEYWORD[...]])
725
726Enable display of progress messages.
727<LITERAL>
728|  BYTES        Running count of bytes processed and bytes to go.
729|  COUNTS       Running count of entries done and entries to go.
730|  DOTS = size  Dots every <size> MB while processing files.
731|               (0: no dots.)
732|  GLOBALDOTS   Progress dots reflect the whole archive instead of each
733|               file.
734|  USIZE        Uncompressed size of each entry.
735|  VOLUME       Display the volume (disk) number each entry is being
736|               written to.
737<LARETIL>
738
739The default is a dot every 10 MB of input file processed.  The /VERBOSE
740option also displays dots and used to at a higher rate than this (at the
741same rate as in previous versions of Zip) but this rate has been changed
742to the new 10 MB default, and is also controlled by /DISPLAY=DOTS=size.
743<QUALIFIER>
744/DOT_VERSION
745
746/DOT_VERSION
747
748Directs Zip to retain VMS file version numbers on names in an archive,
749but as ".nnn" instead of ";nnn".  By default, for compatibility
750with non-VMS systems, Zip strips VMS file version numbers from the names
751stored in an archive.  Thus, without /DOT_VERSION or /KEEP_VERSION, a
752version number wildcard (";*") can cause errors when multiple versions
753of a single file are treated as multiple files with the same name.
754
755See also /KEEP_VERSION.
756<QUALIFIER>
757/ENCRYPT
758
759/ENCRYPT[="password"]
760
761Encrypt new or updated archive entries using a password which is
762supplied by the user interactively on the terminal in response to a
763prompt.  (The password will not be echoed.)  If SYS$COMMAND is not a
764terminal, Zip will exit with an error.  The password is verified before
765being accepted.
766
767You may specify the password on the command line, although we do not
768recommend it because THIS IS INSECURE.  Remember to enclose the password
769string with quotation marks ("pass word"), to prevent automatic
770conversion to upper case or misinterpretation of punctuation characters
771by DCL.
772
773Because standard Zip encryption is weak, where security is truly
774important, use a strong encryption program, such as Pretty Good Privacy
775(PGP) or GNU Privacy Guard (GnuPG), on an archive instead of standard
776Zip encryption.  A stronger encryption method, such as AES, is planned
777for Zip 3.1.
778<QUALIFIER>
779/EXCLUDE
780
781/EXCLUDE=(file[,...])
782
783A comma-separated list of files to exclude when deleting, updating, or
784adding files in the archive.  If multiple files are specified, the list
785should be enclosed in parentheses.
786<QUALIFIER>
787/EXLIST
788
789/EXLIST=list_file
790
791The files matching the filename patterns listed in "list_file" are
792excluded when deleting, updating or adding files in the archive.
793The "list_file" is a normal text file with one filename pattern entry per
794line.  The name pattern entries are recognized exactly as found in
795"list_file", including leading, embedded, and trailing whitespace or most
796control characters (with exception of LineFeed and probably CarriageReturn).
797<QUALIFIER>
798/EXTRA_FIELDS
799
800/EXTRA_FIELDS (default)
801/NOEXTRA_FIELDS
802
803Allows (or suppresses) the saving of any optional extra fields in the
804archive.  (/NOEXTRA_FIELDS conflicts with /VMS[=ALL].)
805
806The .ZIP file format allows some extra data to be stored with a file in
807the archive.  For example, where local time zone information is
808available, Zip can store UTC date-time data for files.  (Look for
809USE_EF_UT_TIME in a "zip -v" report.)  On VMS, with /VMS[=ALL], Zip will
810also store VMS-specific file attributes.  These data are packaged as
811"extra fields" in the archive.  Some extra fields are specific to a
812particular operating system (like VMS file attributes).  Large files
813(bigger than 4GB) on any OS require an extra field to hold their 64-bit
814size data.  Depending on the capabilities of the UnZip program used to
815expand the archive, these extra fields may be used or ignored when files
816are extracted from the archive.
817
818Some extra fields, like UTC date-times or VMS file attributes, are
819optional.  Others, like the Zip64 extra field which holds 64-bit sizes
820for a large file, are required.
821<QUALIFIER>
822/FILESYNC
823
824/FILESYNC
825
826Delete entries in the archive that do not match files on the OS.
827Normally when an archive is updated, new files are added and changed
828files are updated but files that no longer exist on the OS are not
829deleted from the archive.  This option enables deleting of entries that
830are not matched on the OS.  Enabling this option should create archives
831that are the same as new archives, but since existing entries are copied
832instead of compressed, updating an existing archive with /FILESYNC can
833be much faster than creating a new archive.  If few files are being
834copied from the old archive, it may be faster to create a new archive
835instead.
836
837This option deletes files from the archive.  If you need to preserve the
838original archive, make a copy of the archive first, or use the /OUTPUT
839option to output the new archive to a new file.  Even though it's
840slower, creating a new archive with a new archive name is safer, avoids
841mismatches between archive and OS paths, and is preferred.
842<QUALIFIER>
843/FIX_ARCHIVE
844
845/FIX=_ARCHIVE={NORMAL|FULL}
846
847The /FIX_ARCHIVE=NORMAL option (NORMAL is the default) can be used if
848some portions of the archive are missing, but it requires a reasonably
849intact central directory.  The input archive is scanned as usual, but
850zip will ignore some problems. The resulting archive should  be valid,
851but any inconsistent entries will be left out.
852
853If the archive is too damaged or the end (where the central directory is
854situated) has been truncated, you must use /FIX_ARCHIVE=FULL.  This is
855a change from zip 2.32, where the /FIX=NORMAL option was able to read a
856truncated archive.  The /FIX=NORMAL option now more reliably fixes
857archives with minor damage, and the /FIX=FULL option is needed to fix
858some archives where /FIX=NORMAL was sufficient before.
859
860With /FIX=FULL, the archive is scanned from the beginning and Zip scans
861for special signatures to identify the limits between the archive
862members. The /FIX=NORMAL option is more reliable if the archive is not
863too much damaged, so try this option first.
864
865Neither option will recover archives that have been incorrectly
866transferred, such as by FTP in ASCII mode instead of binary.  After the
867repair, the /TEST (-t) option of UnZip may show that some files have a
868bad CRC. Such files cannot be recovered; you can remove them from the
869archive using the /DELETE option of Zip.
870
871Because of the uncertainty of the "fixing" process, it's required
872to specify an output archive, rather than risking further damage to the
873original damaged archive.  For example, to fix the damaged archive
874foo.zip:
875
876<LITERAL>
877zip /fix_archive /output=foo_fix foo
878<LARETIL>
879
880tries to read the entries normally, copying good entries to the new
881archive foo_fix.zip.  If this doesn't work, as when the archive is
882truncated, or if some entries are missed because of bad central
883directory entries, try /FIX_ARCHIVE=FULL:
884
885<LITERAL>
886zip /fix_archive=full /output=foo_fixfix foo
887<LARETIL>
888
889and compare the resulting archive to the archive created using
890/FIX=NORMAL.  The /FIX=FULL option may create an inconsistent archive. 
891Depending on what is damaged, you can then use the /FIX=NORMAL option to
892fix that archive.
893
894A split archive with missing split files can be fixed using /FIX=NORMAL
895if you have the last split of the archive (the ".zip" file).  If this
896file is missing, you must use /FIX=FULL to fix the archive, which will
897prompt you for the splits you have.
898
899Currently, the fix options can't recover an entry which has a bad
900checksum or is otherwise damaged.
901<QUALIFIER>
902/FRESHEN
903
904/FRESHEN
905
906Update existing entries in an existing archive.  Does not add new files
907to the archive.
908
909See also /DELETE, /DIFFERENCE, /GROW, /UPDATE.
910<QUALIFIER>
911/FULL_PATH
912
913/FULL_PATH  (default)
914/NOFULL_PATH
915
916Directs Zip to store the directory part of the file names (relative to
917the current working directory) in the Zip archive.  With /NOFULL_PATH,
918Zip stores only the file names, discarding any directory information.
919<QUALIFIER>
920/GROW
921
922/GROW
923/APPEND
924
925Grow (append to) the specified Zip archive, instead of creating a new
926one.  If this operation fails, Zip attempts to restore the archive to
927its original state.  If the restoration fails, the archive might become
928corrupted.  This option is ignored when there's no existing archive or
929when at least one archive member must be updated or deleted.
930
931See also /DELETE, /DIFFERENCE, /FRESHEN, /UPDATE.
932<QUALIFIER>
933/HELP
934
935/HELP[=EXTENDED]
936
937Display Zip's help screen, including the version message.  With
938/HELP=EXTENDED, more detailed (longer) help information is shown.
939<QUALIFIER>
940/INCLUDE
941
942/INCLUDE=(file[,...])
943
944A comma-separated list of files to include when deleting, updating, or
945adding files in the archive.  If multiple files are specified, the list
946should be enclosed in parentheses.
947<QUALIFIER>
948/INLIST
949
950/INLIST=list_file
951
952The files matching the filename patterns listed in "list_file" are
953included when deleting, updating, or adding files in the archive.
954The "list_file" is a normal text file with one filename pattern entry per
955line. The name pattern entries are recognized exactly as found in
956"list_file", including leading, embedded, and trailing whitespace or most
957control characters (with exception of LineFeed and probably CarriageReturn).
958<QUALIFIER>
959/JUNK
960
961/JUNK
962/NOJUNK (default)
963
964Junk (discard) the directory part of the file names for added entries
965(do not not save the directory structure). The /JUNK qualifier is an
966alias for /NOFULL_PATH.
967<QUALIFIER>
968/KEEP_VERSION
969
970/KEEP_VERSION
971/NOKEEP_VERSION (default)
972
973Directs Zip to retain VMS file version numbers on names in an archive.
974By default, for compatibility with non-VMS systems, Zip strips VMS
975file version numbers from the names stored in an archive.  Thus, without
976/DOT_VERSION or /KEEP_VERSION, a version number wildcard (";*") can
977cause errors when multiple versions of a single file are treated as
978multiple files with the same name.
979
980See also /DOT_VERSION.
981<QUALIFIER>
982/LATEST
983
984/LATEST
985
986The archive's creation and modification time is set to the latest
987modification time of all archive members.
988<QUALIFIER>
989/LEVEL
990
991/LEVEL=number
992
993Specifies the compression level:
994<LITERAL>
995|  0      Store
996|  1      Fastest compression (Defl:F)
997|  ...
998|  9      Best compression    (Defl:X)
999<LARETIL>
1000
1001The default level is 6.
1002<QUALIFIER>
1003/LICENSE
1004
1005/LICENSE
1006
1007Displays the Zip license.
1008<QUALIFIER>
1009/LOG_FILE
1010
1011/LOG_FILE=(FILE=log_file [, APPEND] [, INFORMATIONAL])
1012
1013Zip normally sends messages to the user's terminal, but these may be
1014also directed to a log file.
1015
1016<LITERAL>
1017  FILE=log_file
1018<LARETIL>
1019
1020Open a logfile at the given path.  By default, a new version will be
1021created.  
1022
1023<LITERAL>
1024  APPEND
1025<LARETIL>
1026
1027Append to an existing log file.  Default is to create a new version.
1028
1029<LITERAL>
1030  INFORMATIONAL
1031<LARETIL>
1032
1033Only warnings and errors are written to the log unless the INFORMATIONAL
1034option is also specified, then all information messages are also written
1035to the log.
1036<QUALIFIER>
1037/MOVE
1038
1039/MOVE
1040
1041Move the specified files into the Zip archive.  That is, Zip will delete
1042any files which are successfully added to or updated in the archive.  No
1043deletions will be done until the Zip operation has completed with no
1044errors.  This option is obviously dangerous and should be used with
1045care, but it does reduce the need for free disk space.  It's recommended
1046that /TEST also be used to test the archive before the input files are
1047deleted.
1048<QUALIFIER>
1049/MUST_MATCH
1050
1051/MUST_MATCH
1052
1053All input patterns must match at least one file and all input files
1054found must be readable.  Normally when an input pattern does not match
1055a file the "name not matched" warning is issued and when an input
1056file has been found but later is missing or not readable a "missing or
1057not readable" warning is issued.  In either case Zip continues
1058creating the archive, with missing or unreadable new files being skipped
1059and files already in the archive remaining unchanged.  After the
1060archive is created, if any files were not readable zip returns the OPEN
1061error code (18 on most systems) instead of the normal success return (0
1062on most systems).  With /MUST_MATCH, Zip exits as soon as an input
1063pattern is not matched (whenever the "name not matched" warning would be
1064issued) or when an input file is not readable.  In either case Zip exits
1065with an OPEN error and no archive is created.
1066
1067This option is useful when a known list of files is to be zipped so any
1068missing or unreadable files should result in an error.  It may be less
1069useful when used with wildcards, but Zip will still exit with an error
1070if any input pattern doesn't match at least  one file or if any
1071matched files are unreadable.  If you want to create the archive anyway
1072and only need to know if files were skipped, then don't use /MUST_MATCH
1073and just check the exit status.  Also, a log file (see /LOG_FILE) could
1074be useful.
1075<QUALIFIER>
1076/PATTERN_CASE
1077
1078/PATTERN_CASE={BLIND|SENSITIVE}
1079
1080<LITERAL>
1081|  BLIND      Use case-blind pattern matching for archive entry names.
1082|  SENSITIVE  Use case-sensitive pattern matching for archive entry
1083|             names.  (Default.)
1084<LARETIL>
1085
1086By default, on VMS, archive name pattern matching (/COPY_ENTRIES,
1087/DELETE, /EXCLUDE, /INCLUDE, and /RECURSE=FILENAMES) is case sensitive,
1088even when the file system is not case sensitive (or even case
1089preserving).  This allows accurate matching of mixed-case names in an
1090archive which may have been created on a system with a case sensitive
1091file system, but it can involve extra effort on VMS, where it may be
1092necessary to use unnatural case names (or the same names in multiple
1093cases, like "*.obj *.OBJ") for this kind of pattern matching to give the
1094desired behavior.  If completely case-blind pattern matching behavior is
1095desired, specify the /PATTERN_CASE=BLIND option.
1096<QUALIFIER>
1097/PKZIP
1098
1099/PKZIP
1100/NOPKZIP (default)
1101
1102Create PKZIP-compatible archive entries.  File names and paths are
1103adjusted to conform to MSDOS character-set and length
1104limitations, to store only the MSDOS file attributes (just the
1105owner:write attribute from VMS), and to mark the entry as made under
1106MSDOS (even though it wasn't).
1107<QUALIFIER>
1108/PRESERVE_CASE
1109
1110/NOPRESERVE_CASE
1111/PRESERVE_CASE[=(keyword[, ...])]
1112
1113Directs Zip to preserve the case of, or convert to lower-case, file names
1114in the archive.  Optional keywords are:
1115<LITERAL>
1116|  NOODS2        Down-case ODS2 file names (default).
1117|  NOODS5        Down-case ODS5 file names.
1118|  ODS2          Preserve case of ODS2 file names.
1119|  ODS5          Preserve case of ODS5 file names (default).
1120<LARETIL>
1121
1122By default, file names from an ODS2 file system are converted to lower
1123case for storage in an archive, while the case of file names from an
1124ODS5 file system is preserved.
1125
1126/NOPRESERVE_CASE is equivalent to /PRESERVE_CASE = (NOODS2, NOODS5),
1127which causes all file names to be converted to lower-case.  This is
1128equivalent to the behavior of Zip before version 3.0.
1129
1130/PRESERVE_CASE is equivalent to /PRESERVE_CASE = (ODS2, ODS5), which
1131preserves the case of all file names.
1132<QUALIFIER>
1133/QUIET
1134
1135/QUIET
1136
1137Quiet mode.  Eliminates informational messages and comment prompts.
1138This mode may be useful in command procedures, or if the Zip operation
1139is being performed as a background task ("$ spawn/nowait zip /quiet foo
1140*.c").
1141<QUALIFIER>
1142/RECURSE
1143
1144/RECURSE[=KEYWORD]
1145/NORECURSE (default)
1146
1147Directs Zip to recurse into subdirectories.
1148The optional keywords recognized are:
1149<LITERAL>
1150|  PATH      take patterns as full path specifiers (-r) (default)
1151|  FILENAMES start from current dir;
1152|            only use filename part of file patterns (-R)
1153<LARETIL>
1154The optional FILENAMES keyword modifies the recursion algorithm to be
1155(almost) compatible to PKZIP's behaviour on subdirectory recursion.
1156
1157On VMS, directory recursion can also be requested by using the
1158directory depth wildcard ("[...]") in an input file specification.
1159<QUALIFIER>
1160/SHOW
1161
1162/SHOW=(KEYWORD[,KEYWORD[...]])
1163
1164Controls various diagnostic messages.
1165
1166The keywords recognized are:
1167<LITERAL>
1168|  COMMAND  Show command line arguments as processed (only, then exit).
1169|  DEBUG    Show Debug information.
1170|  FILES    Show files to process (only, then exit).
1171|  OPTIONS  Show all available command-line options on this system.
1172<LARETIL>
1173<QUALIFIER>
1174/SINCE
1175
1176/SINCE=VMS_date_time
1177
1178Restricts the files by date-time when adding, updating, or freshening an
1179archive.  Only files with modification date-times at or later than the
1180specified date-time are accepted.
1181
1182See also /BEFORE.
1183<QUALIFIER>
1184/SPLIT
1185
1186/SPLIT = (SIZE=size [, PAUSE [, BELL]] [, VERBOSE])
1187
1188Enables split archives, specifies the size of the splits, and controls
1189other related behavior.
1190
1191SIZE=size  specifies the split size.  The size is given as a number
1192followed optionally by a multiplier suffix of k (KB), m (MB, the default
1193if no suffix is specified), g (GB), or t (TB).  (All are powers of 1024,
1194not 1000).  64K is the minimum split size.  For example, the following
1195command could be used to create a split archive called "foo" from the
1196contents of the "bar" directory with splits of 670MB, which might be
1197useful for burning on CDs:
1198
1199<LITERAL>
1200|  zip /split = size = 670m foo [.bar...]*.*
1201<LARETIL>
1202
1203Using /SPLIT without PAUSE as above creates all the splits in the
1204directory
1205specified by "foo", in this case the current default directory.  This
1206split mode updates the splits as the archive is being created, requiring
1207all splits to remain writable, but creates split archives that are
1208readable by any UnZip that supports split archives.  See PAUSE below for
1209enabling split pause mode which allows splits to be written directly to
1210removable media.
1211
1212PAUSE  causes Zip to pause between splits to allow
1213changing removable media, for example.  PAUSE uses stream mode to
1214write splits so unzips that can't read stream mode entries may not
1215be able to read some entries in the archive.  Unless standard encryption
1216was used, copy mode using /COPY_ENTRIES can convert stream mode entries
1217to normal entries.
1218
1219BELL  ring the terminal bell when Zip pauses for the next split
1220destination.
1221
1222VERBOSE  enables verbose splitting and display details of how the
1223splitting is being done.
1224
1225Though Zip does not update split archives, Zip provides the option
1226/OUTPUT to allow split archives to be updated and saved in a new
1227archive.  For example:
1228
1229<LITERAL>
1230|  zip inarchive.zip foo.c bar.c /output = outarchive.zip
1231<LARETIL>
1232
1233reads archive inarchive.zip, even if split, adds the files foo.c and
1234bar.c, and writes the resulting archive to outarchive.zip.  If
1235inarchive.zip is split, then outarchive.zip defaults to the same split
1236size.  Be aware that outarchive.zip and any split files that are created
1237with it are always overwritten without warning.  This may be changed in
1238the future.
1239<QUALIFIER>
1240/STORE_TYPES
1241
1242/STORE_TYPES=(.ext1,.ext2,... )
1243
1244Normally, a file which is already compressed will not be compressed much
1245further (if at all) by Zip, and trying to do it can waste considerable
1246CPU time.  Zip can suppress compression on files with particular types,
1247specified with /STORE_TYPES.  The default list of types where
1248compression is suppressed is /STORE_TYPES=(.Z, .zip, .zoo, .arc, .lzh,
1249 .arj), and the comparison is case-insensitive.
1250
1251/LEVEL=9 will override /STORE_TYPES, causing compression to be attempted
1252for all files.
1253<QUALIFIER>
1254/SYMLINKS
1255
1256/SYMLINKS
1257
1258Store symbolic links as such in the Zip archive, instead of compressing
1259and storing the file referred to by the link.  A symbolic link normally
1260requires less storage than the actual file, both in the archive, and on
1261the destination file system.
1262
1263On VMS, symbolic links are supported on ODS5 disks where the C RTL
1264supports symbolic links.  Full support for symbolic links seems to
1265require VMS V8.3, but a Zip program supporting symbolic links may be
1266built on VMS V7.3-2.
1267<QUALIFIER>
1268/TEMP_PATH
1269
1270/TEMP_PATH=temp_dir
1271
1272When creating a new archive or normally when changing an existing
1273archive, Zip will write a temporary file in the archive destination
1274directory ("ZIxxxxxxxx", where "xxxxxxxx" is the hexadecimal process ID)
1275with the new contents.  Then, if and when the Zip job has completed with
1276no errors, it will rename the temporary file to the specified archive
1277name (replacing the old archive, if any).
1278
1279/TEMP_PATH=temp_dir specifies an alternate device:[directory],
1280"temp_dir", for the temporary file, but specifying a different device
1281will force Zip to copy the temporary file to its final destination
1282instead of simply renaming it, and that copying will take more time than
1283renaming, especially for a large archive.  For example:
1284
1285<LITERAL>
1286|  zip /temp_path = disk$scratch:[tmp] stuff *
1287<LARETIL>
1288
1289will cause Zip to put its temporary files in the directory
1290"disk$scratch:[tmp]", copying the temporary file back to the current
1291directory as stuff.zip when it's complete.
1292<QUALIFIER>
1293/TEST
1294
1295/TEST[=UNZIP=unzip_cmd]
1296
1297Test the integrity of a Zip archive (the new one, if /OUTPUT is
1298specified).  If the check fails, the old archive is unchanged  and
1299(with the /MOVE option) no input files are removed.
1300
1301Implementation
1302"zip /TEST" actually runs an "unzip -t" command to do the testing, so
1303UnZip must be installed properly for this to work.
1304
1305With UNZIP=unzip_cmd, Zip uses the UnZip command specified by
1306"unzip_cmd" (normally a DCL symbol), instead of the default command,
1307"unzip -t".  This can be useful if multiple versions of UnZip are
1308installed on a system, and the default DCL symbol "UNZIP" would run the
1309wrong one (or the logical name DCL$PATH would lead to the wrong one).
1310
1311In "unzip_cmd", the string "{}" is replaced by the name of the
1312(temporary) archive to be tested, otherwise the name of the archive is
1313appended to the end of the command.  The exit status is checked for
1314success severity.
1315<QUALIFIER>
1316/TRANSLATE_EOL
1317
1318/TRANSLATE_EOL[=KEYWORD]
1319
1320Selects conversion of the end-of-line markers in text files.  This
1321option should be used on text files only.  The optional keywords
1322recognized are:
1323<LITERAL>
1324|  LF        convert LF -> CRLF (UNIX to DOS) (default)
1325|  CRLF      convert CRLF -> LF, strip trailing CTRL-Z's (DOS to UNIX)
1326<LARETIL>
1327
1328The CRLF option may be useful when a DOS text file has been transfered
1329to a VMS disk in stream (or stream_lf) format.
1330<QUALIFIER>
1331/UNSFX
1332
1333/UNSFX
1334
1335Strip any prepended data from the Zip archive.  ZIP /UNSFX is normally
1336used to convert a self-extracting archive to a normal archive by
1337removing the UnZip SFX executable from the beginning of the SFX archive.
1338
1339Note that a self-extracting archive contains a normal Zip archive, and a
1340normal UnZip program can be used to expand it in the normal way.  You
1341may get a warning about extra bytes at the beginning of the archive (the
1342UnZip SFX program), but UnZip should work properly after that.  This
1343allows data in a self-extracting archive to be accessed on any system,
1344not just the target system where its embedded UnZip SFX program runs.
1345<QUALIFIER>
1346/UPDATE
1347
1348/UPDATE
1349
1350Update existing archive entries and add new files.  If the archive does
1351not exist, create it.  This is the default mode, so /UPDATE is optional.
1352
1353See also /DELETE /DIFFERENCE, /GROW, /FRESHEN.
1354<QUALIFIER>
1355/VERBOSE
1356
1357/VERBOSE[=NORMAL|MORE|DEBUG] [, COMMAND]]
1358
1359Verbose mode or print diagnostic version info.
1360
1361Normally, when applied to real operations, this option enables the
1362display of a progress indicator during compression (see /DISPLAY=DOTS
1363for more on dots) and requests verbose diagnostic info about archive
1364structure oddities.
1365
1366/VERBOSE with no value is equivalent to /VERBOSE=NORMAL.  MORE adds more
1367messages, and DEBUG adds still more messages.
1368
1369When /VERBOSE is the only command line argument, a diagnostic report is
1370displayed, showing:
1371
1372<LITERAL>
1373|  o Copyright and other legal notices
1374|  o Program name, version, and release date
1375|  o Pointers to Info-ZIP FTP and Web sites
1376|  o Program build information (compiler type and version, OS version,
1377|    and the compilation date
1378|  o Optional features enabled at compile-time
1379|  o Environment variable definitions (ZIP_OPTS, ZIPOPT)
1380<LARETIL>
1381
1382This information should be included in bug reports.
1383
1384/VERBOSE=COMMAND causes Zip to display the UNIX-style command-line
1385argument vector which is generated from the VMS-style CLI command line
1386before executing the command.  This is of primary interest to program
1387developers debugging the CLI.
1388<QUALIFIER>
1389/VMS
1390
1391/VMS[=ALL]
1392
1393The /VMS and /VMS=ALL options cause Zip to store VMS file atributes
1394(such as file organization, record format, carriage control, and so on)
1395in VMS-specific "extra fields" in an archive along with the usual data.
1396These extra fields are ignored on non-VMS systems, but on a VMS system,
1397they allow UnZip to restore the files with their VMS attributes intact.
1398
1399With /VMS, Zip ignores any data in the file after the end-of-file (EOF)
1400point (defined by FAT$L_EFBLK and FAT$W_FFBYTE), which works well for
1401well-formed files (that is, those with no valid data beyond EOF).
1402Portable-format files (Stream_LF, fixed-512) archived with /VMS should
1403be extracted properly on a non-VMS system.  Files with more complex
1404structures, such as indexed files and files with embedded byte counts or
1405other such data may be of limited use on other systems.  (UnZip on
1406non-VMS systems may be able to extract various VMS-format text files,
1407however.)
1408
1409With /VMS=ALL, Zip processes all allocated blocks for the file
1410(including those beyond EOF).  When extracted on a VMS system, the
1411original file should be reproduced with as much fidelity as possible,
1412but on a non-VMS system, most files will be seen as corrupt because of
1413the data from beyond EOF.
1414<QUALIFIER>
1415/WILDCARD
1416
1417<LITERAL>
1418/NOWILDCARD
1419/WILDCARD=NOSPAN
1420<LARETIL>
1421
1422Controls wildcard processing.
1423
1424/NOWILDCARD  Wildcard processing is disabled.
1425
1426/WILDCARD=NOSPAN  Wildcards don't span directory boundaries in paths.
1427<QUALIFIER>
1428/ZIP64
1429
1430/ZIP64
1431
1432Forces use of Zip64 archive format, even for small files.  This is
1433mainly for testing and should never be used.  Zip will automatically
1434use Zip64 as needed without this option.
1435<TOPIC>
1436UNIX_Options
1437
1438"zip -h" provides a concise list of common command-line options.  "zip
1439-h2" provides more details.  "zip -so" provides a list of all available
1440options.  "zip -v" shows the program version and available features.
1441(The list below was derived from a "zip -so" listing.)
1442
1443Short-form options begin with a single hyphen ("-").  Long-form option
1444begin with a double hyphen ("--"), and may be abbreviated to any
1445unambiguous shorter string.  For example:
1446
1447<LITERAL>
1448|  -v
1449|  --verbose
1450|  --verb
1451<LARETIL>
1452
1453To avoid confusion, if a negatable option contains an embedded hyphen
1454("-"), then avoid abbreviating it at the hyphen if you plan to negate
1455it.  For example, if an option like --some-option were abbreviated to
1456--some-, the parser would consider that trailing hyphen to be part of
1457the option name, rather than as a negating trailing hyphen.  This
1458behavior may change in the future, to interpret the trailing hyphen in
1459--some- to be negating.  (So don't do it.)
1460
1461Some options may be negated (or modified) by appending a "-":
1462
1463<LITERAL>
1464|  -la-
1465|  --show-files-
1466<LARETIL>
1467
1468Some options take a value, which may immediately follow the option, or
1469be separated by a space or "=".  For example:
1470<LITERAL>
1471|  -ttmmddyyyy
1472|  -tt mmddyyyy
1473|  -tt=mmddyyyy
1474<LARETIL>
1475
1476<LITERAL0>
1477| Sh  Long                Description
1478|----+-------------------+------------------------------------------------
1479| 0   store               store (instead of compress)
1480| 1   compress-1          compress faster (-2, -3, -4, ...)
1481| 9   compress-9          compress better
1482| ?                       show the Zip help screen
1483| @   names-stdin         read input file patterns from SYS$INPUT (1/line)
1484| A   adjust-sfx          adjust self-extracting executable
1485| b   temp-path  path     use "path" directory for temporary files
1486| C   preserve-case       preserve case of all file names added to archive
1487| C-  preserve-case-      down-case all file names added to archive
1488| C2  preserve-case-2     preserve case of ODS2 names added to archive
1489| C2- preserve-case-2-    down-case ODS2 file added to archive (default)
1490| C5  preserve-case-5     preserve case of ODS5 names added to arcv (dflt)
1491| C5- preserve-case-5-    down-case ODS5 names added to archive
1492| c   entry-comments      add a comment for each entry added to archive
1493| D   no-dir-entries      do not add archive entries for directories
1494| DF  difference-archive  difference archive: add only changed/new files
1495| d   delete              delete entries in archive
1496| db  display-bytes       display running byte counts
1497| dc  display-counts      display running file counts
1498| dd  display-dots        display progress dots for files (dflt sz = 10MB)
1499| dg  display-globaldots  display progress dots for archive, not each file
1500| ds  dot-size   size     set progress dot interval to "size" (MB)
1501| du  display-usize       display original uncompressed size for entries
1502| dv  display-volume      display volume (disk) number as in_disk>out_disk
1503| e   encrypt             encrypt entries, ask for password
1504| F   fix                 fix mostly intact archive (try F before FF)
1505| FF  fixfix              salvage what can be salvaged (not as reliable)
1506| FS  filesync            remove archive entries unmatched in file system
1507| f   freshen             update existing entries (only changed files)
1508| fd  force-descriptors   force data descriptors as if streaming
1509| fz  force-zip64         force use of Zip64 format
1510| g   grow                grow existing archive (unless update or delete)
1511| H                       show the Zip help screen
1512| h   help                show the Zip help screen
1513| h2  more-help           show extended Zip help
1514| i   include  pat1 [pat2 [...]]  include only names matching the patterns
1515| J   junk-sfx            junk (remove) archive preamble (unzipsfx)
1516| j   junk-paths          junk (don't store) dir names, only file names
1517| k   DOS-names           simulate PKZIP-made archive (DOS 8.3 names)
1518| L   license             show software license
1519| l   to-crlf             translate end-of-lines (LF -> CRLF)
1520| la  log-append          append to existing log file
1521| lf  logfile-path  lfile  log to log file at lfile (default: new version)
1522| li  log-info            include informational messages in log
1523| ll  from-crlf           translate end-of-lines (CRLF -> LF)
1524| MM  must-match          input file spec must exist (wildcrds must match)
1525| m   move                delete files added to archive
1526| n   suffixes  sfx1[:sfx2[...]]  don't compress files with these suffixes
1527| nw  no-wild             no wildcards during add or update
1528| O   output-file  ozf  use "ozf" as the output archive (dflt = inp archv)
1529| o   latest-time         set archive date-time to match oldest entry
1530| P   password  password  encrypt with supplied "password" string
1531| q   quiet               quiet operation (no info messages)
1532| R   recurse-patterns    recurse subdirs from cur dir, match names only
1533| r   recurse-paths       recurse directories from specified path pats
1534| s   split-size  size    split archive at "size" (K/MB)  (0: don't split)
1535| sb  split-bell          ring termnl bell at pause for split medium chng
1536| sc  show-command        show command line
1537| sd  show-debug          show debug messages
1538| sf  show-files          show files to process (only)
1539| so  show-options        show list of all command-line options
1540| sp  split-pause         pause to select split destination(s)
1541| sv  split-verbose       be verbose about creating splits
1542| T   test                test archive integrity (runs UnZip -T)
1543| t   from-date  mmddyyyy  only do files since (at or after) "mmddyyyy"
1544| tt  before-date  mmddyyyy  only do files before "mmddyyyy"
1545| u   update              update changed files, add new files (default)
1546| V   VMS-portable        save VMS file attributes
1547| VV  VMS-specific        save VMS file attributes and all allocated blks
1548| v   verbose             verbose messages (version info if only arg)
1549| w   VMS-versions        save VMS version numbers in archive
1550| ww  VMS-dot-versions    save VMS version numbers as ".nnn", not ";nnn"
1551| X   strip-extra         strip all but critical extra fields
1552| X-  strip-extra-        keep all extra fields
1553| x   exclude  pat1 [pat2 [...]]  exclude all names matching the patterns
1554| Z   compression-method mthd  use cmprs method "mthd" (bzip2 or deflate)
1555| z   archive-comment     ask for archive comment
1556<0LARETIL>
1557
1558With SET PROCESS /PARSE_STYLE = EXTENDED (available on recent non-VAX
1559systems), Zip preserves the case of the command line.  Otherwise, mixed-
1560or upper-case options and arguments must be quoted.  For example,
1561"-V".  Examples in this document generally do not show this quotation.
1562<TOPIC>
1563Copyright_and_License
1564
1565Zip has an option to display its copyright and license.
1566
1567<LITERAL>
1568|  /LICENSE
1569<LARETIL>
1570
1571The license is reproduced below.
1572
1573This is version 2007-Mar-4 of the Info-ZIP license. The definitive
1574version of this document should be available at
1575ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and a copy
1576at http://www.info-zip.org/pub/infozip/license.html.
1577
1578--------------------------------------------------------
1579<LITERAL0>
1580|Copyright (c) 1990-2007 Info-ZIP.  All rights reserved.
1581|
1582|For the purposes of this copyright and license, "Info-ZIP" is defined as
1583|the following set of individuals:
1584|
1585|Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
1586|Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth,
1587|Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
1588|David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
1589|Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
1590|Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, 
1591|Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren,
1592|Rich Wales, Mike White.
1593| 
1594|This software is provided "as is," without warranty of any kind, express
1595|or implied.  In no event shall Info-ZIP or its contributors be held
1596|liable for any direct, indirect, incidental, special or consequential
1597|damages arising out of the use of or inability to use this software.
1598| 
1599|Permission is granted to anyone to use this software for any purpose,
1600|including commercial applications, and to alter it and redistribute it
1601|freely, subject to the above disclaimer and the following restrictions:
1602| 
1603|1. Redistributions of source code (in whole or in part) must retain
1604|   the above copyright notice, definition, disclaimer, and this list
1605|   of conditions.
1606| 
1607|2. Redistributions in binary form (compiled executables and libraries)
1608|   must reproduce the above copyright notice, definition, disclaimer,
1609|   and this list of conditions in documentation and/or other materials
1610|   provided with the distribution.  The sole exception to this condition
1611|   is redistribution of a standard UnZipSFX binary (including SFXWiz) as
1612|   part of a self-extracting archive; that is permitted without inclusion
1613|   of this license, as long as the normal SFX banner has not been removed
1614|   from the binary or disabled.
1615| 
1616|3. Altered versions -- including, but not limited to, ports to new
1617|   operating systems, existing ports with new graphical interfaces,
1618|   versions with modified or added functionality, and dynamic, shared,
1619|   or static library versions not from Info-ZIP -- must be plainly marked
1620|   as such and must not be misrepresented as being the original source
1621|   or, if binaries, compiled from the original source.  Such altered
1622|   versions also must not be misrepresented as being Info-ZIP releases --
1623|   including, but not limited to, labeling of the altered versions with
1624|   the names "Info-ZIP" (or any variation thereof, including, but not
1625|   limited to, different capitalizations), "Pocket UnZip," "WiZ" or
1626|   "MacZip" without the explicit permission of Info-ZIP.  Such altered
1627|   versions are further prohibited from misrepresentative use of the
1628|   Zip-Bugs or Info-ZIP e-mail addresses or the Info-ZIP URL(s), such as
1629|   to imply Info-ZIP will provide support for the altered versions.
1630| 
1631|4. Info-ZIP retains the right to use the names "Info-ZIP", "Zip",
1632|   "UnZip", "UnZipSFX", "WiZ", "Pocket UnZip", "Pocket Zip", and
1633|   "MacZip" for its own source and binary releases.
1634<0LARETIL>
1635
1636===
1637