.!
.!  File:       UNZIP_DEF.RNH
.!
.!  Author:     Hunter Goatley
.!
.!  Date:       October 23, 1991
.!
.!  Description:
.!
.!      RUNOFF source file for VMS on-line help for portable UnZip.
.!      Adapted from UNZIP.MAN (now UNZIP.TXT).
.!
.!      To build:       $ REN UNZIP_DEF.RNH UNZIP.RNH
.!                      $ RUNOFF UNZIP.RNH
.!                      $ LIBR/HELP/INSERT libr UNZIP
.!
.!  Modification history:
.!
.!      01-001          Hunter Goatley          23-OCT-1991 09:21
.!              Genesis.
.!      01-002          Cave Newt               16-MAR-1992 22:37
.!              Updated for UnZip 4.2.
.!      01-003          Igor Mandrichenko       23-MAY-1992 22:14
.!              Added -X option to command syntax.
.!      01-004          Cave Newt               24-MAY-1992 13:30
.!              Added UNZIP_OPTS environment variable help.
.!      01-005          Igor Mandrichenko       14-DEC-1993 18:55
.!              Modified for UnZip V5.1
.!      01-006          Cave Newt               21-DEC-1993 12:38
.!              Added -x option and cleaned up.
.!      01-007          Cave Newt               14-JUL-1994 09:45
.!              Added -Z, -C and -L options, removed -U, minor clean-up.
.!      01-008          Cave Newt               28-JUL-1994 08:57
.!              Removed semi-colons from comments.
.!      02-001          Christian Spieler       09-DEC-1995 02:25
.!              Modified for UnZip 5.2.
.!      02-002          Christian Spieler       06-FEB-1996 02:25
.!              Added -h "help" option.
.!      02-003          Christian Spieler       04-MAR-1997 20:25
.!              Added -P "command line password" option.
.!      02-004          Christian Spieler       26-JUL-1997 00:05
.!              Added Exit_Codes subtopic, explaining UnZip's VMS return codes.
.!      02-005          Christian Spieler       28-APR-2000 03:22
.!              Changed references to plaintext UnZip documentation file
.!              into "UNZIP.TXT".
.!      02-006          Christian Spieler       15-APR-2001 22:29
.!              Added description for extended functionality of -b option.
.!      02-007          Christian Spieler       10-DEC-2001 13:58
.!              Added description for new -: traverse dirs option.
.!      02-008          Christian Spieler       29-JAN-2005 01:50
.!              Added description for the -T "set archive timestamp" option.
.!
.noflags
.lm4 .rm72
.indent -4
1 UNZIP
.br
UnZip is used to extract files compressed and packaged by Zip (see HELP ZIP
for information on ZIP).
.sk
For a brief help on Zip and Unzip, run each without specifying any
parameters on the command line, or specify the -h flag (but not in UnZip's
Zipinfo mode).
.sk
UNZIP will list, test, or extract from a ZIP archive.  ZIP archives are commonly
found on MS-DOS systems; a VMS version of ZIP can also be found here.
.sk
Archive member extraction is implied by the absence of the -c, -p, -t, -l, -v or
-z options.  All archive members are processed unless a filespec is provided to
specify a subset of the archive members.
Format:
.sk;.lm+1;.literal
UNZIP [-cfhlptTuvxz[ajnoqCLMVX]] file[.zip] [list] [-x xlist] [-d out_dir]
.end literal;.lm-1
.!------------------------------------------------------------------------------
.indent -4
2 Parameters
.sk;.indent -4
file[.zip]
.sk
File specification for the ZIP archive(s) with optional wildcards. UnZip will
perform actions specified for every zipfile matching the specification.
Default file specification is SYS$DISK:[].ZIP.
Note that self-extracting ZIP files are supported; just specify the .EXE
suffix yourself.
.sk;.indent -4
[list]
.sk
An optional list of archive members to be processed; if no list is given, all
archive members are processed.  Expressions may be
used to match multiple members.  Expressions should be enclosed in double-quotes
to prevent interpretation by DCL.  Multiple filenames should be separated by
blanks.  Each file specification is similar to a Unix egrep expression and may
contain:
.sk
.literal
     *       matches a sequence of 0 or more characters
     ?       matches exactly 1 character
     [...]   matches any single character found inside the brackets;
             ranges are specified by a beginning character, a hyphen,
             and an ending character.  If a '!' or '^' immediately
             follows the left bracket, then any character not in the
             given range is matched.
             Hint: To specify a verbatim left bracket '[', the
                   three-character sequence "[[]" has to be used.
.end literal
.sk
.sk;.indent -4
[-x xlist]
.sk
An optional list of archive members to be excluded from processing.  The xlist
overrides any files included in the normal list.
.sk;.indent -4
[-d out_dir]
.sk
Optional directory specification to be used as target root directory
for files to be extracted.  Directory should be specified in "[.foo]"
format rather than "foo.dir" or "foo/" format.
.!------------------------------------------------------------------------------
.indent -4
2 Options
.br
The default action of UnZip is to extract all zipfile entries.  The following
options and modifiers can be provided:
.sk;.literal
   -Z   ZipInfo mode
   -c   extract files to SYS$OUTPUT (terminal)
   -f   freshen existing files (replace if newer); create none
   -h   show brief help screen and exit quietly
   -l   list archive files (short format)
   -p   extract files to SYS$OUTPUT; no informational messages
   -t   test archive files
   -T   set zipfile timestamps to that of each archive's newest entry
   -u   update existing files; create new ones if needed
   -v   list archive files (verbose format)
   -z   display only the archive comment
.end literal;.sk;.literal
 MODIFIERS
   -a   extract text files in standard VMS text file format
   -aa  extract all files as text
   -b   auto-extract only binary files in VMS fixed 512-byte record format
   -bb  extract all files as binary in VMS fixed 512-byte record format
   -j   junk paths (don't recreate archive's directory structure)
   -n   never overwrite existing files; don't prompt
   -o   OK to overwrite files without prompting
   -q   perform operations quietly (-qq => even quieter)
   -C   match filenames case-insensitively
   -L   convert filenames to lowercase if created under DOS, VMS, etc.
   -M   feed screen output through built-in "more" pager
   -P<password> supply decryption password on the command line (insecure!)
   -V   retain (VMS) file version numbers
   -X   restore owner/protection info (may require privileges)
   -:   allow "../" path components that traverse across extract dir root
.end literal;.sk
Note that uppercase options (-C, -L, -M, -P, -T, -V and -X) must be
specified in quotes. For example:
.sk;.literal
    unzip "-VX" -a zipfile
.end literal;.sk
When extracting to SYS$OUTPUT (-c or -p options) redirected to a file,
you may want to override the default text file converion by specifying
the -b option. A single "-b" option switches to "binary piping" mode
for Zip entries marked as non-text, only. To force "binary piping" mode
even for Zip file entries marked as text, the "-bb" option should be used.
(Please note that a later "-a" cancels any -b option, see below.)
.sk
The output conversion options -b and -a may be combined to perform
binary conversions on binary files and text conversion on text files.
But note: For compatibility with implementation on other systems, -b cancels
any -a option; to get the intended result, -a must be specified AFTER -b.
And, in combination, "text" recognition takes precedence; this means
that -bba (-bb -a) has the same effect as -ba (-b -a), and -aa overrides
binary conversion for ALL files.
.sk
Please note that using the "-P<password>" option is higly insecure, the
plaintext password may be seen by others. For this reason (and because of
lack of space), the "-P<password>" option is not advertised on UnZip's
online help screen.
.!------------------------------------------------------------------------------
.indent -4
2 Exit_Codes
.br
On VMS, UnZip's UNIX style exit values are mapped into proper
VMS status codes:
.sk;.literal
   1                               (success)  normal exit,
   (0x7fff0000 + 16*UnZip_errnum)  -W- warnings
   (0x7fff0002 + 16*UnZip_errnum)  -E- normal errors
   (0x7fff0004 + 16*UnZip_errnum)  -F- fatal errors
.end literal;.sk
The UnZip error level (or exit code) approximates the exit
codes defined by PKWARE and takes on the following values:
.sk;.literal
  VMS       UnZip    Type of error
  severity  errcode
    -         0      normal; no errors or warnings detected.

    W         1      one or more warning errors were encountered,
                     but processing completed  successfully  any-
                     way.   This  includes  zipfiles where one or
                     more files was skipped  due  to  unsupported
                     compression  method  or  encryption  with an
                     unknown password.

    E         2      a generic error in the  zipfile  format  was
                     detected.   Processing  may  have  completed
                     successfully anyway;  some  broken  zipfiles
                     created by other archivers have simple work-
                     arounds.

    F         3      a severe error in  the  zipfile  format  was
                     detected.   Processing probably failed imme-
                     diately.

    F         4      unzip was unable to allocate memory for  one
                     or  more  buffers during program initializa-
                     tion.

    F         5      unzip  was  unable  to  allocate  memory  or
                     unable  to  obtain a tty to read the decryp-
                     tion password(s).

    F         6      unzip was unable to allocate  memory  during
                     decompression to disk.

    F         7      unzip  was  unable to allocate memory during
                     in-memory decompression.

    F         8      [currently not used]

    E         9      the specified zipfiles were not found.

    E         10     invalid options were specified on  the  com-
                     mand line.

    E         11     no matching files were found.

    F         50     the disk is (or was) full during extraction.

    F         51     the end of the ZIP archive  was  encountered
                     prematurely.

    E         80     the user aborted unzip prematurely with con-
                     trol-C (or similar)

    E         81     no files were found due to unsupported  com-
                     pression  methods or unsupported decryption.
                     (If even one additional file is successfully
                     processed, however, the exit status is 1.)

    E         82     no  files  were  found due to bad decryption
                     password(s).  This is also the  exit  status
                     if  no files were found due to a combination
                     of unsupported  compression  and  bad  pass-
                     words.   As in the previous case, however, a
                     single successful file  will  result  in  an
                     exit status of 1 instead.)
.end literal;.sk
In addition, there is a compilation option to expand upon this behavior:
An executable compiled with the option RETURN_CODES defined displays
a human-readable explanation of what the error status means.
.!------------------------------------------------------------------------------
.indent -4
2 Logical_Names
.br
UnZip allows to modify its default behaviour by specifying option defaults
via the UNZIP_OPTS logical name.
For example, the following will cause UnZip to restore owner/protection
information and perform all operations at quiet-level 1 by default:
.sk;.literal
    define UNZIP_OPTS "-qX"
.end literal;.sk
Note that the quotation marks here are required to preserve lowercase options
(opposite of the command-line behavior).
To negate a default option on the command line, add one or more minus
signs before the option letter, in addition to the leading switch character
`-':
.sk;.literal
    unzip --ql zipfile
.end literal
or
.literal
    unzip -l-q zipfile
.end literal;.sk
At present it is not possible to decrement an option below zero--that is,
more than a few minuses have no effect.
.sk
UNZIP_OPTS may be defined as a symbol rather than a logical name, but if
both are defined, the logical name takes precedence.
.!-----------------------------------------------------------------------------
.indent -4
2 Authors
.br
Info-ZIP; currently maintained by Christian Spieler.  VMS support maintained
by Christian Spieler and Hunter Goatley.  Originally based on a program
by Samuel H. Smith.
.sk
VMS on-line help ported from UNZIP.TXT by Hunter Goatley.
