which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5403 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			763 lines
		
	
	
		
			37 KiB
		
	
	
	
		
			Groff
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			763 lines
		
	
	
		
			37 KiB
		
	
	
	
		
			Groff
		
	
	
		
			Executable File
		
	
	
	
	
| .\" Info-ZIP grants permission to any individual or institution to use, copy,
 | |
| .\" or redistribute this software, so long as:  (1) all of the original files
 | |
| .\" are included; (2) it is not sold for profit; and (3) this notice is re-
 | |
| .\" tained.  See the UnZip COPYING file for details.
 | |
| .\"
 | |
| .\" unzip.1 by Greg Roelofs, Fulvio Marino, Jim van Zandt and others.
 | |
| .\"
 | |
| .\" =========================================================================
 | |
| .\" define .Y macro (for user-command examples; normal Courier font):
 | |
| .de Y
 | |
| .ft CW
 | |
| .in +4n
 | |
| .nf
 | |
| \&\\$1
 | |
| .ft
 | |
| .in
 | |
| .fi
 | |
| ..
 | |
| .\" =========================================================================
 | |
| .TH UNZIP 1L "31 May 1997 (v5.31)" "Info-ZIP"
 | |
| .SH NAME
 | |
| unzip \- list, test and extract compressed files in a ZIP archive
 | |
| .PD
 | |
| .SH SYNOPSIS
 | |
| \fBunzip\fP [\fB\-Z\fP] [\fB\-cflptuvz\fP[\fBabjnoqsCLMVX$\fP]]
 | |
| \fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.]
 | |
| [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] [\fB\-d\fP\ \fIexdir\fP]
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH DESCRIPTION
 | |
| \fIunzip\fP will list, test, or extract files from a ZIP archive, commonly
 | |
| found on MS-DOS systems.  The default behavior (with no options) is to extract
 | |
| into the current directory (and subdirectories below it) all files from the
 | |
| specified ZIP archive.  A companion program, \fIzip\fP(1L), creates ZIP
 | |
| archives; both programs are compatible with archives created by PKWARE's
 | |
| \fIPKZIP\fP and \fIPKUNZIP\fP for MS-DOS, but in many cases the program
 | |
| options or default behaviors differ.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH ARGUMENTS
 | |
| .TP
 | |
| .IR file [ .zip ]
 | |
| Path of the ZIP archive(s).  If the file specification is a wildcard,
 | |
| each matching file is processed in an order determined by the operating
 | |
| system (or file system).  Only the filename can be a wildcard; the path
 | |
| itself cannot.  Wildcard expressions are similar to Unix \fIegrep\fP(1)
 | |
| (regular) expressions and may contain:
 | |
| .RS
 | |
| .IP *
 | |
| matches a sequence of 0 or more characters
 | |
| .IP ?
 | |
| matches exactly 1 character
 | |
| .IP [.\|.\|.]
 | |
| matches any single character found inside the brackets; ranges are specified
 | |
| by a beginning character, a hyphen, and an ending character.  If an exclamation
 | |
| point or a caret (`!' or `^') follows the left bracket, then the range of
 | |
| characters within the brackets is complemented (that is, anything \fIexcept\fP
 | |
| the characters inside the brackets is considered a match).
 | |
| .RE
 | |
| .IP
 | |
| (Be sure to quote any character that might otherwise be interpreted or
 | |
| modified by the operating system, particularly under Unix and VMS.)  If no
 | |
| matches are found, the specification is assumed to be a literal filename;
 | |
| and if that also fails, the suffix \fC.zip\fR is appended.  Note that
 | |
| self-extracting ZIP files are supported, as with any other ZIP archive;
 | |
| just specify the \fC.exe\fR suffix (if any) explicitly.
 | |
| .IP [\fIfile(s)\fP]
 | |
| An optional list of archive members to be processed, separated by spaces.
 | |
| (VMS versions compiled with VMSCLI defined must delimit files with commas
 | |
| instead.  See \fB\-v\fP in \fBOPTIONS\fP below.)
 | |
| Regular expressions (wildcards) may be used to match multiple members; see
 | |
| above.  Again, be sure to quote expressions that would otherwise be expanded
 | |
| or modified by the operating system.
 | |
| .IP [\fB\-x\fP\ \fIxfile(s)\fP]
 | |
| An optional list of archive members to be excluded from processing.
 | |
| Since wildcard characters match directory separators (`/'), this option
 | |
| may be used to exclude any files that are in subdirectories.  For
 | |
| example, ``\fCunzip foo *.[ch] -x */*\fR'' would extract all C source files
 | |
| in the main directory, but none in any subdirectories.  Without the \fB\-x\fP
 | |
| option, all C source files in all directories within the zipfile would be
 | |
| extracted.
 | |
| .IP [\fB\-d\fP\ \fIexdir\fP]
 | |
| An optional directory to which to extract files.  By default, all files
 | |
| and subdirectories are recreated in the current directory; the \fB\-d\fP
 | |
| option allows extraction in an arbitrary directory (always assuming one
 | |
| has permission to write to the directory).  This option need not appear
 | |
| at the end of the command line; it is also accepted before the zipfile
 | |
| specification (with the normal options), immediately after the zipfile
 | |
| specification, or between the \fIfile(s)\fP and the \fB\-x\fP option.
 | |
| The option and directory may be concatenated without any white space
 | |
| between them, but note that this may cause normal shell behavior to be
 | |
| suppressed.  In particular, ``\fC\-d\ ~\fR'' (tilde) is expanded by Unix
 | |
| C shells into the name of the user's home directory, but ``\fC\-d~\fR''
 | |
| is treated as a literal subdirectory ``\fB~\fP'' of the current directory.
 | |
| .\" =========================================================================
 | |
| .SH OPTIONS
 | |
| Note that, in order to support obsolescent hardware, \fIunzip\fP's usage
 | |
| screen is limited to 22 or 23 lines and should therefore be considered
 | |
| only a reminder of the basic \fIunzip\fP syntax rather than an exhaustive
 | |
| list of all possible flags.  The exhaustive list follows:
 | |
| .TP
 | |
| .B \-Z
 | |
| \fIzipinfo\fP(1L) mode.  If the first option on the command line is \fB\-Z\fP,
 | |
| the remaining options are taken to be \fIzipinfo\fP(1L) options.  See the
 | |
| appropriate manual page for a description of these options.
 | |
| .TP
 | |
| .B \-A
 | |
| [OS/2, Unix DLL] print extended help for the DLL's programming interface (API).
 | |
| .TP
 | |
| .B \-c
 | |
| extract files to stdout/screen (``CRT'').  This option is similar to the
 | |
| \fB\-p\fP option except that the name of each file is printed as it is
 | |
| extracted, the \fB\-a\fP option is allowed, and ASCII-EBCDIC conversion
 | |
| is automatically performed if appropriate.  This option is not listed in
 | |
| the \fIunzip\fP usage screen.
 | |
| .TP
 | |
| .B \-f
 | |
| freshen existing files, i.e., extract only those files that
 | |
| already exist on disk and that are newer than the disk copies.  By
 | |
| default \fIunzip\fP queries before overwriting, but the \fB\-o\fP option
 | |
| may be used to suppress the queries.  Note that under many operating systems,
 | |
| the TZ (timezone) environment variable must be set correctly in order for
 | |
| \fB\-f\fP and \fB\-u\fP to work properly (under Unix the variable is usually
 | |
| set automatically).  The reasons for this are somewhat subtle but
 | |
| have to do with the differences between DOS-format file times (always local
 | |
| time) and Unix-format times (always in GMT/UTC) and the necessity to compare
 | |
| the two.  A typical TZ value is ``PST8PDT'' (US Pacific time with automatic
 | |
| adjustment for Daylight Savings Time or ``summer time'').
 | |
| .TP
 | |
| .B \-l
 | |
| list archive files (short format).  The names, uncompressed file sizes and
 | |
| modification dates and times of the specified files are printed, along
 | |
| with totals for all files specified.  If UnZip was compiled with OS2_EAS
 | |
| defined, the \fB\-l\fP option also lists columns for the sizes of stored
 | |
| OS/2 extended attributes (EAs) and OS/2 access control lists (ACLs).  In
 | |
| addition, the zipfile comment and individual file comments (if any) are
 | |
| displayed.  If a file was archived from a single-case file system (for
 | |
| example, the old MS-DOS FAT file system) and the \fB\-L\fP option was given,
 | |
| the filename is converted to lowercase and is prefixed with a caret (^).
 | |
| .TP
 | |
| .B \-p
 | |
| extract files to pipe (stdout).  Nothing but the file data is sent to
 | |
| stdout, and the files are always extracted in binary format, just as they
 | |
| are stored (no conversions).
 | |
| .TP
 | |
| .B \-t
 | |
| test archive files.  This option extracts each specified file in memory
 | |
| and compares the CRC (cyclic redundancy check, an enhanced checksum) of
 | |
| the expanded file with the original file's stored CRC value.
 | |
| .TP
 | |
| .B \-T
 | |
| [Unix only] set the timestamp on
 | |
| the archive(s) to that of the newest file in each one.  This corresponds to
 | |
| \fIzip\fP's \fB\-go\fP option except that it can be used on wildcard zipfiles
 | |
| (e.g., ``\fCunzip \-T \e*.zip\fR'') and is much faster.
 | |
| .TP
 | |
| .B \-u
 | |
| update existing files and create new ones if needed.  This option performs
 | |
| the same function as the \fB\-f\fP option, extracting (with query) files
 | |
| that are newer than those with the same name on disk, and in addition it
 | |
| extracts those files that do not already exist on disk.  See \fB\-f\fP
 | |
| above for information on setting the timezone properly.
 | |
| .TP
 | |
| .B \-v
 | |
| be verbose or print diagnostic version info.  This option has evolved and
 | |
| now behaves as both an option and a modifier.  As an option it has two
 | |
| purposes:  when a zipfile is specified with no other options, \fB\-v\fP lists
 | |
| archive files verbosely, adding to the basic \fB\-l\fP info the compression
 | |
| method, compressed size, compression ratio and 32-bit CRC.  When no zipfile
 | |
| is specified (that is, the complete command is simply ``\fCunzip \-v\fR''), a
 | |
| diagnostic screen is printed.  In addition to the normal header with release
 | |
| date and version, \fIunzip\fP lists the home Info-ZIP ftp site and where to
 | |
| find a list of other ftp and non-ftp sites; the target operating system for
 | |
| which it was compiled, as well as (possibly) the hardware on which it was
 | |
| compiled, the compiler and version used, and the compilation date; any special
 | |
| compilation options that might affect the program's operation (see also
 | |
| \fBDECRYPTION\fP below); and any options stored in environment variables
 | |
| that might do the same (see \fBENVIRONMENT OPTIONS\fP below).  As a
 | |
| modifier it works in conjunction with other options (e.g., \fB\-t\fP) to
 | |
| produce more verbose or debugging output; this is not yet fully implemented
 | |
| but will be in future releases.
 | |
| .TP
 | |
| .B \-z
 | |
| display only the archive comment.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH MODIFIERS
 | |
| .TP
 | |
| .B \-a
 | |
| convert text files.  Ordinarily all files are extracted exactly as they
 | |
| are stored (as ``binary'' files).  The \fB\-a\fP option causes files identified
 | |
| by \fIzip\fP as text files (those with the `t' label in \fIzipinfo\fP
 | |
| listings, rather than `b') to be automatically extracted as such, converting
 | |
| line endings, end-of-file characters and the character set itself as necessary.
 | |
| (For example, Unix files use line feeds (LFs) for end-of-line (EOL) and
 | |
| have no end-of-file (EOF) marker; Macintoshes use carriage returns (CRs)
 | |
| for EOLs; and most PC operating systems use CR+LF for EOLs and control-Z for
 | |
| EOF.  In addition, IBM mainframes and the Michigan Terminal System use EBCDIC
 | |
| rather than the more common ASCII character set, and NT supports Unicode.)
 | |
| Note that \fIzip\fP's identification of text files is by no means perfect; some
 | |
| ``text'' files may actually be binary and vice versa.  \fIunzip\fP therefore
 | |
| prints ``\fC[text]\fR'' or ``\fC[binary]\fR'' as a visual check for each file
 | |
| it extracts when using the \fB\-a\fP option.  The \fB\-aa\fP option forces
 | |
| all files to be extracted as text, regardless of the supposed file type.
 | |
| .TP
 | |
| .B \-b
 | |
| [non-VMS] treat all files as binary (no text conversions).  This is a shortcut
 | |
| for \fB\-\-\-a\fP.
 | |
| .TP
 | |
| .B \-b
 | |
| [VMS] auto-convert binary files (see \fB\-a\fP above) to fixed-length,
 | |
| 512-byte record format.  Doubling the option (\fB\-bb\fP) forces all files
 | |
| to be extracted in this format.
 | |
| .TP
 | |
| .B \-B
 | |
| [Unix only, and only if compiled with UNIXBACKUP defined] save a backup copy
 | |
| of each overwritten file with a tilde appended (e.g., the old copy of
 | |
| ``\fCfoo\fR'' is renamed to ``\fCfoo~\fR'').  This is similar to the default
 | |
| behavior of \fIemacs\fP(1) in many locations.
 | |
| .TP
 | |
| .B \-C
 | |
| match filenames case-insensitively.  \fIunzip\fP's philosophy is ``you get
 | |
| what you ask for'' (this is also responsible for the \fB\-L\fP/\fB\-U\fP
 | |
| change; see the relevant options below).  Because some file systems are fully
 | |
| case-sensitive (notably those under the Unix operating system) and because
 | |
| both ZIP archives and \fIunzip\fP itself are portable across platforms,
 | |
| \fIunzip\fP's default behavior is to match both wildcard and literal filenames
 | |
| case-sensitively.  That is, specifying ``\fCmakefile\fR'' on the command line
 | |
| will \fIonly\fP match ``makefile'' in the archive, not ``Makefile'' or
 | |
| ``MAKEFILE'' (and similarly for wildcard specifications).  Since this does
 | |
| not correspond to the behavior of many other operating/file systems (for
 | |
| example, OS/2 HPFS, which preserves mixed case but is not sensitive to it),
 | |
| the \fB\-C\fP option may be used to force all filename matches to be
 | |
| case-insensitive.  In the example above, all three files would then match
 | |
| ``\fCmakefile\fR'' (or ``\fCmake*\fR'', or similar).  The \fB\-C\fP option
 | |
| affects files in both the normal file list and the excluded-file list (xlist).
 | |
| .TP
 | |
| .B \-j
 | |
| junk paths.  The archive's directory structure is not recreated; all files
 | |
| are deposited in the extraction directory (by default, the current one).
 | |
| .TP
 | |
| .B \-L
 | |
| convert to lowercase any filename originating on an uppercase-only operating
 | |
| system or file system.  (This was \fIunzip\fP's default behavior in releases
 | |
| prior to 5.11; the new default behavior is identical to the old behavior with
 | |
| the \fB\-U\fP option, which is now obsolete and will be removed in a future
 | |
| release.)  Depending on the archiver, files archived under single-case
 | |
| file systems (VMS, old MS-DOS FAT, etc.) may be stored as all-uppercase names;
 | |
| this can be ugly or inconvenient when extracting to a case-preserving
 | |
| file system such as OS/2 HPFS or a case-sensitive one such as under
 | |
| Unix.  By default \fIunzip\fP lists and extracts such filenames exactly as
 | |
| they're stored (excepting truncation, conversion of unsupported characters,
 | |
| etc.); this option causes the names of all files from certain systems to be
 | |
| converted to lowercase.
 | |
| .TP
 | |
| .B \-M
 | |
| pipe all output through an internal pager similar to the Unix\fImore\fP(1)
 | |
| command.  At the end of a screenful of output, \fIunzip\fP pauses with a
 | |
| ``\-\-More\-\-'' prompt; the next screenful may be viewed by pressing the
 | |
| Enter (Return) key or the space bar.  \fIunzip\fP can be terminated by
 | |
| pressing the ``q'' key and, on some systems, the Enter/Return key.  Unlike
 | |
| Unix \fImore\fP(1), there is no forward-searching or editing capability.
 | |
| Also, \fIunzip\fP doesn't notice if long lines wrap at the edge of the screen,
 | |
| effectively resulting in the printing of two or more lines and the likelihood
 | |
| that some text will scroll off the top of the screen before being viewed.
 | |
| On some systems the number of available lines on the screen is not detected,
 | |
| in which case \fIunzip\fP assumes the height is 24 lines.
 | |
| .TP
 | |
| .B \-n
 | |
| never overwrite existing files.  If a file already exists, skip the extraction
 | |
| of that file without prompting.  By default \fIunzip\fP queries before
 | |
| extracting any file that already exists; the user may choose to overwrite
 | |
| only the current file, overwrite all files, skip extraction of the current
 | |
| file, skip extraction of all existing files, or rename the current file.
 | |
| .TP
 | |
| .B \-N
 | |
| [Amiga] extract file comments as Amiga filenotes.  File comments are created
 | |
| with the \-c option of \fIzip\fP(1L), or with the \-N option of the Amiga port
 | |
| of \fIzip\fP(1L), which stores filenotes as comments.
 | |
| .TP
 | |
| .B \-o
 | |
| overwrite existing files without prompting.  This is a dangerous option, so
 | |
| use it with care.  (It is often used with \fB\-f\fP, however, and is the only
 | |
| way to overwrite directory EAs under OS/2.)
 | |
| .TP
 | |
| .IP \fB\-P\fP\ \fIpassword\fP
 | |
| use \fIpassword\fP to decrypt encrypted zipfile entries (if any).  \fBTHIS IS
 | |
| INSECURE!\fP  Many multi-user operating systems provide ways for any user to
 | |
| see the current command line of any other user; even on stand-alone systems
 | |
| there is always the threat of over-the-shoulder peeking.  Storing the plaintext
 | |
| password as part of a command line in an automated script is even worse.
 | |
| Whenever possible, use the non-echoing, interactive prompt to enter passwords.
 | |
| (And where security is truly important, use strong encryption such as Pretty
 | |
| Good Privacy instead of the relatively weak encryption provided by standard
 | |
| zipfile utilities.)
 | |
| .TP
 | |
| .B \-q
 | |
| perform operations quietly (\fB\-qq\fP = even quieter).  Ordinarily \fIunzip\fP
 | |
| prints the names of the files it's extracting or testing, the extraction
 | |
| methods, any file or zipfile comments that may be stored in the archive,
 | |
| and possibly a summary when finished with each archive.  The \fB\-q\fP[\fBq\fP]
 | |
| options suppress the printing of some or all of these messages.
 | |
| .TP
 | |
| .B \-s
 | |
| [OS/2, NT, MS-DOS] convert spaces in filenames to underscores.  Since all PC
 | |
| operating systems allow spaces in filenames, \fIunzip\fP by default extracts
 | |
| filenames with spaces intact (e.g., ``\fCEA\ DATA.\ SF\fR'').  This can be
 | |
| awkward, however, since MS-DOS in particular does not gracefully support
 | |
| spaces in filenames.  Conversion of spaces to underscores can eliminate the
 | |
| awkwardness in some cases.
 | |
| .TP
 | |
| .B \-U
 | |
| (obsolete; to be removed in a future release) leave filenames uppercase if
 | |
| created under MS-DOS, VMS, etc.  See \fB\-L\fP above.
 | |
| .TP
 | |
| .B \-V
 | |
| retain (VMS) file version numbers.  VMS files can be stored with a version
 | |
| number, in the format \fCfile.ext;##\fR.  By default the ``\fC;##\fR'' version
 | |
| numbers are stripped, but this option allows them to be retained.  (On
 | |
| file systems that limit filenames to particularly short lengths, the version
 | |
| numbers may be truncated or stripped regardless of this option.)
 | |
| .TP
 | |
| .B \-X
 | |
| [VMS, Unix, OS/2, NT] restore owner/protection info (UICs) under VMS, or user
 | |
| and group info (UID/GID) under Unix, or access control lists (ACLs) under
 | |
| certain network-enabled versions of OS/2 (Warp Server with IBM LAN
 | |
| Server/Requester 3.0 to 5.0; Warp Connect with IBM Peer 1.0), or security ACLs
 | |
| under Windows NT.  In most cases this will require special system privileges,
 | |
| and doubling the option (\fB\-XX\fP) under NT instructs \fIunzip\fP to use
 | |
| privileges for extraction; but under Unix, for example, a user who belongs to
 | |
| several groups can restore files owned by any of those groups, as long as the
 | |
| user IDs match his or her own.  Note that ordinary file attributes are always
 | |
| restored--this option applies only to optional, extra ownership info available
 | |
| on some operating systems.  [NT's access control lists do not appear to be
 | |
| especially compatible with OS/2's, so no attempt is made at cross-platform
 | |
| portability of access privileges.  It is not clear under what conditions this
 | |
| would ever be useful anyway.]
 | |
| .TP
 | |
| .B \-$
 | |
| .\" Amiga support possible eventually, but not yet
 | |
| [MS-DOS, OS/2, NT] restore the volume label if the extraction medium is
 | |
| removable (e.g., a diskette).  Doubling the option (\fB\-$$\fP) allows fixed
 | |
| media (hard disks) to be labelled as well.  By default, volume labels are
 | |
| ignored.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH "ENVIRONMENT OPTIONS"
 | |
| \fIunzip\fP's default behavior may be modified via options placed in
 | |
| an environment variable.  This can be done with any option, but it
 | |
| is probably most useful with the \fB\-a\fP, \fB\-L\fP, \fB\-C\fP, \fB\-q\fP,
 | |
| \fB\-o\fP, or \fB\-n\fP modifiers:  make \fIunzip\fP auto-convert text
 | |
| files by default, make it convert filenames from uppercase systems to
 | |
| lowercase, make it match names case-insensitively, make it quieter,
 | |
| or make it always overwrite or never overwrite files as it extracts
 | |
| them.  For example, to make \fIunzip\fP act as quietly as possible, only
 | |
| reporting errors, one would use one of the following commands:
 | |
| .PP
 | |
| .DT
 | |
| .ft CW
 | |
| .in +4n
 | |
| .ta \w'UNZIP=\-qq; export UNZIP'u+4n
 | |
| .in
 | |
| .ft
 | |
| .PD 0
 | |
| .Y "UNZIP=\-qq; export UNZIP\t\fRUnix Bourne shell"
 | |
| .Y "setenv UNZIP \-qq\t\fRUnix C shell"
 | |
| .Y "set UNZIP=\-qq\t\fROS/2 or MS-DOS"
 | |
| .Y "define UNZIP_OPTS ""\-qq""\t\fRVMS (quotes for \fIlowercase\fP)"
 | |
| .PD
 | |
| .PP
 | |
| Environment options are, in effect, considered to be just like any other
 | |
| command-line options, except that they are effectively the first options
 | |
| on the command line.  To override an environment option, one may use the
 | |
| ``minus operator'' to remove it.  For instance, to override one of the
 | |
| quiet-flags in the example above, use the command
 | |
| .PP
 | |
| .Y "unzip \-\-q[\fIother options\fC] zipfile"
 | |
| .PP
 | |
| The first hyphen is the normal
 | |
| switch character, and the second is a minus sign, acting on the q option.
 | |
| Thus the effect here is to cancel one quantum of quietness.  To cancel
 | |
| both quiet flags, two (or more) minuses may be used:
 | |
| .PP
 | |
| .PD 0
 | |
| .Y "unzip \-t\-\-q zipfile"
 | |
| .Y "unzip \-\-\-qt zipfile"
 | |
| .PD
 | |
| .PP
 | |
| (the two are equivalent).  This may seem awkward
 | |
| or confusing, but it is reasonably intuitive:  just ignore the first
 | |
| hyphen and go from there.  It is also consistent with the behavior of
 | |
| Unix \fInice\fP(1).
 | |
| .PP
 | |
| As suggested by the examples above, the default variable names are UNZIP_OPTS
 | |
| for VMS (where the symbol used to install \fIunzip\fP as a foreign command
 | |
| would otherwise be confused with the environment variable), and UNZIP
 | |
| for all other operating systems.  For compatibility with \fIzip\fP(1L),
 | |
| UNZIPOPT is also accepted (don't ask).  If both UNZIP and UNZIPOPT
 | |
| are defined, however, UNZIP takes precedence.  \fIunzip\fP's diagnostic
 | |
| option (\fB\-v\fP with no zipfile name) can be used to check the values
 | |
| of all four possible \fIunzip\fP and \fIzipinfo\fP environment variables.
 | |
| .PP
 | |
| The timezone variable (TZ) should be set according to the local timezone
 | |
| in order for the \fB\-f\fP and \fB\-u\fP to operate correctly.  See the
 | |
| description of \fB\-f\fP above for details.  This variable may also be
 | |
| necessary in order for timestamps on extracted files to be set correctly.
 | |
| Under Windows 95/NT \fIunzip\fP should know the correct timezone even if
 | |
| TZ is unset, assuming the timezone is correctly set in the Control Panel.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH DECRYPTION
 | |
| Encrypted archives are fully supported by Info-ZIP software, but due to
 | |
| United States export restrictions, the encryption and decryption sources
 | |
| are not packaged with the regular \fIunzip\fP and \fIzip\fP distributions.
 | |
| Since the crypt sources were written by Europeans, however, they are
 | |
| freely available at sites throughout the world; see the file ``Where'' in
 | |
| any Info-ZIP source or binary distribution for locations both inside and
 | |
| outside the US.
 | |
| .PP
 | |
| Because of the separate distribution, not all compiled versions of \fIunzip\fP
 | |
| support decryption.  To check a version for crypt support, either attempt to
 | |
| test or extract an encrypted archive, or else check \fIunzip\fP's diagnostic
 | |
| screen (see the \fB\-v\fP option above) for ``\fC[decryption]\fR'' as one of
 | |
| the special compilation options.
 | |
| .PP
 | |
| As noted above, the \fB\-P\fP option may be used to supply a password on
 | |
| the command line, but at a cost in security.  The preferred decryption
 | |
| method is simply to extract normally; if a zipfile member is encrypted,
 | |
| \fIunzip\fP will prompt for the password without echoing what is typed.
 | |
| \fIunzip\fP continues to use the same password as long as it appears to be
 | |
| valid, by testing a 12-byte header on each file.  The correct password will
 | |
| always check out against the header, but there is a 1-in-256 chance that an
 | |
| incorrect password will as well.  (This is a security feature of the PKWARE
 | |
| zipfile format; it helps prevent brute-force attacks that might otherwise
 | |
| gain a large speed advantage by testing only the header.)  In the case that
 | |
| an incorrect password is given but it passes the header test anyway, either
 | |
| an incorrect CRC will be generated for the extracted data or else \fIunzip\fP
 | |
| will fail during the extraction because the ``decrypted'' bytes do not
 | |
| constitute a valid compressed data stream.
 | |
| .PP
 | |
| If the first password fails the header check on some file, \fIunzip\fP will
 | |
| prompt for another password, and so on until all files are extracted.  If
 | |
| a password is not known, entering a null password (that is, just a carriage
 | |
| return or ``Enter'') is taken as a signal to skip all further prompting.
 | |
| Only unencrypted files in the archive(s) will thereafter be extracted.  (In
 | |
| fact, that's not quite true; older versions of \fIzip\fP(1L) and
 | |
| \fIzipcloak\fP(1L) allowed null passwords, so \fIunzip\fP checks each encrypted
 | |
| file to see if the null password works.  This may result in ``false positives''
 | |
| and extraction errors, as noted above.)
 | |
| .PP
 | |
| Archives encrypted with 8-bit passwords (for example, passwords with accented
 | |
| European characters) may not be portable across systems and/or other
 | |
| archivers.  This problem stems from the use of multiple encoding methods for
 | |
| such characters, including Latin-1 (ISO 8859-1) and OEM code page 850.  DOS
 | |
| \fIPKZIP\fP 2.04g uses the OEM code page; Windows \fIPKZIP\fP 2.50 uses
 | |
| Latin-1 (and is therefore incompatible with DOS \fIPKZIP\fP); Info-ZIP uses
 | |
| the OEM code page on DOS, OS/2 and Win3.x ports but Latin-1 everywhere
 | |
| else; and Nico Mak's \fIWinZip\fP 6.x does not allow 8-bit passwords at all.
 | |
| \fIUnZip\fP 5.3 attempts to use the default character set first (e.g.,
 | |
| Latin-1), followed by the alternate one (e.g., OEM code page) to test
 | |
| passwords.  On EBCDIC systems, if both of these fail, EBCDIC encoding will
 | |
| be tested as a last resort.  (Since there are no known archivers that encrypt
 | |
| using EBCDIC encoding, EBCDIC is not tested on non-EBCDIC systems.)  ISO
 | |
| character encodings other than Latin-1 are not supported.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH EXAMPLES
 | |
| To use \fIunzip\fP to extract all members of the archive \fIletters.zip\fP
 | |
| into the current directory and subdirectories below it, creating any
 | |
| subdirectories as necessary:
 | |
| .PP
 | |
| .Y "unzip letters"
 | |
| .PP
 | |
| To extract all members of \fIletters.zip\fP into the current directory only:
 | |
| .PP
 | |
| .Y "unzip -j letters"
 | |
| .PP
 | |
| To test \fIletters.zip\fP, printing only a summary message indicating
 | |
| whether the archive is OK or not:
 | |
| .PP
 | |
| .Y "unzip -tq letters"
 | |
| .PP
 | |
| To test \fIall\fP zipfiles in the current directory, printing only the
 | |
| summaries:
 | |
| .PP
 | |
| .Y "unzip -tq \e*.zip"
 | |
| .PP
 | |
| (The backslash before the asterisk is only required if the shell expands
 | |
| wildcards, as in Unix; double quotes could have been used instead, as in
 | |
| the source examples below.)\ \ To extract to standard output all members of
 | |
| \fIletters.zip\fP whose names end in \fI.tex\fP, auto-converting to the
 | |
| local end-of-line convention and piping the output into \fImore\fP(1):
 | |
| .PP
 | |
| .Y "unzip \-ca letters \e*.tex | more"
 | |
| .PP
 | |
| To extract the binary file \fIpaper1.dvi\fP to standard output and pipe it
 | |
| to a printing program:
 | |
| .PP
 | |
| .Y "unzip \-p articles paper1.dvi | dvips"
 | |
| .PP
 | |
| To extract all FORTRAN and C source files--*.f, *.c, *.h, and Makefile--into
 | |
| the /tmp directory:
 | |
| .PP
 | |
| .Y "unzip source.zip ""*.[fch]"" Makefile -d /tmp"
 | |
| .PP
 | |
| (the double quotes are necessary only in Unix and only if globbing is turned
 | |
| on).  To extract all FORTRAN and C source files, regardless of case (e.g.,
 | |
| both *.c and *.C, and any makefile, Makefile, MAKEFILE or similar):
 | |
| .PP
 | |
| .Y "unzip \-C source.zip ""*.[fch]"" makefile -d /tmp"
 | |
| .PP
 | |
| To extract any such files but convert any uppercase MS-DOS or VMS names to
 | |
| lowercase and convert the line-endings of all of the files to the local
 | |
| standard (without respect to any files that might be marked ``binary''):
 | |
| .PP
 | |
| .Y "unzip \-aaCL source.zip ""*.[fch]"" makefile -d /tmp"
 | |
| .PP
 | |
| To extract only newer versions of the files already in the current
 | |
| directory, without querying (NOTE:  be careful of unzipping in one timezone a
 | |
| zipfile created in another--ZIP archives other than those created by Zip 2.1
 | |
| or later contain no timezone information, and a ``newer'' file from an eastern
 | |
| timezone may, in fact, be older):
 | |
| .PP
 | |
| .Y "unzip \-fo sources"
 | |
| .PP
 | |
| To extract newer versions of the files already in the current directory and
 | |
| to create any files not already there (same caveat as previous example):
 | |
| .PP
 | |
| .Y "unzip \-uo sources"
 | |
| .PP
 | |
| To display a diagnostic screen showing which \fIunzip\fP and \fIzipinfo\fP
 | |
| options are stored in environment variables, whether decryption support was
 | |
| compiled in, the compiler with which \fIunzip\fP was compiled, etc.:
 | |
| .PP
 | |
| .Y "unzip \-v"
 | |
| .PP
 | |
| In the last five examples, assume that UNZIP or UNZIP_OPTS is set to -q.
 | |
| To do a singly quiet listing:
 | |
| .PP
 | |
| .Y "unzip \-l file.zip"
 | |
| .PP
 | |
| To do a doubly quiet listing:
 | |
| .PP
 | |
| .Y "unzip \-ql file.zip"
 | |
| .PP
 | |
| (Note that the ``\fC.zip\fR'' is generally not necessary.)  To do a standard
 | |
| listing:
 | |
| .PP
 | |
| .PD 0
 | |
| .Y "unzip \-\-ql file.zip"
 | |
| .PP
 | |
| or
 | |
| .Y "unzip \-l\-q file.zip"
 | |
| .PP
 | |
| or
 | |
| .Y "unzip \-l\-\-q file.zip\t\fR(extra minuses don't hurt)"
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH TIPS
 | |
| The current maintainer, being a lazy sort, finds it very useful to define
 | |
| a pair of aliases:  \fCtt\fR for ``\fCunzip \-tq\fR'' and \fCii\fR for
 | |
| ``\fCunzip \-Z\fR'' (or ``\fCzipinfo\fR'').  One may then simply type
 | |
| ``\fCtt zipfile\fR'' to test an archive, something that is worth making a
 | |
| habit of doing.  With luck \fIunzip\fP will report ``\fCNo errors detected
 | |
| in compressed data of zipfile.zip\fR,'' after which one may breathe a sigh
 | |
| of relief.
 | |
| .PP
 | |
| The maintainer also finds it useful to set the UNZIP environment variable
 | |
| to ``\fC\-aL\fR'' and is tempted to add ``\fC\-C\fR'' as well.  His ZIPINFO
 | |
| variable is set to ``\fC\-z\fR''.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH DIAGNOSTICS
 | |
| The exit status (or error level) approximates the exit codes defined by PKWARE
 | |
| and takes on the following values, except under VMS:
 | |
| .RS
 | |
| .IP 0
 | |
| normal; no errors or warnings detected.
 | |
| .IP 1
 | |
| one or more warning errors were encountered, but processing completed
 | |
| successfully anyway.  This includes zipfiles where one or more files
 | |
| was skipped due to unsupported compression method or encryption with an
 | |
| unknown password.
 | |
| .IP 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.
 | |
| .IP 3
 | |
| a severe error in the zipfile format was detected.  Processing probably
 | |
| failed immediately.
 | |
| .IP 4
 | |
| \fIunzip\fP was unable to allocate memory for one or more buffers during
 | |
| program initialization.
 | |
| .IP 5
 | |
| \fIunzip\fP was unable to allocate memory or unable to obtain a tty to read
 | |
| the decryption password(s).
 | |
| .IP 6
 | |
| \fIunzip\fP was unable to allocate memory during decompression to disk.
 | |
| .IP 7
 | |
| \fIunzip\fP was unable to allocate memory during in-memory decompression.
 | |
| .IP 8
 | |
| [currently not used]
 | |
| .IP 9
 | |
| the specified zipfiles were not found.
 | |
| .IP 10
 | |
| invalid options were specified on the command line.
 | |
| .IP 11
 | |
| no matching files were found.
 | |
| .IP 50
 | |
| the disk is (or was) full during extraction.
 | |
| .IP 51
 | |
| the end of the ZIP archive was encountered prematurely.
 | |
| .IP 80
 | |
| the user aborted \fIunzip\fP prematurely with control-C (or similar)
 | |
| .IP 81
 | |
| no files were found due to unsupported compression methods or unsupported
 | |
| decryption.  (If even one additional file is successfully processed, however,
 | |
| the exit status is 1.)
 | |
| .IP 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 passwords.  As in the previous case, however, a single
 | |
| successful file will result in an exit status of 1 instead.)
 | |
| .RE
 | |
| .PP
 | |
| VMS interprets standard Unix (or PC) return values as other, scarier-looking
 | |
| things, so \fIunzip\fP instead maps them into VMS-style status codes.  The
 | |
| current mapping is as follows:   1 (success) for normal exit, 0x7fff0001
 | |
| for warning errors, and (0x7fff000? + 16*normal_unzip_exit_status) for all
 | |
| other errors, where the `?' is 2 (error) for \fIunzip\fP values 2, 9-11 and
 | |
| 80-82, and 4 (fatal error) for the remaining ones (3-8, 50, 51).  In addition,
 | |
| there is a compilation option to expand upon this behavior:  defining
 | |
| RETURN_CODES results in a human-readable explanation of what the error
 | |
| status means.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH BUGS
 | |
| Multi-part archives are not yet supported, except in conjunction with
 | |
| \fIzip\fP.  (All parts must be concatenated together in order, and then
 | |
| ``\fCzip \-F\fR'' must be performed on the concatenated archive in order
 | |
| to ``fix'' it.)  This will definitely be corrected in the next major release.
 | |
| .PP
 | |
| Archives read from standard input are not yet supported, except with
 | |
| \fIfunzip\fP (and then only the first member of the archive can be extracted).
 | |
| .PP
 | |
| Archives encrypted with 8-bit passwords (e.g., passwords with accented
 | |
| European characters) may not be portable across systems and/or other
 | |
| archivers.  See the discussion in \fBDECRYPTION\fP above.
 | |
| .PP
 | |
| \fIunzip\fP's \fB\-M\fP (``more'') option is overly simplistic in its handling
 | |
| of screen output; as noted above, it fails to detect the wrapping of long lines
 | |
| and may thereby cause lines at the top of the screen to be scrolled off before
 | |
| being read.  \fIunzip\fP should detect and treat each occurrence of line-wrap
 | |
| as one additional line printed.  This requires knowledge of the screen's width
 | |
| as well as its height.  In addition, \fIunzip\fP should detect the true screen
 | |
| geometry on all systems.
 | |
| .PP
 | |
| Dates, times and permissions of stored directories are not restored except
 | |
| under Unix.
 | |
| .PP
 | |
| [MS-DOS] When extracting or testing files from an archive on a defective
 | |
| floppy diskette, if the ``Fail'' option is chosen from DOS's ``Abort, Retry,
 | |
| Fail?'' message, older versions of \fIunzip\fP may hang the system, requiring
 | |
| a reboot.  This problem appears to be fixed, but control-C (or control-Break)
 | |
| can still be used to terminate \fIunzip\fP.
 | |
| .PP
 | |
| Under DEC Ultrix, \fIunzip\fP would sometimes fail on long zipfiles (bad CRC,
 | |
| not always reproducible).  This was apparently due either to a hardware bug
 | |
| (cache memory) or an operating system bug (improper handling of page faults?).
 | |
| Since Ultrix has been abandoned in favor of Digital Unix (OSF/1), this may not
 | |
| be an issue anymore.
 | |
| .PP
 | |
| [Unix] Unix special files such as FIFO buffers (named pipes), block devices
 | |
| and character devices are not restored even if they are somehow represented
 | |
| in the zipfile, nor are hard-linked files relinked.  Basically the only file
 | |
| types restored by \fIunzip\fP are regular files, directories and symbolic
 | |
| (soft) links.
 | |
| .PP
 | |
| [OS/2] Extended attributes for existing directories are only updated if the
 | |
| \fB\-o\fP (``overwrite all'') option is given.  This is a limitation of the
 | |
| operating system; because directories only have a creation time associated
 | |
| with them, \fIunzip\fP has no way to determine whether the stored attributes
 | |
| are newer or older than those on disk.  In practice this may mean a two-pass
 | |
| approach is required:  first unpack the archive normally (with or without
 | |
| freshening/updating existing files), then overwrite just the directory entries
 | |
| (e.g., ``\fCunzip -o foo */\fR'').
 | |
| .PP
 | |
| [VMS] When extracting to another directory, only the \fI[.foo]\fP syntax is
 | |
| accepted for the \fB\-d\fP option; the simple Unix \fIfoo\fP syntax is
 | |
| silently ignored (as is the less common VMS \fIfoo.dir\fP syntax).
 | |
| .PP
 | |
| [VMS] When the file being extracted already exists, \fIunzip\fP's query only
 | |
| allows skipping, overwriting or renaming; there should additionally be a
 | |
| choice for creating a new version of the file.  In fact, the ``overwrite''
 | |
| choice does create a new version; the old version is not overwritten or
 | |
| deleted.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH "SEE ALSO"
 | |
| \fIfunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipgrep\fP(1L),
 | |
| \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L)
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH URL
 | |
| The Info-ZIP home page is currently at \fChttp://www.cdrom.com/pub/infozip/\fR .
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH AUTHORS
 | |
| The primary Info-ZIP authors (current semi-active members of the Zip-Bugs
 | |
| workgroup) are:  Greg ``Cave Newt'' Roelofs (UnZip); Onno van der Linden (Zip);
 | |
| Jean-loup Gailly (compression); Mark Adler (decompression, fUnZip); Christian
 | |
| Spieler (VMS, MS-DOS, Windows 95, NT, shared code, general Zip and UnZip
 | |
| integration and optimization); Mike White (Windows GUI, Windows DLLs);
 | |
| Kai Uwe Rommel (OS/2); Paul Kienitz (Amiga, Windows 95); Chris Herborth (BeOS,
 | |
| QNX, Atari); Jonathan Hudson (SMS/QDOS); Karl Davis and Sergio Monesi
 | |
| (Acorn RISC OS); Harald Denker (Atari, MVS); John Bush (Solaris, Amiga);
 | |
| Hunter Goatley (VMS); Steve Salisbury (Windows 95, NT); Steve Miller (Windows
 | |
| CE GUI), Johnny Lee (MS-DOS, Windows 95, NT); and Robert Heath (Windows GUI).
 | |
| The author of the original unzip code upon which Info-ZIP's was based
 | |
| is Samuel H. Smith; Carl Mascott did the first Unix port; and David P.
 | |
| Kirschbaum organized and led Info-ZIP in its early days with Keith Petersen
 | |
| hosting the original mailing list at WSMR-SimTel20.  The full list of
 | |
| contributors to UnZip has grown quite large; please refer to the CONTRIBS
 | |
| file in the UnZip source distribution for a relatively complete version.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH VERSIONS
 | |
| .ta \w'vx.xxnn'u +\w'fall 1989'u+3n
 | |
| .PD 0
 | |
| .IP "v1.2\t15 Mar 89" \w'\t\t'u
 | |
| Samuel H. Smith
 | |
| .IP "v2.0\t\ 9 Sep 89"
 | |
| Samuel H. Smith
 | |
| .IP "v2.x\tfall 1989"
 | |
| many Usenet contributors
 | |
| .IP "v3.0\t\ 1 May 90"
 | |
| Info-ZIP (DPK, consolidator)
 | |
| .IP "v3.1\t15 Aug 90"
 | |
| Info-ZIP (DPK, consolidator)
 | |
| .IP "v4.0\t\ 1 Dec 90"
 | |
| Info-ZIP (GRR, maintainer)
 | |
| .IP "v4.1\t12 May 91"
 | |
| Info-ZIP
 | |
| .IP "v4.2\t20 Mar 92"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.0\t21 Aug 92"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.01\t15 Jan 93"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.1\t\ 7 Feb 94"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.11\t\ 2 Aug 94"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.12\t28 Aug 94"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.2\t30 Apr 96"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.3\t22 Apr 97"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .IP "v5.31\t31 May 97"
 | |
| Info-ZIP (Zip-Bugs subgroup, GRR)
 | |
| .PD
 |