mirror of https://github.com/BOINC/boinc.git
343 lines
15 KiB
Plaintext
343 lines
15 KiB
Plaintext
|
|
UNZIPSFX(1L) UNZIPSFX(1L)
|
|
|
|
NAME
|
|
unzipsfx - self-extracting stub for prepending to ZIP
|
|
archives
|
|
|
|
SYNOPSIS
|
|
<name of unzipsfx+archive combo> [-cfptuz[ajnoqsCLV$]]
|
|
[file(s) ... [-x xfile(s) ...]]
|
|
|
|
DESCRIPTION
|
|
unzipsfx is a modified version of unzip(1L) designed to be
|
|
prepended to existing ZIP archives in order to form self-
|
|
extracting archives. Instead of taking its first non-flag
|
|
argument to be the zipfile(s) to be extracted, unzipsfx
|
|
seeks itself under the name by which it was invoked and
|
|
tests or extracts the contents of the appended archive.
|
|
Because the executable stub adds bulk to the archive (the
|
|
whole purpose of which is to be as small as possible), a
|
|
number of the less-vital capabilities in regular unzip
|
|
have been removed. Among these are the usage (or help)
|
|
screen, the listing and diagnostic functions (-l and -v),
|
|
the ability to decompress older compression formats (the
|
|
``reduce,'' ``shrink'' and ``implode'' methods). The
|
|
ability to extract to a directory other than the current
|
|
one can be selected as a compile-time option, which is now
|
|
enabled by default since UnZipSFX version 5.5. Similary,
|
|
decryption is supported as a compile-time option but
|
|
should be avoided unless the attached archive contains
|
|
encrypted files. Starting with release 5.5, another com-
|
|
pile-time option adds a simple ``run command after extrac-
|
|
tion'' feature. This feature is currently incompatible
|
|
with the ``extract to different directory'' feature and
|
|
remains disabled by default.
|
|
|
|
Note that self-extracting archives made with unzipsfx are
|
|
no more (or less) portable across different operating sys-
|
|
tems than is the unzip executable itself. In general a
|
|
self-extracting archive made on a particular Unix system,
|
|
for example, will only self-extract under the same flavor
|
|
of Unix. Regular unzip may still be used to extract the
|
|
embedded archive as with any normal zipfile, although it
|
|
will generate a harmless warning about extra bytes at the
|
|
beginning of the zipfile. Despite this, however, the
|
|
self-extracting archive is technically not a valid ZIP
|
|
archive, and PKUNZIP may be unable to test or extract it.
|
|
This limitation is due to the simplistic manner in which
|
|
the archive is created; the internal directory structure
|
|
is not updated to reflect the extra bytes prepended to the
|
|
original zipfile.
|
|
|
|
ARGUMENTS
|
|
[file(s)]
|
|
An optional list of archive members to be pro-
|
|
cessed. Regular expressions (wildcards) similar to
|
|
those in Unix egrep(1) may be used to match
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 1
|
|
|
|
UNZIPSFX(1L) UNZIPSFX(1L)
|
|
|
|
multiple members. These wildcards may contain:
|
|
|
|
* matches a sequence of 0 or more characters
|
|
|
|
? matches exactly 1 character
|
|
|
|
[...] matches any single character found inside
|
|
the brackets; ranges are specified by a
|
|
beginning character, a hyphen, and an ending
|
|
character. If an exclamation point or a
|
|
caret (`!' or `^') follows the left bracket,
|
|
then the range of characters within the
|
|
brackets is complemented (that is, anything
|
|
except the characters inside the brackets is
|
|
considered a match).
|
|
|
|
(Be sure to quote any character that might other-
|
|
wise be interpreted or modified by the operating
|
|
system, particularly under Unix and VMS.)
|
|
|
|
[-x xfile(s)]
|
|
An optional list of archive members to be excluded
|
|
from processing. Since wildcard characters match
|
|
directory separators (`/'), this option may be used
|
|
to exclude any files that are in subdirectories.
|
|
For example, ``foosfx *.[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.
|
|
|
|
If unzipsfx is compiled with SFX_EXDIR defined, the fol-
|
|
lowing option is also enabled:
|
|
|
|
[-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).
|
|
The option and directory may be concatenated with-
|
|
out any white space between them, but note that
|
|
this may cause normal shell behavior to be sup-
|
|
pressed. In particular, ``-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 direc-
|
|
tory.
|
|
|
|
OPTIONS
|
|
unzipsfx supports the following unzip(1L) options: -c and
|
|
-p (extract to standard output/screen), -f and -u (freshen
|
|
and update existing files upon extraction), -t (test
|
|
archive) and -z (print archive comment). All normal
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 2
|
|
|
|
UNZIPSFX(1L) UNZIPSFX(1L)
|
|
|
|
listing options (-l, -v and -Z) have been removed, but the
|
|
testing option (-t) may be used as a ``poor man's'' list-
|
|
ing. Alternatively, those creating self-extracting
|
|
archives may wish to include a short listing in the zip-
|
|
file comment.
|
|
|
|
See unzip(1L) for a more complete description of these
|
|
options.
|
|
|
|
MODIFIERS
|
|
unzipsfx currently supports all unzip(1L) modifiers: -a
|
|
(convert text files), -n (never overwrite), -o (overwrite
|
|
without prompting), -q (operate quietly), -C (match names
|
|
case-insensitively), -L (convert uppercase-OS names to
|
|
lowercase), -j (junk paths) and -V (retain version num-
|
|
bers); plus the following operating-system specific
|
|
options: -X (restore VMS owner/protection info), -s (con-
|
|
vert spaces in filenames to underscores [DOS, OS/2, NT])
|
|
and -$ (restore volume label [DOS, OS/2, NT, Amiga]).
|
|
|
|
(Support for regular ASCII text-conversion may be removed
|
|
in future versions, since it is simple enough for the
|
|
archive's creator to ensure that text files have the
|
|
appropriate format for the local OS. EBCDIC conversion
|
|
will of course continue to be supported since the zipfile
|
|
format implies ASCII storage of text files.)
|
|
|
|
See unzip(1L) for a more complete description of these
|
|
modifiers.
|
|
|
|
ENVIRONMENT OPTIONS
|
|
unzipsfx uses the same environment variables as unzip(1L)
|
|
does, although this is likely to be an issue only for the
|
|
person creating and testing the self-extracting archive.
|
|
See unzip(1L) for details.
|
|
|
|
DECRYPTION
|
|
Decryption is supported exactly as in unzip(1L); that is,
|
|
interactively with a non-echoing prompt for the pass-
|
|
word(s). See unzip(1L) for details. Once again, note
|
|
that if the archive has no encrypted files there is no
|
|
reason to use a version of unzipsfx with decryption sup-
|
|
port; that only adds to the size of the archive.
|
|
|
|
AUTORUN COMMAND
|
|
When unzipsfx was compiled with CHEAP_SFX_AUTORUN defined,
|
|
a simple ``command autorun'' feature is supported. You may
|
|
enter a command into the Zip archive comment, using the
|
|
following format:
|
|
|
|
$AUTORUN$>[command line string]
|
|
|
|
When unzipsfxP recognizes the ``$AUTORUN$>'' token at the
|
|
beginning of the Zip archive comment, the remainder of the
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 3
|
|
|
|
UNZIPSFX(1L) UNZIPSFX(1L)
|
|
|
|
first line of the comment (until the first newline charac-
|
|
ter) is passed as a shell command to the operating system
|
|
using the C rtl ``system'' function. Before executing the
|
|
command, unzipsfxP displays the command on the console and
|
|
prompts the user for confirmation. When the user has
|
|
switched off prompting by specifying the -q option,
|
|
autorun commands are never executed.
|
|
|
|
In case the archive comment contains additonal lines of
|
|
text, the remainder of the archive comment following the
|
|
first line is displayed normally, unless quiet operation
|
|
was requested by supplying a -q option.
|
|
|
|
EXAMPLES
|
|
To create a self-extracting archive letters from a regular
|
|
zipfile letters.zip and change the new archive's permis-
|
|
sions to be world-executable under Unix:
|
|
|
|
cat unzipsfx letters.zip > letters
|
|
chmod 755 letters
|
|
zip -A letters
|
|
|
|
To create the same archive under MS-DOS, OS/2 or NT (note
|
|
the use of the /b [binary] option to the copy command):
|
|
|
|
copy /b unzipsfx.exe+letters.zip letters.exe
|
|
zip -A letters.exe
|
|
|
|
Under VMS:
|
|
|
|
copy unzipsfx.exe,letters.zip letters.exe
|
|
letters == "$currentdisk:[currentdir]letters.exe"
|
|
zip -A letters.exe
|
|
|
|
(The VMS append command may also be used. The second com-
|
|
mand installs the new program as a ``foreign command''
|
|
capable of taking arguments. The third line assumes that
|
|
Zip is already installed as a foreign command.) Under
|
|
AmigaDOS:
|
|
|
|
MakeSFX letters letters.zip UnZipSFX
|
|
|
|
(MakeSFX is included with the UnZip source distribution
|
|
and with Amiga binary distributions. ``zip -A'' doesn't
|
|
work on Amiga self-extracting archives.) To test (or
|
|
list) the newly created self-extracting archive:
|
|
|
|
letters -t
|
|
|
|
To test letters quietly, printing only a summary message
|
|
indicating whether the archive is OK or not:
|
|
|
|
letters -tqq
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 4
|
|
|
|
UNZIPSFX(1L) UNZIPSFX(1L)
|
|
|
|
To extract the complete contents into the current direc-
|
|
tory, recreating all files and subdirectories as neces-
|
|
sary:
|
|
|
|
letters
|
|
|
|
To extract all *.txt files (in Unix quote the `*'):
|
|
|
|
letters *.txt
|
|
|
|
To extract everything except the *.txt files:
|
|
|
|
letters -x *.txt
|
|
|
|
To extract only the README file to standard output (the
|
|
screen):
|
|
|
|
letters -c README
|
|
|
|
To print only the zipfile comment:
|
|
|
|
letters -z
|
|
|
|
LIMITATIONS
|
|
The principle and fundamental limitation of unzipsfx is
|
|
that it is not portable across architectures or operating
|
|
systems, and therefore neither are the resulting archives.
|
|
For some architectures there is limited portability, how-
|
|
ever (e.g., between some flavors of Intel-based Unix).
|
|
|
|
Another problem with the current implementation is that
|
|
any archive with ``junk'' prepended to the beginning tech-
|
|
nically is no longer a zipfile (unless zip(1) is used to
|
|
adjust the zipfile offsets appropriately, as noted above).
|
|
unzip(1) takes note of the prepended bytes and ignores
|
|
them since some file-transfer protocols, notably MacBi-
|
|
nary, are also known to prepend junk. But PKWARE's
|
|
archiver suite may not be able to deal with the modified
|
|
archive unless its offsets have been adjusted.
|
|
|
|
unzipsfx has no knowledge of the user's PATH, so in gen-
|
|
eral an archive must either be in the current directory
|
|
when it is invoked, or else a full or relative path must
|
|
be given. If a user attempts to extract the archive from
|
|
a directory in the PATH other than the current one,
|
|
unzipsfx will print a warning to the effect, ``can't find
|
|
myself.'' This is always true under Unix and may be true
|
|
in some cases under MS-DOS, depending on the compiler used
|
|
(Microsoft C fully qualifies the program name, but other
|
|
compilers may not). Under OS/2 and NT there are operat-
|
|
ing-system calls available that provide the full path
|
|
name, so the archive may be invoked from anywhere in the
|
|
user's path. The situation is not known for AmigaDOS,
|
|
Atari TOS, MacOS, etc.
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 5
|
|
|
|
UNZIPSFX(1L) UNZIPSFX(1L)
|
|
|
|
As noted above, a number of the normal unzip(1L) functions
|
|
have been removed in order to make unzipsfx smaller:
|
|
usage and diagnostic info, listing functions and extrac-
|
|
tion to other directories. Also, only stored and deflated
|
|
files are supported. The latter limitation is mainly rel-
|
|
evant to those who create SFX archives, however.
|
|
|
|
VMS users must know how to set up self-extracting archives
|
|
as foreign commands in order to use any of unzipsfx's
|
|
options. This is not necessary for simple extraction, but
|
|
the command to do so then becomes, e.g., ``run letters''
|
|
(to continue the examples given above).
|
|
|
|
unzipsfx on the Amiga requires the use of a special pro-
|
|
gram, MakeSFX, in order to create working self-extracting
|
|
archives; simple concatenation does not work. (For tech-
|
|
nically oriented users, the attached archive is defined as
|
|
a ``debug hunk.'') There may be compatibility problems
|
|
between the ROM levels of older Amigas and newer ones.
|
|
|
|
All current bugs in unzip(1L) exist in unzipsfx as well.
|
|
|
|
DIAGNOSTICS
|
|
unzipsfx's exit status (error level) is identical to that
|
|
of unzip(1L); see the corresponding man page.
|
|
|
|
SEE ALSO
|
|
funzip(1L), unzip(1L), zip(1L), zipcloak(1L), zipgrep(1L),
|
|
zipinfo(1L), zipnote(1L), zipsplit(1L)
|
|
|
|
URL
|
|
The Info-ZIP home page is currently at
|
|
http://www.info-zip.org/pub/infozip/
|
|
or
|
|
ftp://ftp.info-zip.org/pub/infozip/ .
|
|
|
|
AUTHORS
|
|
Greg Roelofs was responsible for the basic modifications
|
|
to UnZip necessary to create UnZipSFX. See unzip(1L) for
|
|
the current list of Zip-Bugs authors, or the file CONTRIBS
|
|
in the UnZip source distribution for the full list of
|
|
Info-ZIP contributors.
|
|
|
|
Info-ZIP 17 February 2002 (v5.5) 6
|
|
|