mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-01 23:40:28 +00:00
Add Info-ZIP unzip.com
This commit is contained in:
parent
1531f1a4a7
commit
af4687cc3f
55 changed files with 36744 additions and 2 deletions
436
third_party/unzip/zipinfo.txt
vendored
Normal file
436
third_party/unzip/zipinfo.txt
vendored
Normal file
|
@ -0,0 +1,436 @@
|
|||
ZIPINFO(1L) ZIPINFO(1L)
|
||||
|
||||
NAME
|
||||
zipinfo - list detailed information about a ZIP archive
|
||||
|
||||
SYNOPSIS
|
||||
zipinfo [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
|
||||
|
||||
unzip -Z [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
|
||||
|
||||
DESCRIPTION
|
||||
zipinfo lists technical information about files in a ZIP archive, most
|
||||
commonly found on MS-DOS systems. Such information includes file
|
||||
access permissions, encryption status, type of compression, version and
|
||||
operating system or file system of compressing program, and the like.
|
||||
The default behavior (with no options) is to list single-line entries
|
||||
for each file in the archive, with header and trailer lines providing
|
||||
summary information for the entire archive. The format is a cross
|
||||
between Unix ``ls -l'' and ``unzip -v'' output. See DETAILED DESCRIP-
|
||||
TION below. Note that zipinfo is the same program as unzip (under
|
||||
Unix, a link to it); on some systems, however, zipinfo support may have
|
||||
been omitted when unzip was compiled.
|
||||
|
||||
ARGUMENTS
|
||||
file[.zip]
|
||||
Path of the ZIP archive(s). If the file specification is a
|
||||
wildcard, each matching file is processed in an order determined
|
||||
by the operating system (or file system). Only the filename can
|
||||
be a wildcard; the path itself cannot. Wildcard expressions are
|
||||
similar to Unix egrep(1) (regular) expressions 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 otherwise be inter-
|
||||
preted 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.
|
||||
|
||||
[file(s)]
|
||||
An optional list of archive members to be processed, separated
|
||||
by spaces. (VMS versions compiled with VMSCLI defined must
|
||||
delimit files with commas instead.) Regular expressions (wild-
|
||||
cards) may be used to match multiple members; see above. Again,
|
||||
be sure to quote expressions that would otherwise be expanded or
|
||||
modified by the operating system.
|
||||
|
||||
[-x xfile(s)]
|
||||
An optional list of archive members to be excluded from process-
|
||||
ing.
|
||||
|
||||
OPTIONS
|
||||
-1 list filenames only, one per line. This option excludes all
|
||||
others; headers, trailers and zipfile comments are never
|
||||
printed. It is intended for use in Unix shell scripts.
|
||||
|
||||
-2 list filenames only, one per line, but allow headers (-h),
|
||||
trailers (-t) and zipfile comments (-z), as well. This option
|
||||
may be useful in cases where the stored filenames are particu-
|
||||
larly long.
|
||||
|
||||
-s list zipfile info in short Unix ``ls -l'' format. This is the
|
||||
default behavior; see below.
|
||||
|
||||
-m list zipfile info in medium Unix ``ls -l'' format. Identical to
|
||||
the -s output, except that the compression factor, expressed as
|
||||
a percentage, is also listed.
|
||||
|
||||
-l list zipfile info in long Unix ``ls -l'' format. As with -m
|
||||
except that the compressed size (in bytes) is printed instead of
|
||||
the compression ratio.
|
||||
|
||||
-v list zipfile information in verbose, multi-page format.
|
||||
|
||||
-h list header line. The archive name, actual size (in bytes) and
|
||||
total number of files is printed.
|
||||
|
||||
-M pipe all output through an internal pager similar to the Unix
|
||||
more(1) command. At the end of a screenful of output, zipinfo
|
||||
pauses with a ``--More--'' prompt; the next screenful may be
|
||||
viewed by pressing the Enter (Return) key or the space bar.
|
||||
zipinfo 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, zipinfo 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 likeli-
|
||||
hood that some text will scroll off the top of the screen before
|
||||
being viewed. On some systems the number of available lines on
|
||||
the screen is not detected, in which case zipinfo assumes the
|
||||
height is 24 lines.
|
||||
|
||||
-t list totals for files listed or for all files. The number of
|
||||
files listed, their uncompressed and compressed total sizes ,
|
||||
and their overall compression factor is printed; or, if only the
|
||||
totals line is being printed, the values for the entire archive
|
||||
are given. The compressed total size does not include the 12
|
||||
additional header bytes of each encrypted entry. Note that the
|
||||
total compressed (data) size will never match the actual zipfile
|
||||
size, since the latter includes all of the internal zipfile
|
||||
headers in addition to the compressed data.
|
||||
|
||||
-T print the file dates and times in a sortable decimal format
|
||||
(yymmdd.hhmmss). The default date format is a more standard,
|
||||
human-readable version with abbreviated month names (see exam-
|
||||
ples below).
|
||||
|
||||
-U [UNICODE_SUPPORT only] modify or disable UTF-8 handling. When
|
||||
UNICODE_SUPPORT is available, the option -U forces unzip to
|
||||
escape all non-ASCII characters from UTF-8 coded filenames as
|
||||
``#Uxxxx''. This option is mainly provided for debugging pur-
|
||||
pose when the fairly new UTF-8 support is suspected to mangle up
|
||||
extracted filenames.
|
||||
|
||||
The option -UU allows to entirely disable the recognition of
|
||||
UTF-8 encoded filenames. The handling of filename codings
|
||||
within unzip falls back to the behaviour of previous versions.
|
||||
|
||||
-z include the archive comment (if any) in the listing.
|
||||
|
||||
DETAILED DESCRIPTION
|
||||
zipinfo has a number of modes, and its behavior can be rather difficult
|
||||
to fathom if one isn't familiar with Unix ls(1) (or even if one is).
|
||||
The default behavior is to list files in the following format:
|
||||
|
||||
-rw-rws--- 1.9 unx 2802 t- defX 11-Aug-91 13:48 perms.2660
|
||||
|
||||
The last three fields are the modification date and time of the file,
|
||||
and its name. The case of the filename is respected; thus files that
|
||||
come from MS-DOS PKZIP are always capitalized. If the file was zipped
|
||||
with a stored directory name, that is also displayed as part of the
|
||||
filename.
|
||||
|
||||
The second and third fields indicate that the file was zipped under
|
||||
Unix with version 1.9 of zip. Since it comes from Unix, the file per-
|
||||
missions at the beginning of the line are printed in Unix format. The
|
||||
uncompressed file-size (2802 in this example) is the fourth field.
|
||||
|
||||
The fifth field consists of two characters, either of which may take on
|
||||
several values. The first character may be either `t' or `b', indicat-
|
||||
ing that zip believes the file to be text or binary, respectively; but
|
||||
if the file is encrypted, zipinfo notes this fact by capitalizing the
|
||||
character (`T' or `B'). The second character may also take on four
|
||||
values, depending on whether there is an extended local header and/or
|
||||
an ``extra field'' associated with the file (fully explained in
|
||||
PKWare's APPNOTE.TXT, but basically analogous to pragmas in ANSI
|
||||
C--i.e., they provide a standard way to include non-standard informa-
|
||||
tion in the archive). If neither exists, the character will be a
|
||||
hyphen (`-'); if there is an extended local header but no extra field,
|
||||
`l'; if the reverse, `x'; and if both exist, `X'. Thus the file in
|
||||
this example is (probably) a text file, is not encrypted, and has nei-
|
||||
ther an extra field nor an extended local header associated with it.
|
||||
The example below, on the other hand, is an encrypted binary file with
|
||||
an extra field:
|
||||
|
||||
RWD,R,R 0.9 vms 168 Bx shrk 9-Aug-91 19:15 perms.0644
|
||||
|
||||
Extra fields are used for various purposes (see discussion of the -v
|
||||
option below) including the storage of VMS file attributes, which is
|
||||
presumably the case here. Note that the file attributes are listed in
|
||||
VMS format. Some other possibilities for the host operating system
|
||||
(which is actually a misnomer--host file system is more correct)
|
||||
include OS/2 or NT with High Performance File System (HPFS), MS-DOS,
|
||||
OS/2 or NT with File Allocation Table (FAT) file system, and Macintosh.
|
||||
These are denoted as follows:
|
||||
|
||||
-rw-a-- 1.0 hpf 5358 Tl i4:3 4-Dec-91 11:33 longfilename.hpfs
|
||||
-r--ahs 1.1 fat 4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF
|
||||
--w------- 1.0 mac 17357 bx i8:2 4-May-92 04:02 unzip.macr
|
||||
|
||||
File attributes in the first two cases are indicated in a Unix-like
|
||||
format, where the seven subfields indicate whether the file: (1) is a
|
||||
directory, (2) is readable (always true), (3) is writable, (4) is exe-
|
||||
cutable (guessed on the basis of the extension--.exe, .com, .bat, .cmd
|
||||
and .btm files are assumed to be so), (5) has its archive bit set, (6)
|
||||
is hidden, and (7) is a system file. Interpretation of Macintosh file
|
||||
attributes is unreliable because some Macintosh archivers don't store
|
||||
any attributes in the archive.
|
||||
|
||||
Finally, the sixth field indicates the compression method and possible
|
||||
sub-method used. There are six methods known at present: storing (no
|
||||
compression), reducing, shrinking, imploding, tokenizing (never pub-
|
||||
licly released), and deflating. In addition, there are four levels of
|
||||
reducing (1 through 4); four types of imploding (4K or 8K sliding dic-
|
||||
tionary, and 2 or 3 Shannon-Fano trees); and four levels of deflating
|
||||
(superfast, fast, normal, maximum compression). zipinfo represents
|
||||
these methods and their sub-methods as follows: stor; re:1, re:2,
|
||||
etc.; shrk; i4:2, i8:3, etc.; tokn; and defS, defF, defN, and defX.
|
||||
|
||||
The medium and long listings are almost identical to the short format
|
||||
except that they add information on the file's compression. The medium
|
||||
format lists the file's compression factor as a percentage indicating
|
||||
the amount of space that has been ``removed'':
|
||||
|
||||
-rw-rws--- 1.5 unx 2802 t- 81% defX 11-Aug-91 13:48 perms.2660
|
||||
|
||||
In this example, the file has been compressed by more than a factor of
|
||||
five; the compressed data are only 19% of the original size. The long
|
||||
format gives the compressed file's size in bytes, instead:
|
||||
|
||||
-rw-rws--- 1.5 unx 2802 t- 538 defX 11-Aug-91 13:48 perms.2660
|
||||
|
||||
In contrast to the unzip listings, the compressed size figures in this
|
||||
listing format denote the complete size of compressed data, including
|
||||
the 12 extra header bytes in case of encrypted entries.
|
||||
|
||||
Adding the -T option changes the file date and time to decimal format:
|
||||
|
||||
-rw-rws--- 1.5 unx 2802 t- 538 defX 910811.134804 perms.2660
|
||||
|
||||
Note that because of limitations in the MS-DOS format used to store
|
||||
file times, the seconds field is always rounded to the nearest even
|
||||
second. For Unix files this is expected to change in the next major
|
||||
releases of zip(1L) and unzip.
|
||||
|
||||
In addition to individual file information, a default zipfile listing
|
||||
also includes header and trailer lines:
|
||||
|
||||
Archive: OS2.zip 5453 bytes 5 files
|
||||
,,rw, 1.0 hpf 730 b- i4:3 26-Jun-92 23:40 Contents
|
||||
,,rw, 1.0 hpf 3710 b- i4:3 26-Jun-92 23:33 makefile.os2
|
||||
,,rw, 1.0 hpf 8753 b- i8:3 26-Jun-92 15:29 os2unzip.c
|
||||
,,rw, 1.0 hpf 98 b- stor 21-Aug-91 15:34 unzip.def
|
||||
,,rw, 1.0 hpf 95 b- stor 21-Aug-91 17:51 zipinfo.def
|
||||
5 files, 13386 bytes uncompressed, 4951 bytes compressed: 63.0%
|
||||
|
||||
The header line gives the name of the archive, its total size, and the
|
||||
total number of files; the trailer gives the number of files listed,
|
||||
their total uncompressed size, and their total compressed size (not
|
||||
including any of zip's internal overhead). If, however, one or more
|
||||
file(s) are provided, the header and trailer lines are not listed.
|
||||
This behavior is also similar to that of Unix's ``ls -l''; it may be
|
||||
overridden by specifying the -h and -t options explicitly. In such a
|
||||
case the listing format must also be specified explicitly, since -h or
|
||||
-t (or both) in the absence of other options implies that ONLY the
|
||||
header or trailer line (or both) is listed. See the EXAMPLES section
|
||||
below for a semi-intelligible translation of this nonsense.
|
||||
|
||||
The verbose listing is mostly self-explanatory. It also lists file
|
||||
comments and the zipfile comment, if any, and the type and number of
|
||||
bytes in any stored extra fields. Currently known types of extra
|
||||
fields include PKWARE's authentication (``AV'') info; OS/2 extended
|
||||
attributes; VMS filesystem info, both PKWARE and Info-ZIP versions;
|
||||
Macintosh resource forks; Acorn/Archimedes SparkFS info; and so on.
|
||||
(Note that in the case of OS/2 extended attributes--perhaps the most
|
||||
common use of zipfile extra fields--the size of the stored EAs as
|
||||
reported by zipinfo may not match the number given by OS/2's dir com-
|
||||
mand: OS/2 always reports the number of bytes required in 16-bit for-
|
||||
mat, whereas zipinfo always reports the 32-bit storage.)
|
||||
|
||||
Again, the compressed size figures of the individual entries include
|
||||
the 12 extra header bytes for encrypted entries. In contrast, the
|
||||
archive total compressed size and the average compression ratio shown
|
||||
in the summary bottom line are calculated without the extra 12 header
|
||||
bytes of encrypted entries.
|
||||
|
||||
ENVIRONMENT OPTIONS
|
||||
Modifying zipinfo's default behavior via options placed in an environ-
|
||||
ment variable can be a bit complicated to explain, due to zipinfo's
|
||||
attempts to handle various defaults in an intuitive, yet Unix-like,
|
||||
manner. (Try not to laugh.) Nevertheless, there is some underlying
|
||||
logic. In brief, there are three ``priority levels'' of options: the
|
||||
default options; environment options, which can override or add to the
|
||||
defaults; and explicit options given by the user, which can override or
|
||||
add to either of the above.
|
||||
|
||||
The default listing format, as noted above, corresponds roughly to the
|
||||
"zipinfo -hst" command (except when individual zipfile members are
|
||||
specified). A user who prefers the long-listing format (-l) can make
|
||||
use of the zipinfo's environment variable to change this default:
|
||||
|
||||
Unix Bourne shell:
|
||||
ZIPINFO=-l; export ZIPINFO
|
||||
|
||||
Unix C shell:
|
||||
setenv ZIPINFO -l
|
||||
|
||||
OS/2 or MS-DOS:
|
||||
set ZIPINFO=-l
|
||||
|
||||
VMS (quotes for lowercase):
|
||||
define ZIPINFO_OPTS "-l"
|
||||
|
||||
If, in addition, the user dislikes the trailer line, zipinfo's concept
|
||||
of ``negative options'' may be used to override the default inclusion
|
||||
of the line. This is accomplished by preceding the undesired option
|
||||
with one or more minuses: e.g., ``-l-t'' or ``--tl'', in this example.
|
||||
The first hyphen is the regular switch character, but the one before
|
||||
the `t' is a minus sign. The dual use of hyphens may seem a little
|
||||
awkward, but it's reasonably intuitive nonetheless: simply ignore the
|
||||
first hyphen and go from there. It is also consistent with the behav-
|
||||
ior of the Unix command nice(1).
|
||||
|
||||
As suggested above, the default variable names are ZIPINFO_OPTS for VMS
|
||||
(where the symbol used to install zipinfo as a foreign command would
|
||||
otherwise be confused with the environment variable), and ZIPINFO for
|
||||
all other operating systems. For compatibility with zip(1L), ZIPIN-
|
||||
FOOPT is also accepted (don't ask). If both ZIPINFO and ZIPINFOOPT are
|
||||
defined, however, ZIPINFO 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.
|
||||
|
||||
EXAMPLES
|
||||
To get a basic, short-format listing of the complete contents of a ZIP
|
||||
archive storage.zip, with both header and totals lines, use only the
|
||||
archive name as an argument to zipinfo:
|
||||
|
||||
zipinfo storage
|
||||
|
||||
To produce a basic, long-format listing (not verbose), including header
|
||||
and totals lines, use -l:
|
||||
|
||||
zipinfo -l storage
|
||||
|
||||
To list the complete contents of the archive without header and totals
|
||||
lines, either negate the -h and -t options or else specify the contents
|
||||
explicitly:
|
||||
|
||||
zipinfo --h-t storage
|
||||
zipinfo storage \*
|
||||
|
||||
(where the backslash is required only if the shell would otherwise
|
||||
expand the `*' wildcard, as in Unix when globbing is turned on--double
|
||||
quotes around the asterisk would have worked as well). To turn off the
|
||||
totals line by default, use the environment variable (C shell is
|
||||
assumed here):
|
||||
|
||||
setenv ZIPINFO --t
|
||||
zipinfo storage
|
||||
|
||||
To get the full, short-format listing of the first example again, given
|
||||
that the environment variable is set as in the previous example, it is
|
||||
necessary to specify the -s option explicitly, since the -t option by
|
||||
itself implies that ONLY the footer line is to be printed:
|
||||
|
||||
setenv ZIPINFO --t
|
||||
zipinfo -t storage [only totals line]
|
||||
zipinfo -st storage [full listing]
|
||||
|
||||
The -s option, like -m and -l, includes headers and footers by default,
|
||||
unless otherwise specified. Since the environment variable specified
|
||||
no footers and that has a higher precedence than the default behavior
|
||||
of -s, an explicit -t option was necessary to produce the full listing.
|
||||
Nothing was indicated about the header, however, so the -s option was
|
||||
sufficient. Note that both the -h and -t options, when used by them-
|
||||
selves or with each other, override any default listing of member
|
||||
files; only the header and/or footer are printed. This behavior is
|
||||
useful when zipinfo is used with a wildcard zipfile specification; the
|
||||
contents of all zipfiles are then summarized with a single command.
|
||||
|
||||
To list information on a single file within the archive, in medium for-
|
||||
mat, specify the filename explicitly:
|
||||
|
||||
zipinfo -m storage unshrink.c
|
||||
|
||||
The specification of any member file, as in this example, will override
|
||||
the default header and totals lines; only the single line of informa-
|
||||
tion about the requested file will be printed. This is intuitively
|
||||
what one would expect when requesting information about a single file.
|
||||
For multiple files, it is often useful to know the total compressed and
|
||||
uncompressed size; in such cases -t may be specified explicitly:
|
||||
|
||||
zipinfo -mt storage "*.[ch]" Mak\*
|
||||
|
||||
To get maximal information about the ZIP archive, use the verbose
|
||||
option. It is usually wise to pipe the output into a filter such as
|
||||
Unix more(1) if the operating system allows it:
|
||||
|
||||
zipinfo -v storage | more
|
||||
|
||||
Finally, to see the most recently modified files in the archive, use
|
||||
the -T option in conjunction with an external sorting utility such as
|
||||
Unix sort(1) (and sed(1) as well, in this example):
|
||||
|
||||
zipinfo -T storage | sort -nr -k 7 | sed 15q
|
||||
|
||||
The -nr option to sort(1) tells it to sort numerically in reverse order
|
||||
rather than in textual order, and the -k 7 option tells it to sort on
|
||||
the seventh field. This assumes the default short-listing format; if
|
||||
-m or -l is used, the proper sort(1) option would be -k 8. Older ver-
|
||||
sions of sort(1) do not support the -k option, but you can use the
|
||||
traditional + option instead, e.g., +6 instead of -k 7. The sed(1)
|
||||
command filters out all but the first 15 lines of the listing. Future
|
||||
releases of zipinfo may incorporate date/time and filename sorting as
|
||||
built-in options.
|
||||
|
||||
TIPS
|
||||
The author finds it convenient to define an alias ii for zipinfo on
|
||||
systems that allow aliases (or, on other systems, copy/rename the exe-
|
||||
cutable, create a link or create a command file with the name ii). The
|
||||
ii usage parallels the common ll alias for long listings in Unix, and
|
||||
the similarity between the outputs of the two commands was intentional.
|
||||
|
||||
BUGS
|
||||
As with unzip, zipinfo's -M (``more'') option is overly simplistic in
|
||||
its handling of screen output; as noted above, it fails to detect the
|
||||
wrapping of long lines and may thereby cause lines at the top of the
|
||||
screen to be scrolled off before being read. zipinfo should detect and
|
||||
treat each occurrence of line-wrap as one additional line printed.
|
||||
This requires knowledge of the screen's width as well as its height.
|
||||
In addition, zipinfo should detect the true screen geometry on all sys-
|
||||
tems.
|
||||
|
||||
zipinfo's listing-format behavior is unnecessarily complex and should
|
||||
be simplified. (This is not to say that it will be.)
|
||||
|
||||
SEE ALSO
|
||||
ls(1), funzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), zip-
|
||||
note(1L), zipsplit(1L)
|
||||
|
||||
URL
|
||||
The Info-ZIP home page is currently at
|
||||
http://www.info-zip.org/pub/infozip/
|
||||
or
|
||||
ftp://ftp.info-zip.org/pub/infozip/ .
|
||||
|
||||
AUTHOR
|
||||
Greg ``Cave Newt'' Roelofs. ZipInfo contains pattern-matching code by
|
||||
Mark Adler and fixes/improvements by many others. Please refer to the
|
||||
CONTRIBS file in the UnZip source distribution for a more complete
|
||||
list.
|
||||
|
||||
Info-ZIP 20 April 2009 (v3.0) ZIPINFO(1L)
|
Loading…
Add table
Add a link
Reference in a new issue