which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5403 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			280 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Groff
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			280 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Groff
		
	
	
		
			Executable File
		
	
	
	
	
| .\" Info-ZIP grants permission to any individual or institution to use, copy,
 | |
| .\" or redistribute this software, so long as:  (1) all of the original files
 | |
| .\" are included; (2) it is not sold for profit; and (3) this notice is re-
 | |
| .\" tained.  See the UnZip COPYING file for details.
 | |
| .\"
 | |
| .\" unzipsfx.1 by Greg Roelofs
 | |
| .\"
 | |
| .\" =========================================================================
 | |
| .\" define .Y macro (for user-command examples; normal Courier font):
 | |
| .de Y
 | |
| .ft CW
 | |
| .in +4n
 | |
| .nf
 | |
| \&\\$1
 | |
| .ft
 | |
| .in
 | |
| .fi
 | |
| ..
 | |
| .\" =========================================================================
 | |
| .TH UNZIPSFX 1L "31 May 1997 (v5.31)" "Info-ZIP"
 | |
| .SH NAME
 | |
| unzipsfx \- self-extracting stub for prepending to ZIP archives
 | |
| .PD
 | |
| .SH SYNOPSIS
 | |
| \fB<name of unzipsfx+archive combo>\fP [\fB\-cfptuz\fP[\fBajnoqsCLV$\fP]]
 | |
| [\fIfile(s)\fP\ .\|.\|. [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]]
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH DESCRIPTION
 | |
| \fIunzipsfx\fP is a modified version of \fIunzip\fP(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, \fIunzipsfx\fP 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
 | |
| \fIunzip\fP have been removed.  Among these are the usage (or help) screen,
 | |
| the listing and diagnostic functions (\fB\-l\fP and \fB\-v\fP), the ability
 | |
| to decompress older compression formats (the ``reduce,'' ``shrink'' and 
 | |
| ``implode'' methods), and the ability to extract to a directory other than 
 | |
| the current one.  Decryption is supported as a compile-time option but 
 | |
| should be avoided unless the attached archive contains encrypted files.
 | |
| .PP
 | |
| \fBNote that
 | |
| self-extracting archives made with\fP \fIunzipsfx\fP \fBare no more (or less)
 | |
| portable across different operating systems than is 
 | |
| the\fP \fIunzip\fP \fBexecutable itself.\fP  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 \fIunzip\fP 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.
 | |
| \fIDespite this\fP, however, the self-extracting archive is technically
 | |
| \fInot\fP 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.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH ARGUMENTS
 | |
| .IP [\fIfile(s)\fP]
 | |
| An optional list of archive members to be processed.
 | |
| Regular expressions (wildcards) similar to those in Unix \fIegrep\fP(1)
 | |
| may be used to match multiple members.  These wildcards may contain:
 | |
| .RS
 | |
| .IP *
 | |
| matches a sequence of 0 or more characters
 | |
| .IP ?
 | |
| matches exactly 1 character
 | |
| .IP [.\|.\|.]
 | |
| 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 \fIexcept\fP
 | |
| the characters inside the brackets is considered a match).
 | |
| .RE
 | |
| .IP
 | |
| (Be sure to quote any character that might otherwise be interpreted or
 | |
| modified by the operating system, particularly under Unix and VMS.)
 | |
| .IP [\fB\-x\fP\ \fIxfile(s)\fP]
 | |
| 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, ``\fCfoosfx *.[ch] -x */*\fR'' would extract all C source files
 | |
| in the main directory, but none in any subdirectories.  Without the \fB\-x\fP
 | |
| option, all C source files in all directories within the zipfile would be
 | |
| extracted.
 | |
| .PP
 | |
| If \fIunzipsfx\fP is compiled with SFX_EXDIR defined, the following option
 | |
| is also enabled:
 | |
| .IP [\fB\-d\fP\ \fIexdir\fP]
 | |
| An optional directory to which to extract files.  By default, all files
 | |
| and subdirectories are recreated in the current directory; the \fB\-d\fP
 | |
| 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,
 | |
| ``\fC\-d\ ~\fR'' (tilde) is expanded by Unix C shells into the name 
 | |
| of the user's home directory, but ``\fC\-d~\fR'' is treated as a
 | |
| literal subdirectory ``\fB~\fP'' of the current directory.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH OPTIONS
 | |
| \fIunzipsfx\fP supports the following \fIunzip\fP(1L) options:  \fB\-c\fP
 | |
| and \fB\-p\fP (extract to standard output/screen), \fB\-f\fP and \fB\-u\fP
 | |
| (freshen and update existing files upon extraction), \fB\-t\fP (test
 | |
| archive) and \fB\-z\fP (print archive comment).  All normal listing options
 | |
| (\fB\-l\fP, \fB\-v\fP and \fB\-Z\fP) have been removed, but the testing
 | |
| option (\fB\-t\fP) 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.
 | |
| .PP
 | |
| See \fIunzip\fP(1L) for a more complete description of these options.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH MODIFIERS
 | |
| \fIunzipsfx\fP currently supports all \fIunzip\fP(1L) modifiers:  \fB\-a\fP 
 | |
| (convert text files), \fB\-n\fP (never overwrite), \fB\-o\fP (overwrite 
 | |
| without prompting), \fB\-q\fP (operate quietly), \fB\-C\fP (match names 
 | |
| case-insenstively), \fB\-L\fP (convert uppercase-OS names to lowercase),
 | |
| \fB\-j\fP (junk paths) and \fB\-V\fP (retain version numbers); plus the
 | |
| following operating-system specific options:  \fB\-X\fP (restore VMS 
 | |
| owner/protection info), \fB\-s\fP (convert spaces in filenames to underscores
 | |
| [DOS, OS/2, NT]) and \fB\-$\fP (restore volume label [DOS, OS/2, NT, Amiga]).
 | |
| .PP
 | |
| (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.)
 | |
| .PP
 | |
| See \fIunzip\fP(1L) for a more complete description of these modifiers.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH "ENVIRONMENT OPTIONS"
 | |
| \fIunzipsfx\fP uses the same environment variables as \fIunzip\fP(1L) does,
 | |
| although this is likely to be an issue only for the person creating and
 | |
| testing the self-extracting archive.  See \fIunzip\fP(1L) for details.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH DECRYPTION
 | |
| Decryption is supported exactly as in \fIunzip\fP(1L); that is, interactively
 | |
| with a non-echoing prompt for the password(s).  See \fIunzip\fP(1L) for 
 | |
| details.  Once again, note that if the archive has no encrypted files there 
 | |
| is no reason to use a version of \fIunzipsfx\fP with decryption support;
 | |
| that only adds to the size of the archive.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH EXAMPLES
 | |
| To create a self-extracting archive \fIletters\fP from a regular zipfile 
 | |
| \fIletters.zip\fP and change the new archive's permissions to be 
 | |
| world-executable under Unix:
 | |
| .PP
 | |
| .PD 0
 | |
| .Y "cat unzipsfx letters.zip > letters"
 | |
| .Y "chmod 755 letters"
 | |
| .Y "zip -A letters"
 | |
| .PD
 | |
| .PP
 | |
| To create the same archive under MS-DOS, OS/2 or NT (note the use of the
 | |
| \fB/b\fP [binary] option to the \fIcopy\fP command):
 | |
| .PP
 | |
| .Y "copy /b unzipsfx.exe+letters.zip letters.exe"
 | |
| .Y "zip -A letters.exe"
 | |
| .PP
 | |
| Under VMS:
 | |
| .PP
 | |
| .Y "copy unzipsfx.exe,letters.zip letters.exe"
 | |
| .Y "letters == ""$currentdisk:[currentdir]letters.exe"""
 | |
| .Y "zip -A letters.exe"
 | |
| .PP
 | |
| (The VMS \fIappend\fP 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:
 | |
| .PP
 | |
| .Y "MakeSFX letters letters.zip UnZipSFX"
 | |
| .PP
 | |
| (MakeSFX is included with the UnZip source distribution and with Amiga
 | |
| binary distributions.  ``\fCzip -A\fR'' doesn't work on Amiga self-extracting
 | |
| archives.)
 | |
| To test (or list) the newly created self-extracting archive:
 | |
| .PP
 | |
| .Y "letters \-t"
 | |
| .PP
 | |
| To test \fIletters\fP quietly, printing only a summary message indicating
 | |
| whether the archive is OK or not:
 | |
| .PP
 | |
| .Y "letters \-tqq"
 | |
| .PP
 | |
| To extract the complete contents into the current directory, recreating all
 | |
| files and subdirectories as necessary:
 | |
| .PP
 | |
| .Y "letters"
 | |
| .PP
 | |
| To extract all \fC*.txt\fR files (in Unix quote the `*'):
 | |
| .PP
 | |
| .Y "letters *.txt"
 | |
| .PP
 | |
| To extract everything \fIexcept\fP the \fC*.txt\fR files:
 | |
| .PP
 | |
| .Y "letters -x *.txt"
 | |
| .PP
 | |
| To extract only the README file to standard output (the screen):
 | |
| .PP
 | |
| .Y "letters -c README"
 | |
| .PP
 | |
| To print only the zipfile comment:
 | |
| .PP
 | |
| .Y "letters \-z"
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH LIMITATIONS
 | |
| The principle and fundamental limitation of \fIunzipsfx\fP 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).
 | |
| .PP
 | |
| Another problem with the current implementation is that any archive
 | |
| with ``junk'' prepended to the beginning technically is no longer a zipfile
 | |
| (unless \fIzip\fP(1) is used to adjust the zipfile offsets appropriately,
 | |
| as noted above).  \fIunzip\fP(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.
 | |
| .PP
 | |
| \fIunzipsfx\fP 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, \fIunzipsfx\fP 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.
 | |
| .PP
 | |
| As noted above, a number of the normal \fIunzip\fP(1L) functions have
 | |
| been removed in order to make \fIunzipsfx\fP 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.
 | |
| .PP
 | |
| VMS users must know how to set up self-extracting archives as foreign 
 | |
| commands in order to use any of \fIunzipsfx\fP's options.  This is not
 | |
| necessary for simple extraction, but the command to do so then becomes,
 | |
| e.g., ``\fCrun letters\fR'' (to continue the examples given above).
 | |
| .PP
 | |
| \fIunzipsfx\fP 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.
 | |
| .PP
 | |
| All current bugs in \fIunzip\fP(1L) exist in \fIunzipsfx\fP as well.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH DIAGNOSTICS
 | |
| \fIunzipsfx\fP's exit status (error level) is identical to that of
 | |
| \fIunzip\fP(1L); see the corresponding man page.
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH "SEE ALSO"
 | |
| \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L),
 | |
| \fIzipgrep\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L)
 | |
| .PD
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH URL
 | |
| The Info-ZIP home page is currently at \fChttp://www.cdrom.com/pub/infozip/\fR .
 | |
| .PD
 | |
| .\" =========================================================================
 | |
| .SH AUTHORS
 | |
| Greg Roelofs was responsible for the basic modifications to UnZip necessary
 | |
| to create UnZipSFX.  See \fIunzip\fP(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.
 | |
| .PD
 |