1
2UNZIP(1L)                                               UNZIP(1L)
3
4NAME
5       unzip  -  list, test and extract compressed files in a ZIP
6       archive
7
8SYNOPSIS
9       unzip   [-Z]    [-cflptuvz[abjnoqsCLMVX$/:]]    file[.zip]
10       [file(s) ...]  [-x xfile(s) ...] [-d exdir]
11
12DESCRIPTION
13       unzip  will  list,  test,  or  extract  files  from  a ZIP
14       archive, commonly found on MS-DOS  systems.   The  default
15       behavior  (with no options) is to extract into the current
16       directory (and subdirectories below it) all files from the
17       specified ZIP archive.  A companion program, zip(1L), cre-
18       ates ZIP  archives;  both  programs  are  compatible  with
19       archives created by PKWARE's PKZIP and PKUNZIP for MS-DOS,
20       but in many cases the program options or default behaviors
21       differ.
22
23ARGUMENTS
24       file[.zip]
25              Path of the ZIP archive(s).  If the file specifica-
26              tion is a wildcard, each matching file is processed
27              in  an order determined by the operating system (or
28              file system).  Only the filename can be a wildcard;
29              the  path  itself cannot.  Wildcard expressions are
30              similar to those supported in  commonly  used  Unix
31              shells (sh, ksh, csh) and may contain:
32
33              *      matches a sequence of 0 or more characters
34
35              ?      matches exactly 1 character
36
37              [...]  matches  any  single  character found inside
38                     the brackets;  ranges  are  specified  by  a
39                     beginning character, a hyphen, and an ending
40                     character.  If an  exclamation  point  or  a
41                     caret (`!' or `^') follows the left bracket,
42                     then the  range  of  characters  within  the
43                     brackets  is complemented (that is, anything
44                     except the characters inside the brackets is
45                     considered a match).
46
47              (Be  sure  to quote any character that might other-
48              wise be interpreted or modified  by  the  operating
49              system,  particularly  under  Unix and VMS.)  If no
50              matches are found, the specification is assumed  to
51              be  a literal filename; and if that also fails, the
52              suffix .zip is appended.  Note that self-extracting
53              ZIP  files  are  supported,  as  with any other ZIP
54              archive; just specify  the  .exe  suffix  (if  any)
55              explicitly.
56
57Info-ZIP             17 February 2002 (v5.5)                    1
58
59UNZIP(1L)                                               UNZIP(1L)
60
61       [file(s)]
62              An  optional  list  of  archive  members to be pro-
63              cessed, separated by spaces.   (VMS  versions  com-
64              piled  with  VMSCLI defined must delimit files with
65              commas instead.  See -v in OPTIONS below.)  Regular
66              expressions (wildcards) may be used to match multi-
67              ple members; see above.  Again, be  sure  to  quote
68              expressions  that  would  otherwise  be expanded or
69              modified by the operating system.
70
71       [-x xfile(s)]
72              An optional list of archive members to be  excluded
73              from  processing.   Since wildcard characters match
74              directory separators (`/'), this option may be used
75              to  exclude  any  files that are in subdirectories.
76              For example, ``unzip  foo  *.[ch]  -x  */*''  would
77              extract  all  C source files in the main directory,
78              but none in any  subdirectories.   Without  the  -x
79              option,  all  C  source  files  in  all directories
80              within the zipfile would be extracted.
81
82       [-d exdir]
83              An optional directory to which  to  extract  files.
84              By default, all files and subdirectories are recre-
85              ated in the current directory; the -d option allows
86              extraction in an arbitrary directory (always assum-
87              ing one has permission to write to the  directory).
88              This  option need not appear at the end of the com-
89              mand line; it is also accepted before  the  zipfile
90              specification  (with  the  normal options), immedi-
91              ately after the zipfile specification,  or  between
92              the  file(s)  and  the  -x  option.  The option and
93              directory may be  concatenated  without  any  white
94              space  between  them,  but note that this may cause
95              normal shell behavior to be suppressed.  In partic-
96              ular, ``-d ~'' (tilde) is expanded by Unix C shells
97              into the name of the  user's  home  directory,  but
98              ``-d~''  is treated as a literal subdirectory ``~''
99              of the current directory.
100
101OPTIONS
102       Note that,  in  order  to  support  obsolescent  hardware,
103       unzip's  usage  screen  is  limited  to 22 or 23 lines and
104       should therefore be considered  only  a  reminder  of  the
105       basic  unzip  syntax rather than an exhaustive list of all
106       possible flags.  The exhaustive list follows:
107
108       -Z     zipinfo(1L) mode.  If the first option on the  com-
109              mand line is -Z, the remaining options are taken to
110              be zipinfo(1L) options.  See the appropriate manual
111              page for a description of these options.
112
113       -A     [OS/2,  Unix DLL] print extended help for the DLL's
114              programming interface (API).
115
116Info-ZIP             17 February 2002 (v5.5)                    2
117
118UNZIP(1L)                                               UNZIP(1L)
119
120       -c     extract files  to  stdout/screen  (``CRT'').   This
121              option  is similar to the -p option except that the
122              name of each file is printed as  it  is  extracted,
123              the  -a option is allowed, and ASCII-EBCDIC conver-
124              sion is  automatically  performed  if  appropriate.
125              This  option  is  not  listed  in  the  unzip usage
126              screen.
127
128       -f     freshen existing files, i.e.,  extract  only  those
129              files that already exist on disk and that are newer
130              than the disk copies.   By  default  unzip  queries
131              before  overwriting,  but the -o option may be used
132              to suppress the  queries.   Note  that  under  many
133              operating  systems,  the  TZ (timezone) environment
134              variable must be set correctly in order for -f  and
135              -u  to  work  properly  (under Unix the variable is
136              usually set automatically).  The reasons  for  this
137              are somewhat subtle but have to do with the differ-
138              ences between DOS-format file times  (always  local
139              time) and Unix-format times (always in GMT/UTC) and
140              the necessity to compare the  two.   A  typical  TZ
141              value  is  ``PST8PDT''  (US Pacific time with auto-
142              matic  adjustment  for  Daylight  Savings  Time  or
143              ``summer time'').
144
145       -l     list  archive  files  (short  format).   The names,
146              uncompressed file sizes and modification dates  and
147              times  of  the  specified  files are printed, along
148              with totals for all files specified.  If UnZip  was
149              compiled  with  OS2_EAS defined, the -l option also
150              lists columns for the sizes of stored OS/2 extended
151              attributes  (EAs)  and  OS/2  access  control lists
152              (ACLs).  In addition, the zipfile comment and indi-
153              vidual  file comments (if any) are displayed.  If a
154              file was archived from a  single-case  file  system
155              (for  example,  the old MS-DOS FAT file system) and
156              the -L option was given, the filename is  converted
157              to lowercase and is prefixed with a caret (^).
158
159       -p     extract  files  to  pipe (stdout).  Nothing but the
160              file data is sent to  stdout,  and  the  files  are
161              always extracted in binary format, just as they are
162              stored (no conversions).
163
164       -t     test archive  files.   This  option  extracts  each
165              specified  file  in  memory  and  compares  the CRC
166              (cyclic redundancy check, an enhanced checksum)  of
167              the  expanded  file with the original file's stored
168              CRC value.
169
170       -T     [most OSes] set the timestamp on the archive(s)  to
171              that  of  the newest file in each one.  This corre-
172              sponds to zip's -go option except that  it  can  be
173              used   on   wildcard  zipfiles  (e.g.,  ``unzip  -T
174
175Info-ZIP             17 February 2002 (v5.5)                    3
176
177UNZIP(1L)                                               UNZIP(1L)
178
179              \*.zip'') and is much faster.
180
181       -u     update  existing  files  and  create  new  ones  if
182              needed.   This option performs the same function as
183              the -f option, extracting (with query)  files  that
184              are  newer  than  those with the same name on disk,
185              and in addition it extracts those files that do not
186              already  exist  on disk.  See -f above for informa-
187              tion on setting the timezone properly.
188
189       -v     be verbose or print diagnostic version info.   This
190              option  has  evolved  and  now  behaves  as both an
191              option and a modifier.  As an  option  it  has  two
192              purposes:   when  a  zipfile  is  specified with no
193              other options, -v lists  archive  files  verbosely,
194              adding to the basic -l info the compression method,
195              compressed size, compression ratio and 32-bit  CRC.
196              When no zipfile is specified (that is, the complete
197              command  is  simply  ``unzip  -v''),  a  diagnostic
198              screen  is  printed.   In  addition  to  the normal
199              header with release date and version,  unzip  lists
200              the home Info-ZIP ftp site and where to find a list
201              of other ftp and non-ftp sites; the target  operat-
202              ing  system  for  which it was compiled, as well as
203              (possibly) the hardware on which it  was  compiled,
204              the  compiler and version used, and the compilation
205              date; any special compilation  options  that  might
206              affect the program's operation (see also DECRYPTION
207              below); and any options stored in environment vari-
208              ables  that  might  do  the  same  (see ENVIRONMENT
209              OPTIONS below).  As a modifier it works in conjunc-
210              tion  with other options (e.g., -t) to produce more
211              verbose or debugging output; this is not yet  fully
212              implemented but will be in future releases.
213
214       -z     display only the archive comment.
215
216MODIFIERS
217       -a     convert  text  files.   Ordinarily  all  files  are
218              extracted exactly as they are stored (as ``binary''
219              files).   The  -a option causes files identified by
220              zip as text files (those with the `t' label in zip-
221              info listings, rather than `b') to be automatically
222              extracted as such, converting line endings, end-of-
223              file  characters  and  the  character set itself as
224              necessary.  (For example, Unix files use line feeds
225              (LFs) for end-of-line (EOL) and have no end-of-file
226              (EOF)  marker;  Macintoshes  use  carriage  returns
227              (CRs)  for  EOLs; and most PC operating systems use
228              CR+LF for EOLs and control-Z for EOF.  In addition,
229              IBM mainframes and the Michigan Terminal System use
230              EBCDIC rather than the more common ASCII  character
231              set,  and  NT  supports  Unicode.)  Note that zip's
232              identification  of  text  files  is  by  no   means
233
234Info-ZIP             17 February 2002 (v5.5)                    4
235
236UNZIP(1L)                                               UNZIP(1L)
237
238              perfect; some ``text'' files may actually be binary
239              and vice versa.  unzip therefore prints  ``[text]''
240              or  ``[binary]'' as a visual check for each file it
241              extracts when using the -a option.  The -aa  option
242              forces  all  files to be extracted as text, regard-
243              less of the supposed file type.
244
245       -b     [general] treat all files as binary (no  text  con-
246              versions).  This is a shortcut for ---a.
247
248       -b     [Tandem]  force  the  creation  files with filecode
249              type 180 ('C') when extracting Zip  entries  marked
250              as  "text".  (On  Tandem, -a is enabled by default,
251              see above).
252
253       -b     [VMS] auto-convert binary files (see -a  above)  to
254              fixed-length, 512-byte record format.  Doubling the
255              option (-bb) forces all files to  be  extracted  in
256              this format. When extracting to standard output (-c
257              or -p option in effect), the default conversion  of
258              text  record delimiters is disabled for binary (-b)
259              resp. all (-bb) files.
260
261       -B     [Unix only, and only if  compiled  with  UNIXBACKUP
262              defined]  save  a  backup  copy of each overwritten
263              file with a tilde appended (e.g., the old  copy  of
264              ``foo''  is  renamed to ``foo~'').  This is similar
265              to the default behavior of emacs(1) in  many  loca-
266              tions.
267
268       -C     match  filenames  case-insensitively.  unzip's phi-
269              losophy is ``you get what you ask  for''  (this  is
270              also responsible for the -L/-U change; see the rel-
271              evant options below).  Because  some  file  systems
272              are  fully  case-sensitive (notably those under the
273              Unix  operating  system)  and  because   both   ZIP
274              archives and unzip itself are portable across plat-
275              forms, unzip's default behavior is  to  match  both
276              wildcard  and  literal  filenames case-sensitively.
277              That is, specifying  ``makefile''  on  the  command
278              line  will  only match ``makefile'' in the archive,
279              not ``Makefile'' or ``MAKEFILE'' (and similarly for
280              wildcard specifications).  Since this does not cor-
281              respond to  the  behavior  of  many  other  operat-
282              ing/file  systems  (for  example,  OS/2 HPFS, which
283              preserves mixed case but is not sensitive  to  it),
284              the  -C  option  may  be used to force all filename
285              matches to be  case-insensitive.   In  the  example
286              above,  all  three  files  would then match ``make-
287              file'' (or ``make*'', or similar).  The  -C  option
288              affects  files in both the normal file list and the
289              excluded-file list (xlist).
290
291       -E     [MacOS only] display contents of MacOS extra  field
292
293Info-ZIP             17 February 2002 (v5.5)                    5
294
295UNZIP(1L)                                               UNZIP(1L)
296
297              during restore operation.
298
299       -F     [Acorn  only]  suppress  removal  of  NFS  filetype
300              extension from stored filenames.
301
302       -F     [non-Acorn systems supporting long  filenames  with
303              embedded   commas,   and   only  if  compiled  with
304              ACORN_FTYPE_NFS defined] translate filetype  infor-
305              mation from ACORN RISC OS extra field blocks into a
306              NFS filetype extension and append it to  the  names
307              of  the extracted files.  (When the stored filename
308              appears to already have an  appended  NFS  filetype
309              extension,  it  is  replaced  by  the info from the
310              extra field.)
311
312       -i     [MacOS only] ignore filenames stored in MacOS extra
313              fields.   Instead,  the  most  compatible  filename
314              stored in the generic part of the entry's header is
315              used.
316
317       -j     junk  paths.   The archive's directory structure is
318              not recreated;  all  files  are  deposited  in  the
319              extraction directory (by default, the current one).
320
321       -J     [BeOS only] junk file attributes.  The file's  BeOS
322              file  attributes  are not restored, just the file's
323              data.
324
325       -J     [MacOS only] ignore MacOS extra fields.  All Macin-
326              tosh   specific  info  is  skipped.  Data-fork  and
327              resource-fork are restored as separate files.
328
329       -L     convert to lowercase any filename originating on an
330              uppercase-only  operating  system  or  file system.
331              (This was  unzip's  default  behavior  in  releases
332              prior  to 5.11; the new default behavior is identi-
333              cal to the old behavior with the -U  option,  which
334              is  now  obsolete  and  will be removed in a future
335              release.)   Depending  on   the   archiver,   files
336              archived  under  single-case file systems (VMS, old
337              MS-DOS FAT, etc.) may be  stored  as  all-uppercase
338              names;  this  can  be  ugly  or  inconvenient  when
339              extracting to a case-preserving file system such as
340              OS/2  HPFS  or  a  case-sensitive one such as under
341              Unix.  By default unzip  lists  and  extracts  such
342              filenames  exactly  as  they're  stored  (excepting
343              truncation, conversion of  unsupported  characters,
344              etc.);  this  option  causes the names of all files
345              from certain systems to be converted to  lowercase.
346              The  -LL option forces conversion of every filename
347              to lowercase, regardless of  the  originating  file
348              system.
349
350       -M     pipe  all  output through an internal pager similar
351
352Info-ZIP             17 February 2002 (v5.5)                    6
353
354UNZIP(1L)                                               UNZIP(1L)
355
356              to the Unix more(1)  command.   At  the  end  of  a
357              screenful   of   output,   unzip   pauses   with  a
358              ``--More--'' prompt;  the  next  screenful  may  be
359              viewed  by  pressing  the Enter (Return) key or the
360              space bar.  unzip can be terminated by pressing the
361              ``q''  key  and,  on some systems, the Enter/Return
362              key.  Unlike Unix more(1),  there  is  no  forward-
363              searching   or  editing  capability.   Also,  unzip
364              doesn't notice if long lines wrap at  the  edge  of
365              the  screen,  effectively resulting in the printing
366              of two or more lines and the likelihood  that  some
367              text  will  scroll off the top of the screen before
368              being viewed.  On some systems the number of avail-
369              able  lines on the screen is not detected, in which
370              case unzip assumes the height is 24 lines.
371
372       -n     never overwrite existing files.  If a file  already
373              exists,  skip  the  extraction of that file without
374              prompting.   By  default   unzip   queries   before
375              extracting  any  file that already exists; the user
376              may choose to  overwrite  only  the  current  file,
377              overwrite all files, skip extraction of the current
378              file, skip extraction of  all  existing  files,  or
379              rename the current file.
380
381       -N     [Amiga]  extract  file comments as Amiga filenotes.
382              File comments are created with  the  -c  option  of
383              zip(1L), or with the -N option of the Amiga port of
384              zip(1L), which stores filenotes as comments.
385
386       -o     overwrite existing files without  prompting.   This
387              is a dangerous option, so use it with care.  (It is
388              often used with -f, however, and is the only way to
389              overwrite directory EAs under OS/2.)
390
391       -P password
392              use  password  to decrypt encrypted zipfile entries
393              (if any).  THIS IS INSECURE!  Many multi-user oper-
394              ating  systems provide ways for any user to see the
395              current command line of any  other  user;  even  on
396              stand-alone  systems  there is always the threat of
397              over-the-shoulder peeking.  Storing  the  plaintext
398              password  as part of a command line in an automated
399              script is even worse.  Whenever possible,  use  the
400              non-echoing, interactive prompt to enter passwords.
401              (And where security is truly important, use  strong
402              encryption  such  as Pretty Good Privacy instead of
403              the relatively weak encryption provided by standard
404              zipfile utilities.)
405
406       -q     perform  operations  quietly  (-qq = even quieter).
407              Ordinarily unzip prints the names of the files it's
408              extracting  or testing, the extraction methods, any
409              file or zipfile comments that may be stored in  the
410
411Info-ZIP             17 February 2002 (v5.5)                    7
412
413UNZIP(1L)                                               UNZIP(1L)
414
415              archive,  and possibly a summary when finished with
416              each  archive.   The  -q[q]  options  suppress  the
417              printing of some or all of these messages.
418
419       -s     [OS/2,  NT,  MS-DOS] convert spaces in filenames to
420              underscores.  Since all PC operating systems  allow
421              spaces  in  filenames,  unzip  by  default extracts
422              filenames     with     spaces     intact     (e.g.,
423              ``EA DATA. SF'').   This  can  be awkward, however,
424              since MS-DOS in particular does not gracefully sup-
425              port  spaces in filenames.  Conversion of spaces to
426              underscores can eliminate the awkwardness  in  some
427              cases.
428
429       -U     (obsolete; to be removed in a future release) leave
430              filenames uppercase if created under  MS-DOS,  VMS,
431              etc.  See -L above.
432
433       -V     retain  (VMS)  file version numbers.  VMS files can
434              be stored with a  version  number,  in  the  format
435              file.ext;##.   By  default the ``;##'' version num-
436              bers are stripped, but this option allows  them  to
437              be retained.  (On file systems that limit filenames
438              to particularly short lengths, the version  numbers
439              may  be  truncated  or  stripped regardless of this
440              option.)
441
442       -X     [VMS, Unix, OS/2, NT] restore owner/protection info
443              (UICs)  under VMS, or user and group info (UID/GID)
444              under Unix, or access control  lists  (ACLs)  under
445              certain  network-enabled  versions  of  OS/2  (Warp
446              Server with IBM LAN Server/Requester  3.0  to  5.0;
447              Warp  Connect  with IBM Peer 1.0), or security ACLs
448              under Windows NT.  In most cases this will  require
449              special  system privileges, and doubling the option
450              (-XX) under NT instructs unzip  to  use  privileges
451              for extraction; but under Unix, for example, a user
452              who belongs to several  groups  can  restore  files
453              owned  by  any of those groups, as long as the user
454              IDs match his or her own.  Note that ordinary  file
455              attributes are always restored--this option applies
456              only to optional, extra ownership info available on
457              some operating systems.  [NT's access control lists
458              do not appear  to  be  especially  compatible  with
459              OS/2's,  so  no  attempt  is made at cross-platform
460              portability of access privileges.  It is not  clear
461              under  what  conditions  this  would ever be useful
462              anyway.]
463
464       -$     [MS-DOS, OS/2, NT] restore the volume label if  the
465              extraction  medium is removable (e.g., a diskette).
466              Doubling the option (-$$) allows fixed media  (hard
467              disks)  to be labelled as well.  By default, volume
468              labels are ignored.
469
470Info-ZIP             17 February 2002 (v5.5)                    8
471
472UNZIP(1L)                                               UNZIP(1L)
473
474       -/ extensions
475              [Acorn only] overrides the extension list  supplied
476              by  Unzip$Ext  environment variable. During extrac-
477              tion, filename extensions that  match  one  of  the
478              items  in  this extension list are swapped in front
479              of the base name of the extracted file.
480
481       -:     [all but Acorn,  VM/CMS,  MVS,  Tandem]  allows  to
482              extract  archive  members into locations outside of
483              the current `` extraction root folder''. For  secu-
484              rity reasons, unzip normally removes ``parent dir''
485              path  components  (``../'')  from  the   names   of
486              extracted  file.  This safety feature (new for ver-
487              sion 5.50) prevents unzip from accidentally writing
488              files  to  ``sensitive''  areas  outside the active
489              extraction folder tree head.  The  -:  option  lets
490              unzip  switch  back  to  its previous, more liberal
491              behaviour, to allow  exact  extraction  of  (older)
492              archives  that  used  ``../''  components to create
493              multiple directory trees at the level of  the  cur-
494              rent extraction folder.
495
496ENVIRONMENT OPTIONS
497       unzip's  default  behavior  may  be  modified  via options
498       placed in an environment variable.  This can be done  with
499       any  option,  but  it is probably most useful with the -a,
500       -L, -C, -q, -o, or -n modifiers:  make unzip  auto-convert
501       text  files  by  default,  make  it convert filenames from
502       uppercase systems to lowercase, make it match names  case-
503       insensitively,  make  it  quieter, or make it always over-
504       write or never overwrite files as it extracts  them.   For
505       example,  to  make  unzip act as quietly as possible, only
506       reporting errors, one would use one of the following  com-
507       mands:
508
509         Unix Bourne shell:
510              UNZIP=-qq; export UNZIP
511
512         Unix C shell:
513              setenv UNZIP -qq
514
515         OS/2 or MS-DOS:
516              set UNZIP=-qq
517
518         VMS (quotes for lowercase):
519              define UNZIP_OPTS ""-qq""
520
521       Environment  options are, in effect, considered to be just
522       like any other command-line options, except that they  are
523       effectively  the  first  options  on the command line.  To
524       override an environment option, one may  use  the  ``minus
525       operator'' to remove it.  For instance, to override one of
526       the quiet-flags in the example above, use the command
527
528Info-ZIP             17 February 2002 (v5.5)                    9
529
530UNZIP(1L)                                               UNZIP(1L)
531
532           unzip --q[other options] zipfile
533
534       The first hyphen is the normal switch character,  and  the
535       second  is a minus sign, acting on the q option.  Thus the
536       effect here is to cancel one  quantum  of  quietness.   To
537       cancel  both  quiet  flags,  two  (or more) minuses may be
538       used:
539
540           unzip -t--q zipfile
541           unzip ---qt zipfile
542
543       (the two are equivalent).  This may seem awkward  or  con-
544       fusing,  but  it is reasonably intuitive:  just ignore the
545       first hyphen and go from there.   It  is  also  consistent
546       with the behavior of Unix nice(1).
547
548       As  suggested  by the examples above, the default variable
549       names are UNZIP_OPTS for VMS (where  the  symbol  used  to
550       install unzip as a foreign command would otherwise be con-
551       fused with the environment variable), and  UNZIP  for  all
552       other  operating systems.  For compatibility with zip(1L),
553       UNZIPOPT is also accepted (don't ask).  If both UNZIP  and
554       UNZIPOPT  are  defined,  however,  UNZIP takes precedence.
555       unzip's diagnostic option (-v with no zipfile name) can be
556       used  to  check  the values of all four possible unzip and
557       zipinfo environment variables.
558
559       The timezone variable (TZ) should be set according to  the
560       local  timezone in order for the -f and -u to operate cor-
561       rectly.  See the description  of  -f  above  for  details.
562       This  variable  may  also be necessary in order for times-
563       tamps on extracted files to be set correctly.  Under  Win-
564       dows  95/NT unzip should know the correct timezone even if
565       TZ is unset, assuming the timezone is correctly set in the
566       Control Panel.
567
568DECRYPTION
569       Encrypted  archives  are fully supported by Info-ZIP soft-
570       ware,  but  due  to  United  States  export  restrictions,
571       de-/encryption  support might be disabled in your compiled
572       binary.  However, since spring 2000,  US  export  restric-
573       tions  have been liberated, and our source archives do now
574       include full crypt code.  In case you need binary  distri-
575       butions with crypt support enabled, see the file ``WHERE''
576       in any Info-ZIP source or binary  distribution  for  loca-
577       tions both inside and outside the US.
578
579       Some  compiled  versions  of unzip may not support decryp-
580       tion.  To  check  a  version  for  crypt  support,  either
581       attempt  to  test or extract an encrypted archive, or else
582       check unzip's diagnostic screen (see the -v option  above)
583       for  ``[decryption]''  as  one  of the special compilation
584       options.
585
586Info-ZIP             17 February 2002 (v5.5)                   10
587
588UNZIP(1L)                                               UNZIP(1L)
589
590       As noted above, the -P option may  be  used  to  supply  a
591       password  on  the command line, but at a cost in security.
592       The preferred decryption method is simply to extract  nor-
593       mally; if a zipfile member is encrypted, unzip will prompt
594       for the password without echoing  what  is  typed.   unzip
595       continues  to  use the same password as long as it appears
596       to be valid, by testing a 12-byte  header  on  each  file.
597       The  correct  password  will  always check out against the
598       header, but there is a 1-in-256 chance that  an  incorrect
599       password will as well.  (This is a security feature of the
600       PKWARE  zipfile  format;  it  helps  prevent   brute-force
601       attacks  that might otherwise gain a large speed advantage
602       by testing only the header.)  In the case that  an  incor-
603       rect  password is given but it passes the header test any-
604       way, either an incorrect CRC will  be  generated  for  the
605       extracted  data or else unzip will fail during the extrac-
606       tion because the ``decrypted'' bytes do not  constitute  a
607       valid compressed data stream.
608
609       If the first password fails the header check on some file,
610       unzip will prompt for another password, and  so  on  until
611       all  files  are  extracted.   If  a password is not known,
612       entering a null password (that is, just a carriage  return
613       or  ``Enter'')  is  taken  as a signal to skip all further
614       prompting.  Only unencrypted files in the archive(s)  will
615       thereafter be extracted.  (In fact, that's not quite true;
616       older versions of zip(1L) and  zipcloak(1L)  allowed  null
617       passwords,  so  unzip checks each encrypted file to see if
618       the null password works.  This may result in ``false posi-
619       tives'' and extraction errors, as noted above.)
620
621       Archives  encrypted  with  8-bit  passwords  (for example,
622       passwords with accented European characters)  may  not  be
623       portable  across  systems  and/or  other  archivers.  This
624       problem stems from the use of  multiple  encoding  methods
625       for  such  characters,  including Latin-1 (ISO 8859-1) and
626       OEM code page 850.  DOS PKZIP  2.04g  uses  the  OEM  code
627       page;  Windows  PKZIP  2.50 uses Latin-1 (and is therefore
628       incompatible with DOS PKZIP); Info-ZIP uses the  OEM  code
629       page  on DOS, OS/2 and Win3.x ports but Latin-1 everywhere
630       else; and Nico Mak's WinZip 6.x does not allow 8-bit pass-
631       words  at  all.   UnZip 5.3 (or newer) attempts to use the
632       default character set first (e.g., Latin-1),  followed  by
633       the alternate one (e.g., OEM code page) to test passwords.
634       On EBCDIC systems, if both of these fail, EBCDIC  encoding
635       will be tested as a last resort.  (EBCDIC is not tested on
636       non-EBCDIC systems, because there are no  known  archivers
637       that encrypt using EBCDIC encoding.)  ISO character encod-
638       ings other than Latin-1 are not supported.
639
640EXAMPLES
641       To use unzip to extract all members of  the  archive  let-
642       ters.zip  into  the  current  directory and subdirectories
643       below it, creating any subdirectories as necessary:
644
645Info-ZIP             17 February 2002 (v5.5)                   11
646
647UNZIP(1L)                                               UNZIP(1L)
648
649           unzip letters
650
651       To extract all members of  letters.zip  into  the  current
652       directory only:
653
654           unzip -j letters
655
656       To test letters.zip, printing only a summary message indi-
657       cating whether the archive is OK or not:
658
659           unzip -tq letters
660
661       To test all zipfiles in the  current  directory,  printing
662       only the summaries:
663
664           unzip -tq \*.zip
665
666       (The backslash before the asterisk is only required if the
667       shell expands wildcards, as in Unix; double  quotes  could
668       have   been  used  instead,  as  in  the  source  examples
669       below.)  To extract to standard output all members of let-
670       ters.zip  whose  names end in .tex, auto-converting to the
671       local end-of-line convention and piping  the  output  into
672       more(1):
673
674           unzip -ca letters \*.tex | more
675
676       To  extract  the binary file paper1.dvi to standard output
677       and pipe it to a printing program:
678
679           unzip -p articles paper1.dvi | dvips
680
681       To extract all FORTRAN and C source files--*.f, *.c,  *.h,
682       and Makefile--into the /tmp directory:
683
684           unzip source.zip "*.[fch]" Makefile -d /tmp
685
686       (the  double quotes are necessary only in Unix and only if
687       globbing is turned on).  To  extract  all  FORTRAN  and  C
688       source  files, regardless of case (e.g., both *.c and *.C,
689       and any makefile, Makefile, MAKEFILE or similar):
690
691           unzip -C source.zip "*.[fch]" makefile -d /tmp
692
693       To extract any such files but convert any uppercase MS-DOS
694       or  VMS names to lowercase and convert the line-endings of
695       all of the files to the local standard (without respect to
696       any files that might be marked ``binary''):
697
698           unzip -aaCL source.zip "*.[fch]" makefile -d /tmp
699
700       To extract only newer versions of the files already in the
701       current directory, without querying (NOTE:  be careful  of
702       unzipping   in   one   timezone   a   zipfile  created  in
703
704Info-ZIP             17 February 2002 (v5.5)                   12
705
706UNZIP(1L)                                               UNZIP(1L)
707
708       another--ZIP archives other than those created by Zip  2.1
709       or  later contain no timezone information, and a ``newer''
710       file from an eastern timezone may, in fact, be older):
711
712           unzip -fo sources
713
714       To extract newer versions of the files already in the cur-
715       rent  directory  and to create any files not already there
716       (same caveat as previous example):
717
718           unzip -uo sources
719
720       To display a diagnostic screen  showing  which  unzip  and
721       zipinfo  options  are  stored  in  environment  variables,
722       whether decryption support was compiled in,  the  compiler
723       with which unzip was compiled, etc.:
724
725           unzip -v
726
727       In the last five examples, assume that UNZIP or UNZIP_OPTS
728       is set to -q.  To do a singly quiet listing:
729
730           unzip -l file.zip
731
732       To do a doubly quiet listing:
733
734           unzip -ql file.zip
735
736       (Note that the ``.zip'' is generally not  necessary.)   To
737       do a standard listing:
738
739           unzip --ql file.zip
740       or
741           unzip -l-q file.zip
742       or
743           unzip -l--q file.zip
744       (Extra minuses in options don't hurt.)
745
746TIPS
747       The  current  maintainer, being a lazy sort, finds it very
748       useful to define a pair of aliases:  tt for ``unzip  -tq''
749       and  ii  for  ``unzip -Z'' (or ``zipinfo'').  One may then
750       simply type ``tt zipfile'' to test an  archive,  something
751       that  is  worth  making a habit of doing.  With luck unzip
752       will report ``No errors detected  in  compressed  data  of
753       zipfile.zip,''  after  which  one  may  breathe  a sigh of
754       relief.
755
756       The maintainer also finds it useful to set the UNZIP envi-
757       ronment  variable  to ``-aL'' and is tempted to add ``-C''
758       as well.  His ZIPINFO variable is set to ``-z''.
759
760DIAGNOSTICS
761       The exit status (or error  level)  approximates  the  exit
762
763Info-ZIP             17 February 2002 (v5.5)                   13
764
765UNZIP(1L)                                               UNZIP(1L)
766
767       codes defined by PKWARE and takes on the following values,
768       except under VMS:
769
770              0      normal; no errors or warnings detected.
771
772              1      one or more warning errors were encountered,
773                     but  processing  completed successfully any-
774                     way.  This includes zipfiles  where  one  or
775                     more  files  was  skipped due to unsupported
776                     compression method  or  encryption  with  an
777                     unknown password.
778
779              2      a  generic  error  in the zipfile format was
780                     detected.   Processing  may  have  completed
781                     successfully  anyway;  some  broken zipfiles
782                     created by other archivers have simple work-
783                     arounds.
784
785              3      a  severe  error  in  the zipfile format was
786                     detected.  Processing probably failed  imme-
787                     diately.
788
789              4      unzip  was unable to allocate memory for one
790                     or more buffers during  program  initializa-
791                     tion.
792
793              5      unzip  was  unable  to  allocate  memory  or
794                     unable to obtain a tty to read  the  decryp-
795                     tion password(s).
796
797              6      unzip  was  unable to allocate memory during
798                     decompression to disk.
799
800              7      unzip was unable to allocate  memory  during
801                     in-memory decompression.
802
803              8      [currently not used]
804
805              9      the specified zipfiles were not found.
806
807              10     invalid  options  were specified on the com-
808                     mand line.
809
810              11     no matching files were found.
811
812              50     the disk is (or was) full during extraction.
813
814              51     the  end  of the ZIP archive was encountered
815                     prematurely.
816
817              80     the user aborted unzip prematurely with con-
818                     trol-C (or similar)
819
820              81     testing  or  extraction of one or more files
821
822Info-ZIP             17 February 2002 (v5.5)                   14
823
824UNZIP(1L)                                               UNZIP(1L)
825
826                     failed due to unsupported compression  meth-
827                     ods or unsupported decryption.
828
829              82     no  files  were  found due to bad decryption
830                     password(s).  (If even one file is  success-
831                     fully processed, however, the exit status is
832                     1.)
833
834       VMS interprets standard Unix  (or  PC)  return  values  as
835       other,  scarier-looking things, so unzip instead maps them
836       into VMS-style status codes.  The current  mapping  is  as
837       follows:    1  (success)  for  normal exit, 0x7fff0001 for
838       warning    errors,    and    (0x7fff000?     +     16*nor-
839       mal_unzip_exit_status) for all other errors, where the `?'
840       is 2 (error) for unzip values 2, 9-11  and  80-82,  and  4
841       (fatal  error)  for  the remaining ones (3-8, 50, 51).  In
842       addition, there is a compilation  option  to  expand  upon
843       this  behavior:  defining RETURN_CODES results in a human-
844       readable explanation of what the error status means.
845
846BUGS
847       Multi-part archives are not yet supported, except in  con-
848       junction  with  zip.   (All  parts  must  be  concatenated
849       together in order, and then ``zip -F'' must  be  performed
850       on the concatenated archive in order to ``fix'' it.)  This
851       will definitely be corrected in the next major release.
852
853       Archives read from standard input are not  yet  supported,
854       except  with funzip (and then only the first member of the
855       archive can be extracted).
856
857       Archives encrypted with 8-bit passwords  (e.g.,  passwords
858       with  accented  European  characters)  may not be portable
859       across systems and/or other archivers.  See the discussion
860       in DECRYPTION above.
861
862       unzip's  -M  (``more'') option is overly simplistic in its
863       handling of screen output; as noted  above,  it  fails  to
864       detect  the  wrapping  of long lines and may thereby cause
865       lines at the top of the screen to be scrolled  off  before
866       being read.  unzip should detect and treat each occurrence
867       of  line-wrap  as  one  additional  line  printed.    This
868       requires  knowledge  of  the screen's width as well as its
869       height.  In addition, unzip should detect the true  screen
870       geometry on all systems.
871
872       Dates, times and permissions of stored directories are not
873       restored except under Unix.
874
875       [MS-DOS] When extracting or testing files from an  archive
876       on  a defective floppy diskette, if the ``Fail'' option is
877       chosen from DOS's ``Abort, Retry, Fail?''  message,  older
878       versions of unzip may hang the system, requiring a reboot.
879       This problem  appears  to  be  fixed,  but  control-C  (or
880
881Info-ZIP             17 February 2002 (v5.5)                   15
882
883UNZIP(1L)                                               UNZIP(1L)
884
885       control-Break) can still be used to terminate unzip.
886
887       Under  DEC Ultrix, unzip would sometimes fail on long zip-
888       files (bad CRC, not always reproducible).  This was appar-
889       ently  due  either  to a hardware bug (cache memory) or an
890       operating system bug (improper handling of page  faults?).
891       Since  Ultrix  has been abandoned in favor of Digital Unix
892       (OSF/1), this may not be an issue anymore.
893
894       [Unix] Unix special files  such  as  FIFO  buffers  (named
895       pipes),  block  devices  and  character  devices  are  not
896       restored even if they are somehow represented in the  zip-
897       file,  nor  are hard-linked files relinked.  Basically the
898       only file types  restored  by  unzip  are  regular  files,
899       directories and symbolic (soft) links.
900
901       [OS/2]  Extended  attributes  for existing directories are
902       only updated if  the  -o  (``overwrite  all'')  option  is
903       given.   This  is  a  limitation  of the operating system;
904       because directories only have a creation  time  associated
905       with  them,  unzip  has  no  way  to determine whether the
906       stored attributes are newer or older than those  on  disk.
907       In practice this may mean a two-pass approach is required:
908       first unpack the archive normally (with or without  fresh-
909       ening/updating  existing  files),  then overwrite just the
910       directory entries (e.g., ``unzip -o foo */'').
911
912       [VMS] When  extracting  to  another  directory,  only  the
913       [.foo]  syntax  is  accepted for the -d option; the simple
914       Unix foo syntax is silently ignored (as is the less common
915       VMS foo.dir syntax).
916
917       [VMS]  When  the  file  being  extracted  already  exists,
918       unzip's query only allows skipping, overwriting or  renam-
919       ing;  there should additionally be a choice for creating a
920       new version of  the  file.   In  fact,  the  ``overwrite''
921       choice  does  create a new version; the old version is not
922       overwritten or deleted.
923
924SEE ALSO
925       funzip(1L),  zip(1L),  zipcloak(1L),   zipgrep(1L),   zip-
926       info(1L), zipnote(1L), zipsplit(1L)
927
928URL
929       The Info-ZIP home page is currently at
930           http://www.info-zip.org/pub/infozip/
931       or
932           ftp://ftp.info-zip.org/pub/infozip/ .
933
934AUTHORS
935       The  primary Info-ZIP authors (current semi-active members
936       of  the  Zip-Bugs  workgroup)  are:   Greg  ``Cave  Newt''
937       Roelofs  (UnZip);  Onno  van  der  Linden (Zip); Jean-loup
938       Gailly (compression); Mark Adler (decompression,  fUnZip);
939
940Info-ZIP             17 February 2002 (v5.5)                   16
941
942UNZIP(1L)                                               UNZIP(1L)
943
944       Christian  Spieler (UnZip maintance coordination, VMS, MS-
945       DOS, Windows 95, NT, shared code, general  Zip  and  UnZip
946       integration  and  optimization);  Mike White (Windows GUI,
947       Windows DLLs); Kai Uwe Rommel (OS/2); Paul Kienitz (Amiga,
948       Windows  95);  Chris Herborth (BeOS, QNX, Atari); Jonathan
949       Hudson (SMS/QDOS); Sergio Monesi (Acorn RISC  OS);  Harald
950       Denker  (Atari,  MVS);  John Bush (Solaris, Amiga); Hunter
951       Goatley (VMS); Steve Salisbury  (Windows  95,  NT);  Steve
952       Miller  (Windows  CE GUI), Johnny Lee (MS-DOS, Windows 95,
953       NT); and Dave Smith (Tandem NSK).  The author of the orig-
954       inal  unzip code upon which Info-ZIP's was based is Samuel
955       H. Smith; Carl Mascott did the first Unix port; and  David
956       P.   Kirschbaum  organized  and  led Info-ZIP in its early
957       days with Keith Petersen hosting the original mailing list
958       at  WSMR-SimTel20.  The full list of contributors to UnZip
959       has grown quite large; please refer to the  CONTRIBS  file
960       in the UnZip source distribution for a relatively complete
961       version.
962
963VERSIONS
964       v1.2   15 Mar 89   Samuel H. Smith
965       v2.0    9 Sep 89   Samuel H. Smith
966       v2.x   fall 1989   many Usenet contributors
967       v3.0    1 May 90   Info-ZIP (DPK, consolidator)
968       v3.1   15 Aug 90   Info-ZIP (DPK, consolidator)
969       v4.0    1 Dec 90   Info-ZIP (GRR, maintainer)
970       v4.1   12 May 91   Info-ZIP
971       v4.2   20 Mar 92   Info-ZIP (Zip-Bugs subgroup, GRR)
972       v5.0   21 Aug 92   Info-ZIP (Zip-Bugs subgroup, GRR)
973       v5.01  15 Jan 93   Info-ZIP (Zip-Bugs subgroup, GRR)
974       v5.1    7 Feb 94   Info-ZIP (Zip-Bugs subgroup, GRR)
975       v5.11   2 Aug 94   Info-ZIP (Zip-Bugs subgroup, GRR)
976       v5.12  28 Aug 94   Info-ZIP (Zip-Bugs subgroup, GRR)
977       v5.2   30 Apr 96   Info-ZIP (Zip-Bugs subgroup, GRR)
978       v5.3   22 Apr 97   Info-ZIP (Zip-Bugs subgroup, GRR)
979       v5.31  31 May 97   Info-ZIP (Zip-Bugs subgroup, GRR)
980       v5.32   3 Nov 97   Info-ZIP (Zip-Bugs subgroup, GRR)
981       v5.4   28 Nov 98   Info-ZIP (Zip-Bugs subgroup, SPC)
982       v5.41  16 Apr 00   Info-ZIP (Zip-Bugs subgroup, SPC)
983       v5.42  14 Jan 01   Info-ZIP (Zip-Bugs subgroup, SPC)
984       v5.5   17 Feb 02   Info-ZIP (Zip-Bugs subgroup, SPC)
985
986Info-ZIP             17 February 2002 (v5.5)                   17
987
988