
UNZIP(1L)                                               UNZIP(1L)

NAME
       unzip  -  list, test and extract compressed files in a ZIP
       archive

SYNOPSIS
       unzip   [-Z]    [-cflptuvz[abjnoqsCLMVX$/:]]    file[.zip]
       [file(s) ...]  [-x xfile(s) ...] [-d exdir]

DESCRIPTION
       unzip  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, zip(1L), cre-
       ates ZIP  archives;  both  programs  are  compatible  with
       archives created by PKWARE's PKZIP and PKUNZIP for MS-DOS,
       but in many cases the program options or default behaviors
       differ.

ARGUMENTS
       file[.zip]
              Path of the ZIP archive(s).  If the file specifica-
              tion 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 those supported in  commonly  used  Unix
              shells (sh, ksh, csh) and may contain:

              *      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 an  exclamation  point  or  a
                     caret (`!' or `^') follows the left bracket,
                     then the  range  of  characters  within  the
                     brackets  is complemented (that is, anything
                     except the characters inside the brackets is
                     considered a match).

              (Be  sure  to quote any character that might other-
              wise 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 .zip is appended.  Note that self-extracting
              ZIP  files  are  supported,  as  with any other ZIP
              archive; just specify  the  .exe  suffix  (if  any)
              explicitly.

Info-ZIP             17 February 2002 (v5.5)                    1

UNZIP(1L)                                               UNZIP(1L)

       [file(s)]
              An  optional  list  of  archive  members to be pro-
              cessed, separated by spaces.   (VMS  versions  com-
              piled  with  VMSCLI defined must delimit files with
              commas instead.  See -v in OPTIONS below.)  Regular
              expressions (wildcards) may be used to match multi-
              ple members; see above.  Again, be  sure  to  quote
              expressions  that  would  otherwise  be expanded or
              modified by the operating system.

       [-x xfile(s)]
              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, ``unzip  foo  *.[ch]  -x  */*''  would
              extract  all  C source files in the main directory,
              but none in any  subdirectories.   Without  the  -x
              option,  all  C  source  files  in  all directories
              within the zipfile would be extracted.

       [-d exdir]
              An optional directory to which  to  extract  files.
              By default, all files and subdirectories are recre-
              ated in the current directory; the -d option allows
              extraction in an arbitrary directory (always assum-
              ing one has permission to write to the  directory).
              This  option need not appear at the end of the com-
              mand line; it is also accepted before  the  zipfile
              specification  (with  the  normal options), immedi-
              ately after the zipfile specification,  or  between
              the  file(s)  and  the  -x  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 partic-
              ular, ``-d ~'' (tilde) is expanded by Unix C shells
              into the name of the  user's  home  directory,  but
              ``-d~''  is treated as a literal subdirectory ``~''
              of the current directory.

OPTIONS
       Note that,  in  order  to  support  obsolescent  hardware,
       unzip's  usage  screen  is  limited  to 22 or 23 lines and
       should therefore be considered  only  a  reminder  of  the
       basic  unzip  syntax rather than an exhaustive list of all
       possible flags.  The exhaustive list follows:

       -Z     zipinfo(1L) mode.  If the first option on the  com-
              mand line is -Z, the remaining options are taken to
              be zipinfo(1L) options.  See the appropriate manual
              page for a description of these options.

       -A     [OS/2,  Unix DLL] print extended help for the DLL's
              programming interface (API).

Info-ZIP             17 February 2002 (v5.5)                    2

UNZIP(1L)                                               UNZIP(1L)

       -c     extract files  to  stdout/screen  (``CRT'').   This
              option  is similar to the -p option except that the
              name of each file is printed as  it  is  extracted,
              the  -a option is allowed, and ASCII-EBCDIC conver-
              sion is  automatically  performed  if  appropriate.
              This  option  is  not  listed  in  the  unzip usage
              screen.

       -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  unzip  queries
              before  overwriting,  but the -o 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 -f  and
              -u  to  work  properly  (under Unix the variable is
              usually set automatically).  The reasons  for  this
              are somewhat subtle but have to do with the differ-
              ences 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 auto-
              matic  adjustment  for  Daylight  Savings  Time  or
              ``summer time'').

       -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 -l 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 indi-
              vidual  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 -L option was given, the filename is  converted
              to lowercase and is prefixed with a caret (^).

       -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).

       -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.

       -T     [most OSes] set the timestamp on the archive(s)  to
              that  of  the newest file in each one.  This corre-
              sponds to zip's -go option except that  it  can  be
              used   on   wildcard  zipfiles  (e.g.,  ``unzip  -T

Info-ZIP             17 February 2002 (v5.5)                    3

UNZIP(1L)                                               UNZIP(1L)

              \*.zip'') and is much faster.

       -u     update  existing  files  and  create  new  ones  if
              needed.   This option performs the same function as
              the -f 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 -f above for informa-
              tion on setting the timezone properly.

       -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, -v lists  archive  files  verbosely,
              adding to the basic -l info the compression method,
              compressed size, compression ratio and 32-bit  CRC.
              When no zipfile is specified (that is, the complete
              command  is  simply  ``unzip  -v''),  a  diagnostic
              screen  is  printed.   In  addition  to  the normal
              header with release date and version,  unzip  lists
              the home Info-ZIP ftp site and where to find a list
              of other ftp and non-ftp sites; the target  operat-
              ing  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 DECRYPTION
              below); and any options stored in environment vari-
              ables  that  might  do  the  same  (see ENVIRONMENT
              OPTIONS below).  As a modifier it works in conjunc-
              tion  with other options (e.g., -t) to produce more
              verbose or debugging output; this is not yet  fully
              implemented but will be in future releases.

       -z     display only the archive comment.

MODIFIERS
       -a     convert  text  files.   Ordinarily  all  files  are
              extracted exactly as they are stored (as ``binary''
              files).   The  -a option causes files identified by
              zip as text files (those with the `t' label in zip-
              info 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 zip's
              identification  of  text  files  is  by  no   means

Info-ZIP             17 February 2002 (v5.5)                    4

UNZIP(1L)                                               UNZIP(1L)

              perfect; some ``text'' files may actually be binary
              and vice versa.  unzip therefore prints  ``[text]''
              or  ``[binary]'' as a visual check for each file it
              extracts when using the -a option.  The -aa  option
              forces  all  files to be extracted as text, regard-
              less of the supposed file type.

       -b     [general] treat all files as binary (no  text  con-
              versions).  This is a shortcut for ---a.

       -b     [Tandem]  force  the  creation  files with filecode
              type 180 ('C') when extracting Zip  entries  marked
              as  "text".  (On  Tandem, -a is enabled by default,
              see above).

       -b     [VMS] auto-convert binary files (see -a  above)  to
              fixed-length, 512-byte record format.  Doubling the
              option (-bb) forces all files to  be  extracted  in
              this format. When extracting to standard output (-c
              or -p option in effect), the default conversion  of
              text  record delimiters is disabled for binary (-b)
              resp. all (-bb) files.

       -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
              ``foo''  is  renamed to ``foo~'').  This is similar
              to the default behavior of emacs(1) in  many  loca-
              tions.

       -C     match  filenames  case-insensitively.  unzip's phi-
              losophy is ``you get what you ask  for''  (this  is
              also responsible for the -L/-U change; see the rel-
              evant options below).  Because  some  file  systems
              are  fully  case-sensitive (notably those under the
              Unix  operating  system)  and  because   both   ZIP
              archives and unzip itself are portable across plat-
              forms, unzip's default behavior is  to  match  both
              wildcard  and  literal  filenames case-sensitively.
              That is, specifying  ``makefile''  on  the  command
              line  will  only match ``makefile'' in the archive,
              not ``Makefile'' or ``MAKEFILE'' (and similarly for
              wildcard specifications).  Since this does not cor-
              respond to  the  behavior  of  many  other  operat-
              ing/file  systems  (for  example,  OS/2 HPFS, which
              preserves mixed case but is not sensitive  to  it),
              the  -C  option  may  be used to force all filename
              matches to be  case-insensitive.   In  the  example
              above,  all  three  files  would then match ``make-
              file'' (or ``make*'', or similar).  The  -C  option
              affects  files in both the normal file list and the
              excluded-file list (xlist).

       -E     [MacOS only] display contents of MacOS extra  field

Info-ZIP             17 February 2002 (v5.5)                    5

UNZIP(1L)                                               UNZIP(1L)

              during restore operation.

       -F     [Acorn  only]  suppress  removal  of  NFS  filetype
              extension from stored filenames.

       -F     [non-Acorn systems supporting long  filenames  with
              embedded   commas,   and   only  if  compiled  with
              ACORN_FTYPE_NFS defined] translate filetype  infor-
              mation from ACORN RISC OS extra field blocks into a
              NFS filetype extension and append it to  the  names
              of  the extracted files.  (When the stored filename
              appears to already have an  appended  NFS  filetype
              extension,  it  is  replaced  by  the info from the
              extra field.)

       -i     [MacOS only] ignore filenames stored in MacOS extra
              fields.   Instead,  the  most  compatible  filename
              stored in the generic part of the entry's header is
              used.

       -j     junk  paths.   The archive's directory structure is
              not recreated;  all  files  are  deposited  in  the
              extraction directory (by default, the current one).

       -J     [BeOS only] junk file attributes.  The file's  BeOS
              file  attributes  are not restored, just the file's
              data.

       -J     [MacOS only] ignore MacOS extra fields.  All Macin-
              tosh   specific  info  is  skipped.  Data-fork  and
              resource-fork are restored as separate files.

       -L     convert to lowercase any filename originating on an
              uppercase-only  operating  system  or  file system.
              (This was  unzip's  default  behavior  in  releases
              prior  to 5.11; the new default behavior is identi-
              cal to the old behavior with the -U  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 unzip  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.
              The  -LL option forces conversion of every filename
              to lowercase, regardless of  the  originating  file
              system.

       -M     pipe  all  output through an internal pager similar

Info-ZIP             17 February 2002 (v5.5)                    6

UNZIP(1L)                                               UNZIP(1L)

              to the Unix more(1)  command.   At  the  end  of  a
              screenful   of   output,   unzip   pauses   with  a
              ``--More--'' prompt;  the  next  screenful  may  be
              viewed  by  pressing  the Enter (Return) key or the
              space bar.  unzip can be terminated by pressing the
              ``q''  key  and,  on some systems, the Enter/Return
              key.  Unlike Unix more(1),  there  is  no  forward-
              searching   or  editing  capability.   Also,  unzip
              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 avail-
              able  lines on the screen is not detected, in which
              case unzip assumes the height is 24 lines.

       -n     never overwrite existing files.  If a file  already
              exists,  skip  the  extraction of that file without
              prompting.   By  default   unzip   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.

       -N     [Amiga]  extract  file comments as Amiga filenotes.
              File comments are created with  the  -c  option  of
              zip(1L), or with the -N option of the Amiga port of
              zip(1L), which stores filenotes as comments.

       -o     overwrite existing files without  prompting.   This
              is a dangerous option, so use it with care.  (It is
              often used with -f, however, and is the only way to
              overwrite directory EAs under OS/2.)

       -P password
              use  password  to decrypt encrypted zipfile entries
              (if any).  THIS IS INSECURE!  Many multi-user oper-
              ating  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.)

       -q     perform  operations  quietly  (-qq = even quieter).
              Ordinarily unzip 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

Info-ZIP             17 February 2002 (v5.5)                    7

UNZIP(1L)                                               UNZIP(1L)

              archive,  and possibly a summary when finished with
              each  archive.   The  -q[q]  options  suppress  the
              printing of some or all of these messages.

       -s     [OS/2,  NT,  MS-DOS] convert spaces in filenames to
              underscores.  Since all PC operating systems  allow
              spaces  in  filenames,  unzip  by  default extracts
              filenames     with     spaces     intact     (e.g.,
              ``EA DATA. SF'').   This  can  be awkward, however,
              since MS-DOS in particular does not gracefully sup-
              port  spaces in filenames.  Conversion of spaces to
              underscores can eliminate the awkwardness  in  some
              cases.

       -U     (obsolete; to be removed in a future release) leave
              filenames uppercase if created under  MS-DOS,  VMS,
              etc.  See -L above.

       -V     retain  (VMS)  file version numbers.  VMS files can
              be stored with a  version  number,  in  the  format
              file.ext;##.   By  default the ``;##'' version num-
              bers 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.)

       -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
              (-XX) under NT instructs unzip  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.]

       -$     [MS-DOS, OS/2, NT] restore the volume label if  the
              extraction  medium is removable (e.g., a diskette).
              Doubling the option (-$$) allows fixed media  (hard
              disks)  to be labelled as well.  By default, volume
              labels are ignored.

Info-ZIP             17 February 2002 (v5.5)                    8

UNZIP(1L)                                               UNZIP(1L)

       -/ extensions
              [Acorn only] overrides the extension list  supplied
              by  Unzip$Ext  environment variable. During extrac-
              tion, filename extensions that  match  one  of  the
              items  in  this extension list are swapped in front
              of the base name of the extracted file.

       -:     [all but Acorn,  VM/CMS,  MVS,  Tandem]  allows  to
              extract  archive  members into locations outside of
              the current `` extraction root folder''. For  secu-
              rity reasons, unzip normally removes ``parent dir''
              path  components  (``../'')  from  the   names   of
              extracted  file.  This safety feature (new for ver-
              sion 5.50) prevents unzip from accidentally writing
              files  to  ``sensitive''  areas  outside the active
              extraction folder tree head.  The  -:  option  lets
              unzip  switch  back  to  its previous, more liberal
              behaviour, to allow  exact  extraction  of  (older)
              archives  that  used  ``../''  components to create
              multiple directory trees at the level of  the  cur-
              rent extraction folder.

ENVIRONMENT OPTIONS
       unzip'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 -a,
       -L, -C, -q, -o, or -n modifiers:  make unzip  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 over-
       write or never overwrite files as it extracts  them.   For
       example,  to  make  unzip act as quietly as possible, only
       reporting errors, one would use one of the following  com-
       mands:

         Unix Bourne shell:
              UNZIP=-qq; export UNZIP

         Unix C shell:
              setenv UNZIP -qq

         OS/2 or MS-DOS:
              set UNZIP=-qq

         VMS (quotes for lowercase):
              define UNZIP_OPTS ""-qq""

       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

Info-ZIP             17 February 2002 (v5.5)                    9

UNZIP(1L)                                               UNZIP(1L)

           unzip --q[other options] zipfile

       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:

           unzip -t--q zipfile
           unzip ---qt zipfile

       (the two are equivalent).  This may seem awkward  or  con-
       fusing,  but  it is reasonably intuitive:  just ignore the
       first hyphen and go from there.   It  is  also  consistent
       with the behavior of Unix nice(1).

       As  suggested  by the examples above, the default variable
       names are UNZIP_OPTS for VMS (where  the  symbol  used  to
       install unzip as a foreign command would otherwise be con-
       fused with the environment variable), and  UNZIP  for  all
       other  operating systems.  For compatibility with zip(1L),
       UNZIPOPT is also accepted (don't ask).  If both UNZIP  and
       UNZIPOPT  are  defined,  however,  UNZIP takes precedence.
       unzip's diagnostic option (-v with no zipfile name) can be
       used  to  check  the values of all four possible unzip and
       zipinfo environment variables.

       The timezone variable (TZ) should be set according to  the
       local  timezone in order for the -f and -u to operate cor-
       rectly.  See the description  of  -f  above  for  details.
       This  variable  may  also be necessary in order for times-
       tamps on extracted files to be set correctly.  Under  Win-
       dows  95/NT unzip should know the correct timezone even if
       TZ is unset, assuming the timezone is correctly set in the
       Control Panel.

DECRYPTION
       Encrypted  archives  are fully supported by Info-ZIP soft-
       ware,  but  due  to  United  States  export  restrictions,
       de-/encryption  support might be disabled in your compiled
       binary.  However, since spring 2000,  US  export  restric-
       tions  have been liberated, and our source archives do now
       include full crypt code.  In case you need binary  distri-
       butions with crypt support enabled, see the file ``WHERE''
       in any Info-ZIP source or binary  distribution  for  loca-
       tions both inside and outside the US.

       Some  compiled  versions  of unzip may not support decryp-
       tion.  To  check  a  version  for  crypt  support,  either
       attempt  to  test or extract an encrypted archive, or else
       check unzip's diagnostic screen (see the -v option  above)
       for  ``[decryption]''  as  one  of the special compilation
       options.

Info-ZIP             17 February 2002 (v5.5)                   10

UNZIP(1L)                                               UNZIP(1L)

       As noted above, the -P 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  nor-
       mally; if a zipfile member is encrypted, unzip will prompt
       for the password without echoing  what  is  typed.   unzip
       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  incor-
       rect  password is given but it passes the header test any-
       way, either an incorrect CRC will  be  generated  for  the
       extracted  data or else unzip will fail during the extrac-
       tion because the ``decrypted'' bytes do not  constitute  a
       valid compressed data stream.

       If the first password fails the header check on some file,
       unzip 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 zip(1L) and  zipcloak(1L)  allowed  null
       passwords,  so  unzip checks each encrypted file to see if
       the null password works.  This may result in ``false posi-
       tives'' and extraction errors, as noted above.)

       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 PKZIP  2.04g  uses  the  OEM  code
       page;  Windows  PKZIP  2.50 uses Latin-1 (and is therefore
       incompatible with DOS PKZIP); Info-ZIP uses the  OEM  code
       page  on DOS, OS/2 and Win3.x ports but Latin-1 everywhere
       else; and Nico Mak's WinZip 6.x does not allow 8-bit pass-
       words  at  all.   UnZip 5.3 (or newer) 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.  (EBCDIC is not tested on
       non-EBCDIC systems, because there are no  known  archivers
       that encrypt using EBCDIC encoding.)  ISO character encod-
       ings other than Latin-1 are not supported.

EXAMPLES
       To use unzip to extract all members of  the  archive  let-
       ters.zip  into  the  current  directory and subdirectories
       below it, creating any subdirectories as necessary:

Info-ZIP             17 February 2002 (v5.5)                   11

UNZIP(1L)                                               UNZIP(1L)

           unzip letters

       To extract all members of  letters.zip  into  the  current
       directory only:

           unzip -j letters

       To test letters.zip, printing only a summary message indi-
       cating whether the archive is OK or not:

           unzip -tq letters

       To test all zipfiles in the  current  directory,  printing
       only the summaries:

           unzip -tq \*.zip

       (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 let-
       ters.zip  whose  names end in .tex, auto-converting to the
       local end-of-line convention and piping  the  output  into
       more(1):

           unzip -ca letters \*.tex | more

       To  extract  the binary file paper1.dvi to standard output
       and pipe it to a printing program:

           unzip -p articles paper1.dvi | dvips

       To extract all FORTRAN and C source files--*.f, *.c,  *.h,
       and Makefile--into the /tmp directory:

           unzip source.zip "*.[fch]" Makefile -d /tmp

       (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):

           unzip -C source.zip "*.[fch]" makefile -d /tmp

       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''):

           unzip -aaCL source.zip "*.[fch]" makefile -d /tmp

       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

Info-ZIP             17 February 2002 (v5.5)                   12

UNZIP(1L)                                               UNZIP(1L)

       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):

           unzip -fo sources

       To extract newer versions of the files already in the cur-
       rent  directory  and to create any files not already there
       (same caveat as previous example):

           unzip -uo sources

       To display a diagnostic screen  showing  which  unzip  and
       zipinfo  options  are  stored  in  environment  variables,
       whether decryption support was compiled in,  the  compiler
       with which unzip was compiled, etc.:

           unzip -v

       In the last five examples, assume that UNZIP or UNZIP_OPTS
       is set to -q.  To do a singly quiet listing:

           unzip -l file.zip

       To do a doubly quiet listing:

           unzip -ql file.zip

       (Note that the ``.zip'' is generally not  necessary.)   To
       do a standard listing:

           unzip --ql file.zip
       or
           unzip -l-q file.zip
       or
           unzip -l--q file.zip
       (Extra minuses in options don't hurt.)

TIPS
       The  current  maintainer, being a lazy sort, finds it very
       useful to define a pair of aliases:  tt for ``unzip  -tq''
       and  ii  for  ``unzip -Z'' (or ``zipinfo'').  One may then
       simply type ``tt zipfile'' to test an  archive,  something
       that  is  worth  making a habit of doing.  With luck unzip
       will report ``No errors detected  in  compressed  data  of
       zipfile.zip,''  after  which  one  may  breathe  a sigh of
       relief.

       The maintainer also finds it useful to set the UNZIP envi-
       ronment  variable  to ``-aL'' and is tempted to add ``-C''
       as well.  His ZIPINFO variable is set to ``-z''.

DIAGNOSTICS
       The exit status (or error  level)  approximates  the  exit

Info-ZIP             17 February 2002 (v5.5)                   13

UNZIP(1L)                                               UNZIP(1L)

       codes defined by PKWARE and takes on the following values,
       except under VMS:

              0      normal; no errors or warnings detected.

              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.

              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.

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

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

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

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

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

              8      [currently not used]

              9      the specified zipfiles were not found.

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

              11     no matching files were found.

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

              51     the  end  of the ZIP archive was encountered
                     prematurely.

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

              81     testing  or  extraction of one or more files

Info-ZIP             17 February 2002 (v5.5)                   14

UNZIP(1L)                                               UNZIP(1L)

                     failed due to unsupported compression  meth-
                     ods or unsupported decryption.

              82     no  files  were  found due to bad decryption
                     password(s).  (If even one file is  success-
                     fully processed, however, the exit status is
                     1.)

       VMS interprets standard Unix  (or  PC)  return  values  as
       other,  scarier-looking things, so unzip 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*nor-
       mal_unzip_exit_status) for all other errors, where the `?'
       is 2 (error) for unzip 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.

BUGS
       Multi-part archives are not yet supported, except in  con-
       junction  with  zip.   (All  parts  must  be  concatenated
       together in order, and then ``zip -F'' must  be  performed
       on the concatenated archive in order to ``fix'' it.)  This
       will definitely be corrected in the next major release.

       Archives read from standard input are not  yet  supported,
       except  with funzip (and then only the first member of the
       archive can be extracted).

       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 DECRYPTION above.

       unzip's  -M  (``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.  unzip 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, unzip should detect the true  screen
       geometry on all systems.

       Dates, times and permissions of stored directories are not
       restored except under Unix.

       [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 unzip may hang the system, requiring a reboot.
       This problem  appears  to  be  fixed,  but  control-C  (or

Info-ZIP             17 February 2002 (v5.5)                   15

UNZIP(1L)                                               UNZIP(1L)

       control-Break) can still be used to terminate unzip.

       Under  DEC Ultrix, unzip would sometimes fail on long zip-
       files (bad CRC, not always reproducible).  This was appar-
       ently  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.

       [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  zip-
       file,  nor  are hard-linked files relinked.  Basically the
       only file types  restored  by  unzip  are  regular  files,
       directories and symbolic (soft) links.

       [OS/2]  Extended  attributes  for existing directories are
       only updated if  the  -o  (``overwrite  all'')  option  is
       given.   This  is  a  limitation  of the operating system;
       because directories only have a creation  time  associated
       with  them,  unzip  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  fresh-
       ening/updating  existing  files),  then overwrite just the
       directory entries (e.g., ``unzip -o foo */'').

       [VMS] When  extracting  to  another  directory,  only  the
       [.foo]  syntax  is  accepted for the -d option; the simple
       Unix foo syntax is silently ignored (as is the less common
       VMS foo.dir syntax).

       [VMS]  When  the  file  being  extracted  already  exists,
       unzip's query only allows skipping, overwriting or  renam-
       ing;  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.

SEE ALSO
       funzip(1L),  zip(1L),  zipcloak(1L),   zipgrep(1L),   zip-
       info(1L), zipnote(1L), zipsplit(1L)

URL
       The Info-ZIP home page is currently at
           http://www.info-zip.org/pub/infozip/
       or
           ftp://ftp.info-zip.org/pub/infozip/ .

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);

Info-ZIP             17 February 2002 (v5.5)                   16

UNZIP(1L)                                               UNZIP(1L)

       Christian  Spieler (UnZip maintance coordination, 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); 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 Dave Smith (Tandem NSK).  The author of the orig-
       inal  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.

VERSIONS
       v1.2   15 Mar 89   Samuel H. Smith
       v2.0    9 Sep 89   Samuel H. Smith
       v2.x   fall 1989   many Usenet contributors
       v3.0    1 May 90   Info-ZIP (DPK, consolidator)
       v3.1   15 Aug 90   Info-ZIP (DPK, consolidator)
       v4.0    1 Dec 90   Info-ZIP (GRR, maintainer)
       v4.1   12 May 91   Info-ZIP
       v4.2   20 Mar 92   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.0   21 Aug 92   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.01  15 Jan 93   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.1    7 Feb 94   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.11   2 Aug 94   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.12  28 Aug 94   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.2   30 Apr 96   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.3   22 Apr 97   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.31  31 May 97   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.32   3 Nov 97   Info-ZIP (Zip-Bugs subgroup, GRR)
       v5.4   28 Nov 98   Info-ZIP (Zip-Bugs subgroup, SPC)
       v5.41  16 Apr 00   Info-ZIP (Zip-Bugs subgroup, SPC)
       v5.42  14 Jan 01   Info-ZIP (Zip-Bugs subgroup, SPC)
       v5.5   17 Feb 02   Info-ZIP (Zip-Bugs subgroup, SPC)

Info-ZIP             17 February 2002 (v5.5)                   17

