~ubuntu-branches/ubuntu/dapper/unzip/dapper-security

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
UNZIP(1L)                                               UNZIP(1L)

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

SYNOPSIS
       unzip  [-Z]   [-cflptTuvz[abjnoqsCKLMVWX$/:]]   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).  To specify a verbatim
                     left bracket, the  three-character  sequence
                     ``[[]'' has to be used.

              (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             28 February 2005 (v5.52)                   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 nor-
              mally match (`/') directory separators  (for  exep-
              tions see the option -W, 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  zip-
              file 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

Info-ZIP             28 February 2005 (v5.52)                   2

UNZIP(1L)                                               UNZIP(1L)

              programming interface (API).

       -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

Info-ZIP             28 February 2005 (v5.52)                   3

UNZIP(1L)                                               UNZIP(1L)

              corresponds  to zip's -go option except that it can
              be used on  wildcard  zipfiles  (e.g.,  ``unzip  -T
              \*.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.
              In contrast to most  of  the  competing  utilities,
              unzip  removes  the  12  additional header bytes of
              encrypted entries from the compressed size numbers.
              Therefore,  compressed  size  and compression ratio
              figures are independent of the  entry's  encryption
              status  and  show  the  correct compression perfor-
              mance.  (The complete size  of  the  encryped  com-
              pressed data stream for zipfile entries is reported
              by the more verbose zipinfo(1L)  reports,  see  the
              separate  manual.)   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  operating system for which it was compiled,
              as well as (possibly) the hardware on which it  was
              compiled,  the  compiler  and version used, and the
              compilation date; any special  compilation  options
              that might affect the program's operation (see also
              DECRYPTION below); and any options stored in  envi-
              ronment variables that might do the same (see ENVI-
              RONMENT OPTIONS below).  As a modifier it works  in
              conjunction  with  other options (e.g., -t) to pro-
              duce 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

Info-ZIP             28 February 2005 (v5.52)                   4

UNZIP(1L)                                               UNZIP(1L)

              zipinfo listings, rather than `b') to be  automati-
              cally  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  sys-
              tems  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
              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     use case-insensitive matching for the selection  of
              archive  entries  from  the  command-line  list  of
              extract selection patterns.  unzip's philosophy  is
              ``you  get what you ask for'' (this is also respon-
              sible  for  the  -L/-U  change;  see  the  relevant
              options  below).   Because  some  file  systems are
              fully case-sensitive (notably those under the  Unix
              operating system) and because both ZIP archives and
              unzip itself are portable across platforms, unzip's
              default behavior is to match both wildcard and lit-
              eral filenames case-sensitively.  That is, specify-
              ing  ``makefile''  on  the  command  line will only

Info-ZIP             28 February 2005 (v5.52)                   5

UNZIP(1L)                                               UNZIP(1L)

              match ``makefile'' in the archive, not ``Makefile''
              or  ``MAKEFILE'' (and similarly for wildcard speci-
              fications).  Since this does not correspond to  the
              behavior  of many other operating/file systems (for
              example, OS/2 HPFS, which preserves mixed case  but
              is  not sensitive to it), the -C option may be used
              to force all filename matches to  be  case-insensi-
              tive.   In the example above, all three files would
              then match ``makefile'' (or ``make*'', or similar).
              The -C option affects file specs in both the normal
              file list and the excluded-file list (xlist).

              Please note that the -L option does neither  affect
              the  search  for the zipfile(s) nor the matching of
              archive entries to existing files on the extraction
              path.   On a case-sensitive file system, unzip will
              never try to overwrite a file ``FOO'' when extract-
              ing an entry ``foo''!

       -E     [MacOS  only] display contents of MacOS extra field
              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.

       -K     [AtheOS,  BeOS,  Unix  only] retain SUID/SGID/Tacky
              file  attributes.    Without   this   flag,   these

Info-ZIP             28 February 2005 (v5.52)                   6

UNZIP(1L)                                               UNZIP(1L)

              attribute bits are cleared for security reasons.

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

Info-ZIP             28 February 2005 (v5.52)                   7

UNZIP(1L)                                               UNZIP(1L)

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

       -W     [only  when  WILD_STOP_AT_DIR  compile-time  option
              enabled] modifies the pattern matching  routine  so
              that   both  `?'  (single-char  wildcard)  and  `*'

Info-ZIP             28 February 2005 (v5.52)                   8

UNZIP(1L)                                               UNZIP(1L)

              (multi-char wildcard) do not  match  the  directory
              separator   character   `/'.    (The  two-character
              sequence ``**'' acts as a multi-char wildcard  that
              includes  the  directory  separator  in its matched
              characters.)  Examples:

               "*.c" matches "foo.c" but not "mydir/foo.c"
               "**.c" matches both "foo.c" and "mydir/foo.c"
               "*/*.c" matches "bar/foo.c" but not "baz/bar/foo.c"
               "??*/*" matches "ab/foo" and "abc/foo"
                       but not "a/foo" or "a/b/foo"

              This modified behaviour is equivalent to  the  pat-
              tern  matching  style used by the shells of some of
              UnZip's supported target OSs (one example is  Acorn
              RISC OS).  This option may not be available on sys-
              tems where the Zip archive's interal directory sep-
              arator  character `/' is allowed as regular charac-
              ter in native operating  system  filenames.   (Cur-
              rently,  UnZip uses the same pattern matching rules
              for both wildcard zipfile  specifications  and  zip
              entry  selection  patterns in most ports.  For sys-
              tems allowing `/' as  regular  filename  character,
              the -W option would not work as expected on a wild-
              card zipfile specification.)

       -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             28 February 2005 (v5.52)                   9

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.   This  option  does  not
              enable writing explicitly  to  the  root  directory
              (``/'').   To  achieve this, it is necessary to set
              the extraction target folder to root (e.g. -d /  ).
              However,  when  the  -:  option is specified, it is
              still possible to  implicitly  write  to  the  root
              directory by specifiying enough ``../'' path compo-
              nents within the zip archive.  Use this option with
              extreme caution.

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

Info-ZIP             28 February 2005 (v5.52)                  10

UNZIP(1L)                                               UNZIP(1L)

       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

           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 to get timestamps of
       extracted  files  to  be   set   correctly.    The   WIN32
       (Win9x/ME/NT4/2K/XP/2K3)  port  of unzip gets the timezone
       configuration from the registry, assuming it is  correctly
       set  in the Control Panel.  The TZ variable is ignored for
       this port.

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.

Info-ZIP             28 February 2005 (v5.52)                  11

UNZIP(1L)                                               UNZIP(1L)

       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.

       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

Info-ZIP             28 February 2005 (v5.52)                  12

UNZIP(1L)                                               UNZIP(1L)

       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:

           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

Info-ZIP             28 February 2005 (v5.52)                  13

UNZIP(1L)                                               UNZIP(1L)

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

Info-ZIP             28 February 2005 (v5.52)                  14

UNZIP(1L)                                               UNZIP(1L)

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

Info-ZIP             28 February 2005 (v5.52)                  15

UNZIP(1L)                                               UNZIP(1L)

              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
                     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 tries to  take  into  account
       automatic  wrapping  of  long lines. However, the code may
       fail to detect the correct wrapping locations. First,  TAB
       characters  (and  similar control sequences) are not taken
       into account, they are handled as ordinary printable char-
       acters.  Second, depending on the actual system / OS port,
       unzip may not detect the true screen geometry  but  rather
       rely  on  "commonly used" default dimensions.  The correct
       handling of tabs would require  the  implementation  of  a
       query  for  the  actual tabulator setup on the output con-
       sole.

Info-ZIP             28 February 2005 (v5.52)                  16

UNZIP(1L)                                               UNZIP(1L)

       Dates, times and permissions of stored directories are not
       restored except under Unix. (On Windows NT and successors,
       timestamps are now restored.)

       [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  con-
       trol-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

Info-ZIP             28 February 2005 (v5.52)                  17

UNZIP(1L)                                               UNZIP(1L)

           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:  Ed Gordon  (Zip,  general
       maintenance,  shared  code, Zip64, Win32, Unix); Christian
       Spieler  (UnZip  maintenance  coordination,  VMS,  MS-DOS,
       Win32,  shared code, general Zip and UnZip integration and
       optimization); Onno  van  der  Linden  (Zip);  Mike  White
       (Win32,  Windows GUI, Windows DLLs); Kai Uwe Rommel (OS/2,
       Win32); Steven M. Schweda (VMS, support of new  features);
       Paul  Kienitz  (Amiga,  Win32); 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, Info-ZIP  Site  maintenance);
       Steve  Salisbury  (Win32);  Steve Miller (Windows CE GUI),
       Johnny Lee (MS-DOS, Win32, Zip64); and Dave Smith  (Tandem
       NSK).

       The  following  people were former members of the Info-ZIP
       development group and provided major contributions to  key
       parts  of  the  current  code:  Greg ``Cave Newt'' Roelofs
       (UnZip, unshrink decompression); Jean-loup Gailly (deflate
       compression);  Mark Adler (inflate decompression, fUnZip).

       The author of the original unzip  code  upon  which  Info-
       ZIP's  was  based is Samuel H. Smith; Carl Mascott did the
       first Unix port; and David P.   Kirschbaum  organized  and
       led Info-ZIP in its early days with Keith Petersen hosting
       the original mailing list at WSMR-SimTel20.  The full list
       of  contributors  to  UnZip  has grown quite large; please
       refer to the CONTRIBS file in the UnZip  source  distribu-
       tion 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)

Info-ZIP             28 February 2005 (v5.52)                  18

UNZIP(1L)                                               UNZIP(1L)

       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)
       v5.51  22 May 04   Info-ZIP (Zip-Bugs subgroup, SPC)
       v5.52  28 Feb 05   Info-ZIP (Zip-Bugs subgroup, SPC)

Info-ZIP             28 February 2005 (v5.52)                  19