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