Provided by: unzip_6.0-27ubuntu1_amd64 bug

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(1)  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.   Similarly,  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  compile-time option adds a simple ``run command after extraction'' 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 systems 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  processed.   Regular  expressions
              (wildcards)  similar  to  those  in  Unix  egrep(1)  may  be used to match 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 otherwise 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 zipfile
              would be extracted.

       If unzipsfx is compiled with SFX_EXDIR defined, the following option is also enabled:

       [-d exdir]
              An optional directory to which  to  extract  files.   By  default,  all  files  and
              subdirectories  are  recreated  in  the  current  directory;  the  -d option allows
              extraction in an arbitrary directory (always assuming one has permission  to  write
              to  the directory).  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 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 directory.

OPTIONS

       unzipsfx  supports  the  following  unzip(1)  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 listing options (-l, -v and -Z) have
       been removed, but the testing option (-t)  may  be  used  as  a  ``poor  man's''  listing.
       Alternatively, those creating self-extracting archives may wish to include a short listing
       in the zipfile comment.

       See unzip(1) for a more complete description of these options.

MODIFIERS

       unzipsfx currently supports all unzip(1) 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  numbers);  plus  the  following  operating-system  specific options:  -X
       (restore VMS owner/protection info), -s (convert 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(1) for a more complete description of these modifiers.

ENVIRONMENT OPTIONS

       unzipsfx uses the same environment variables as unzip(1) does, although this is likely  to
       be  an  issue  only  for the person creating and testing the self-extracting archive.  See
       unzip(1) for details.

DECRYPTION

       Decryption is supported exactly as in unzip(1); that is, interactively with a  non-echoing
       prompt  for  the  password(s).   See  unzip(1)  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 support; 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  unzipsfx  recognizes  the  ``$AUTORUN$>''  token at the beginning of the Zip archive
       comment, the remainder of  the  first  line  of  the  comment  (until  the  first  newline
       character) is passed as a shell command to the operating system using the C rtl ``system''
       function. Before executing the command, unzipsfx 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 additional  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 permissions 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 command 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

       To  extract  the  complete  contents  into the current directory, recreating all files and
       subdirectories as necessary:

       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, however (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 technically 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  MacBinary,
       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 general 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 operating-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.

       As noted above, a number of the normal unzip(1) functions have been removed  in  order  to
       make  unzipsfx  smaller:   usage  and diagnostic info, listing functions and extraction to
       other directories.  Also, only stored  and  deflated  files  are  supported.   The  latter
       limitation is mainly relevant 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 program, MakeSFX, in order  to  create
       working  self-extracting  archives;  simple concatenation does not work.  (For technically
       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(1) exist in unzipsfx as well.

DIAGNOSTICS

       unzipsfx's  exit  status  (error  level)  is  identical  to  that  of  unzip(1);  see  the
       corresponding man page.

SEE ALSO

       funzip(1), unzip(1), zip(1), zipcloak(1), zipgrep(1), zipinfo(1), zipnote(1), zipsplit(1)

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