123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862 |
- __________________________________________________________________________
- This is the Info-ZIP file INSTALL (for UnZip), last updated 16 Apr 2009.
- __________________________________________________________________________
- Yes, this is a rather long file, but don't be intimidated: much of its
- length is due to coverage of multiple operating systems and of optional
- customization features, large portions of which may be skipped.
- __________________________________________________________________________
- To compile UnZip, UnZipSFX and/or fUnZip (quick-start instructions):
- ========================================
- (1) Unpack everything into a work directory somewhere, and make sure you're
- in the main UnZip directory (the one with this file in it).
- * (See note below concerning line termination format used in the source
- distribution)
- (2) Copy the appropriate makefile into the current directory, except under
- OS/2.
- (3) Run your "make" utility on the makefile (e.g., "nmake -f makefile.msc").
- (4) Try out your new UnZip the way you would any new utility: read the
- docs first.
- Ah ha ha ha!! Oh, that kills me. But seriously... For VMS, see the
- Install section below or [.vms]README. for details.
- For DOS and other OSes without explicit timezone support (i.e., everybody
- but Unix, Windows 95 and NT), make sure the "TZ" environment variable is
- set to a valid and reasonable value; see your compiler docs for details.
- (*) The unzip sources as well as other Info-ZIP source archives are packaged
- in Unix format. All text files use single LF (Ascii 0x0a) characters as
- line terminators. On systems that use different conventions for plain text
- files (e.g.:DOS,Win9x,WinNT,OS/2 -> combined CR+LF; MacOS -> single CR),
- some utilities (editors, compilers, etc.) may not accept source files
- with LF line terminators.
- For these systems, we recommend to use Info-ZIP's UnZip utility for
- extraction of our distribution archives, applying the command option
- "-a" (= translate text files to native format) in the extraction command.
- In case this procedure is not applicable, an appropiate third-party
- conversion utility may be used to achieve the desired line termination
- style (examples: "flip", available for Unix, DOS, OS/2; or "tr" on Unix).
- To compile UnZip, UnZipSFX and/or fUnZip (detailed instructions):
- ========================================
- (1) Unpack *.c and *.h (the actual source files), preserving the directory
- structure (e.g., ./unix/unix.c). The sole exception is TOPS-20, where
- tops20/* should be unpacked into the current directory, but TOPS-20
- is no longer fully supported anyway.
- As of UnZip 5.41, full decryption support has been integrated in the
- UnZip source distribution. If you wish to compile binaries without
- decryption support, you must define the preprocessor flag NO_CRYPT.
- For many environments, you may add this flag to the custom compilation
- flags supplied by the environment variable LOCAL_UNZIP. For more
- details, see the make procedures and accompanied documentation for your
- particular target OS.
- As of UnZip 5.53, support for the bzip2 compression algorithm has been
- added to UnZip. However, this support requires the original sources of
- the bzip2 compression library which have to be aquired separately;
- see "http://www.bzip.org/" for further reference.
- (2) Choose the appropriate makefile based on the description in the Con-
- tents file for your OS (that is, there's only one for Unix or OS/2, but
- MS-DOS and several other OSes have several, depending on the compiler).
- Copy it into the current directory and rename if necessary or desired.
- (Some makefiles can be invoked in place; see (5) below.)
- Don't be afraid to read the makefile! Many options will be explained only
- in the comments contained therein. The defaults may not quite suit your
- system. When making changes, remember that some "make" utilities expect
- tabs as part of the makefile syntax. Failure with cryptic error messages
- will result if your editor quietly replaces those tabs with spaces.
- Special point of confusion: some non-MSDOS makefiles contain MS-DOS
- targets (useful for cross-compilations). An example is the OS/2 makefile
- os2/makefile.os2 that contains the gccdos target for DOS emx+gcc and
- some more DOS related targets for Watcom C and MSC. But since version 5.3,
- the msdos subdirectory contains makefiles for all supported DOS compilers.
- [The old djgpp, djgpp1 and gcc_dos targets in unix/Makefile have been
- removed in 5.3; use msdos/makefile.dj* instead.]
- Extra-special point of confusion: makefile.os2 expects to remain in
- the os2 subdirectory. Invoke it via "nmake -f os2/makefile.os2 gcc",
- for example.
- (3) If you want a non-standard version of UnZip, define one or more of the
- following optional macros, either by adding them to the LOCAL_UNZIP
- environment variable or by editing your makefile as appropriate. The
- syntax differs from compiler to compiler, but macros are often defined
- via "-DMACRO_NAME" or similar (for one called MACRO_NAME). Note that
- some of these may not be fully supported in future releases (or even
- in the current release). Note also that very short command lines in
- MS-DOS (128 characters) may place severe limits on how many of these
- can be used; if need be, the definitions can be placed at the top of
- unzip.h instead (it is included in all source files)--for example,
- "#define MACRO_NAME", one macro per line.
- DOSWILD (MS-DOS only)
- Treat trailing "*.*" like Unix "*" (i.e., matches anything); treat
- trailing "*." as match for files without a dot (i.e., matches any-
- thing, as long as no dots in name). Special treatment only occurs
- if patterns are at end of arguments; i.e., "a*.*" matches all files
- starting with "a", but "*.*c" matches all files ending in "c" *only*
- if they have a dot somewhere before the "c". [The default method of
- specifying files without a dot would be "* -x *.*", making use of
- UnZip's exclude-files option.] The matching is actually the same as
- Unix, if you assume that undotted filenames really have an invisible
- dot at the end, which is how DOS and related systems treat filenames
- in general. All other regular expressions (including "?" and
- "[range_of_chars]") retain their Unix-like behavior.
- WILD_STOP_AT_DIR (incompatible with WINDLL!)
- Enables an additional option "-W". When this qualifier is specified,
- the pattern matching routine is modified so that both '?' (single-char
- wildcard) and '*' (multi-char wildcard) do not match the directory
- separator character '/'. Examples:
- "*.c" matches "foo.c" but not "mydir/foo.c"
- "*/*.c" matches "bar/foo.c" but not "baz/bar/foo.c"
- "??*/*" matches "ab/foo" and "abc/foo" but not "a/foo" or "a/b/foo"
- To enable matching across directory separator chars, two consecutive
- multi-char wildcards "**" should be specified.
- This modified behaviour is equivalent to the pattern matching style
- used by the shells of some of UnZip's supported target OSs (one
- example is Acorn RISC OS).
- VMSWILD (VMS only)
- Use parentheses rather than brackets to delimit sets (ranges), and
- use '%' instead of '?' as the single-character wildcard for internal
- filename matching. (External matching of zipfile names always uses
- the standard VMS wildcard facilities; character sets are disallowed.)
- VMSCLI (VMS only)
- Use VMS-style "slash options" (/FOOBAR) instead of the default Unix-
- style hyphenated options (-f). This capability does not affect options
- stored in environment variables (UNZIP_OPTS or ZIPINFO_OPTS); those use
- the Unix style regardless. Beginning with UnZip 5.32, the supplied
- VMS build methods generate both VMS-style and default "UNIX-style"
- executables; you should NOT add VMSCLI to the custom options.
- CHECK_VERSIONS (VMS only)
- UnZip "extra fields" are used to store VMS (RMS) filesystem info,
- and the format of this information may differ in various versions
- of VMS. Defining this option will enable UnZip warnings when the
- stored extra-field VMS version(s) do(es) not match the version of
- VMS currently being used. This is a common occurrence in zipfiles
- received from other sites, but since the format of the filesystem
- does not seem to have changed in years (including on Alpha and
- IA64 systems), the warnings are not enabled by default.
- RETURN_CODES (VMS only)
- VMS interprets return codes according to a rigid set of guidelines,
- which means it misinterprets normal UnZip return codes as all sorts
- of really nasty errors. Therefore VMS UnZip returns an alternate set
- of return codes; since these may be difficult to interpret, define
- RETURN_CODES for human-readable explanations.
- VMS_TEXT_CONV (everybody except VMS)
- VMS Stream_LF-format text files archived with the "-V" option
- (/VMS), but NOT with -VV (/VMS=ALL), should be fine when extracted
- on other systems. Stream_LF-files archived with -VV should be
- readable as well, but they may get some junk appended.
- Text files with other formats (like the default VFC, with its
- embedded byte counts) may be only semi-readable at best when
- extracted on other systems. Defining this option enables UnZip's
- -aa option to detect and convert VMS VFC-record text files into
- native text format. Non-VMS UnZips now use a rudimentary VMS extra
- field analyser to relyably determine such text files. (Earlier
- versions of UnZip applied some heuristics instead.)
- Therefore this option is now enabled by default for the main program
- (but not the SFX stub), because it can be extremely useful on those
- rare occasions when a VMS text file must be extracted as normal text.
- USE_DJGPP_ENV (MS-DOS DJGPP 2.0x only)
- Regular DJGPP v2.0x compiled programs which use ENVIRONMENT are
- able to read from the file "djgpp.env" as well as those set in the
- environment. This adds about 1KB to the size of the executable.
- This option is disabled by default in Info-ZIP source. If you are
- able to use "djgpp.env" and don't like to clutter the environment
- with many special purpose variables, you may want to compile with
- this option set.
- USE_DJGPP_GLOB (MS-DOS DJGPP 2.0x only)
- If you like to get UnZip binaries that handle command line arguments
- similar to Unix tools which are run in an Unix shell, you might want
- to set this compilation option. This option enables the support for
- globbing command line arguments containing wildcards that is built
- into the DJGPP startup code. When using a binary compiled with this
- option, you may have to enclose wildcard arguments in double quotes
- to get them passed to the program unmodified. Enabling this option
- is not recommended, because it results in Info-Zip binaries that do
- not behave as expected for MS-DOS programs.
- USE_VFAT (MS-DOS only, for using same executable under DOS and Win95/NT)
- djgpp 2.x and emx/gcc+RSX 5.1 can detect when they are running under a
- Win32 DOS box and will accordingly enable long-filename support. For
- now only djgpp 2.x and emx/gcc with RSX 5.1 or later have this feature
- (and it is defined by default in msdos/makefile.dj2 and makefile.emx),
- but if/when other compilers build in similar support, define this
- macro to enable its use. See also msdos/doscfg.h. [Note that djgpp
- 2.0's LFN support is flaky; users should upgrade to 2.01 or later.]
- NO_W32TIMES_IZFIX (Win32 including WinDLL, and WinCE)
- By specifying this option, you can disable Info-ZIP's special timestamp
- adjustment to get stable time stamps on NTFS disks that do not change
- depending on the current time being normal vs. daylight saving time.
- When this option is set, UnZip behaves exactly like other programs;
- file timestamps on NTFS partitions are created so that their >current<
- local time representation displayed by directory listings (cmd.exe
- "dir" command or Windows Explorer listings) is the same as shown by
- UnZip's listing. But the actual UTC timestamp values stored in the
- NTFS file attributes vary depending on whether extraction is done
- at summer or winter time.
- This option is not recommended because it sacrifies the timestamp
- comparison checks when extracting or modifying archives in "update
- only newer" mode.
- However, for environments where consistency of >displayed< dates
- of files extracted to NTFS vs. FAT disks is considered more important
- than correctly working update/freshen tasks of Zip&UnZip, this
- option may be used.
- >> DO NOT DISTRIBUTE OR PUBLISH executables that were compiled with
- this option! <<
- NOTIMESTAMP
- This option disables the -T option, which basically does exactly what
- Zip's -go options do (i.e., set the timestamp of the zipfile to that of
- the newest file in the archive without rewriting the archive). Unlike
- Zip, however, UnZip supports wildcard specifications for the archive
- name; for example, "unzip -T *.zip" will set the dates of all zipfiles
- in the current directory. (UnZip's option is also much faster.)
- DATE_FORMAT=DF_DMY or DF_MDY or DF_YMD
- This option controls the order in which date components are printed
- in non-ZipInfo-mode listings: day-month-year or month-day-year or
- year-month-day.
- For DOS, FlexOS, OS2, Theos and Win32, the format is automatically
- obtained from the operating system; most others default to DF_MDY.
- DATE_SEPCHAR='-' or '.' or '/' etc.
- This option controls the character that separates the date components
- shown in (non-ZipInfo-mode) listings. The Win32 port obtains the
- separator automatically from the operating system's locale settings;
- all others default to '-'.
- ACORN_FTYPE_NFS (needs support for long filenames with embedded commas)
- This option enables a -F option that instructs UnZip to interpret the
- filetype information extracted from Acorn RiscOS extra field blocks.
- The filetype IDs are translated into "NFS filetype extensions" and
- appended to the names of the extracted files. This feature facilitates
- maintenance of Unix-based NFS volumes that are exported to Acorn RiscOS
- systems.
- QLZIP (Unix only)
- Add some support for QDOS extra fields. This option enables Unix
- UnZip to append "datalen info" to QDOS exec type files in the same
- format as used by QDOS cross-compilers on Unix or the qltools v2.2(+).
- UNIXBACKUP (default on OS/2, Unix, Win32)
- This option enables a -B option that instructs UnZip to rename files
- that would normally be overwritten. The renamed files are given a
- tilde suffix and a unique sequence number (`~#####'). Note that
- previously renamed files may be overwritten without notice, even
- if the -n option is given.
- On target ports where UNIXBACKUP is enabled by default, the negated
- option NO_UNIXBACKUP may be used to disable this feature.
- OS2_EAS
- List the sizes of OS/2 EAs and ACLs for each file as two extra columns
- in "unzip -l" output. This is primarily useful for OS/2 systems, but
- because zipfiles are portable, OS2_EAS can be defined for any system.
- (May be extended someday to show sizes of Mac resource forks, RISCOS
- and VMS file info, etc.)
- DELETE_IF_FULL (anybody with unlink() function)
- If a write error is encountered (most likely due to a full disk),
- enabling this option will cause the incomplete file to be deleted
- instead of closed normally. This is particularly useful for the
- Windows CE port, which must generally contend with extremely limited
- resources.
- ASM_CRC (Amiga/Aztec C; many x86 systems: DOS, OS/2, Win32, Unix)
- Use an assembler routine to calculate the CRC for each file (speed).
- ASM_INFLATECODES (Amiga/Aztec C only, for now)
- Use an assembler version of inflate_codes() for speed.
- OLD_EXDIR
- No longer supported.
- SFX_EXDIR
- Enable the "-d <extract_dir>" option for UnZipSFX. This is now
- enabled by default (since UnZip 5.5) to facilitate use with
- automated installation scripts and the like. For disabling
- this feature, see the NO_SFX_EXDIR option.
- NO_SFX_EXDIR
- Disables the "-d <extract_dir>" option for UnZipSFX to generate the
- smallest possible executable stub. (Prior to the UnZip 5.5 release,
- this was the default.)
- CHEAP_SFX_AUTORUN
- Enable a simple "run command after extraction" feature for
- the (command line) UnZipSFX stub. This feature is currently
- incompatible with the "-d <extract_dir>" command line option,
- therefore CHEAP_SFX_AUTORUN implicitely sets the NO_SFX_EXDIR
- option.
- NO_ZIPINFO
- Compile without ZipInfo mode (-Z) enabled; makes a smaller executable
- because many text strings are left out. Automatically enabled for
- some small-model compiles under MS-DOS and OS/2, so ordinarily there
- is no need to specify this explicitly. (Note that even with this
- defined, the resulting executable may still be too big to extract
- some zipfiles correctly, if compiled with the small memory model.)
- USE_DEFLATE64 (default for UnZip and fUnZip)
- NO_DEFLATE64 (default for UnZipSFX stub)
- The "deflate64" algorithm from PKZIP 4.0 (or newer) is an enhanced
- variant of the deflate algorithm that achieves slightly better
- compression ratios on highly redundant data. Normally, UnZip should
- be compiled with support for this compression algorithm enabled.
- However, this results in significantly larger memory requirements
- to run the program. For 16-bit executables (DOS and OS/2), the
- special memory management to support the 64k history buffer results
- in a slight performance (= speed) penalty. And for the SFX stub,
- "deflate64" support might be unnessessary as long as the Info-ZIP
- Zip utility does not support it (quite likely, this will never
- get implemented). So, the NO_DEFLATE64 option is provided to allow
- exclusion of the deflate64 support.
- USE_BZIP2 (requires additional external code distribution)
- UnZip can optionally support the "bzip2" compression algorithm for
- most ports on 32-bit (or higher) platforms. Currently, this support
- is integrated in the Make procedures of MSDOS 32-bit (DJGPP), VMS,
- Win32, and many Unix systems.
- Prerequisites:
- You have to obtain the bzip2 source distribution (version 1.03 or
- higher) and extract it into the "bzip2" subdirectory.
- Compilation:
- - MSDOS, Win32: You have to supply the symbol definition
- "USEBZ2=1" on the command line when you invoke the make program.
- - Unix: The target "generic" automatically activates bzip2 support
- when its configure script detects the presence of the bzip2 sources.
- For other targets, there are two options:
- a) Use the command
- "make -f unix/Makefile D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2 \
- LIBBZ2=bzip2/libbz2.a YourTarget"
- (Do not use the continuation line and replace YourTarget with
- the appropiate target name.)
- b) Edit the Makefile and remove the comment signs from the lines
- that define the macros D_USE_BZ2, L_BZ2, and LIBBZ2 (at about
- line 84 ff.).
- - VMS: The MMS/MMK build program should automatically activate the
- bzip2 support when it detects the presence of the bzip2 sources.
- MULT_VOLUME (experimental for 5.5x, do NOT use in production versions!)
- NO_MULT_VOLUME (default)
- The symbol MULT_VOLUME is used to flag code portions needed for
- support of multi-volume archives. For now, this flag MUST NOT be
- used to compile a production versions of UnZip. This flag has been
- introduced to allow integration of experimental code for multi-volume
- support in the master source tree. This feature will become a default
- option in the future 6.1 release of UnZip.
- LZW_CLEAN
- USE_UNSHRINK (now default, as of January 2005)
- The "shrinking" algorithm from PKZIP 1.0 is an LZW variant. Unisys
- patented the Lempel-Ziv-Welch algorithm in 1985 and has publicly
- claimed that decompression is covered by it. (IBM also patented the
- same thing in a filing 3 weeks prior to Unisys's.) In 2004, the
- Unisys and IBM patents expired worldwide, so unshrinking is now
- enabled again by default. If you do not wish to include the LZW
- method, you may still disable it by defining LZW_CLEAN.
- (Unshrinking was used by PKZIP 1.0 and 1.1, and Zip 1.0 and 1.1.
- All newer archives use only the deflation method.)
- COPYRIGHT_CLEAN (now default)
- USE_SMITH_CODE
- The last chunk of code in UnZip that was blatantly derived from Sam
- Smith's unzip 2.0 (as in, "substantially similar") is in unreduce.c.
- Since reducing was only used by very early PKZIP beta versions (0.9x),
- support for it is now omitted by default (COPYRIGHT_CLEAN). To in-
- clude unreducing capability, define USE_SMITH_CODE and replace the
- stub unreduce.c source file by the separatly distributed full source
- code module. Note that this subjects UnZip to any and all restrictions
- in Smith's copyright; see the UnZip COPYING.OLD file for details.
- USE_CRYPT
- Enable decryption support for all binaries. The default setting
- is to disable decryption support for the SFX stub to keep its size
- as small as possible. For other binaries of the UnZip distribution,
- decryption support is enabled by default.
- NO_CRYPT
- Disable decryption support for all binaries.
- PASSWD_FROM_STDIN (with full crypt sources only; Unix, VMS only)
- Used to allow the password on encrypted files to be read from stdin
- rather than the default stderr. This was useful for those who wished
- to automate the testing or decoding of encrypted archives (say, in a
- shell script via ``echo "password" | unzip -tq archive''), but as of
- version 5.3, UnZip has a -P option for passing a password directly to
- the program. PASSWD_FROM_STDIN will therefore probably be phased out
- in future versions. Note that the same security warnings given in the
- description of the -P option apply here as well.
- UNICODE_SUPPORT
- Enable restoring from UTF-8 encoded paths. These paths are stored
- in extra fields in a backward-compatible way so that archives with
- UTF-8 paths still work on zips and unzips that don't support Unicode.
- This support follows the recent additions to the PKWare AppNote for
- Unicode support, except that Unicode comments on systems where UTF-8
- is not the current character set is not implemented in this release.
- Internally, Unicode support can be achieved by three methods:
- a) The charset encoding used by the system is already UTF-8, so
- the program just has to select the UTF-8 versions of the stored
- filenames for file name handling.
- This method is enabled by setting the symbol UTF8_MAYBE_NATIVE;
- this activates code to check for native UTF-8 encoding in the
- locale settings.
- b) The operating system and the compilation environment support
- "wide character" data in Unicode encoding (UCS-2/UTF-16 or UCS-4),
- which are used to translate between UTF-8 and the native
- extended-ASCII character encoding.
- The code for this method is activated by setting the preprocessor
- symbol UNICODE_WCHAR.
- It may be activated together with UTF8_MAYBE_NATIVE to provide
- more versatile Unicode support and additional "debugging" options
- for checking the correct recognition of non-ASCII Unicode
- characters.
- c) The operating system and the compilation environment allow to use
- unicode-encoded "wide character" data for native text strings
- support.
- Complete support for this method requires a throughout revision
- of the UnZip code. All internal string handling and text output
- needs to be ported to use wchar_t character storage.
- This porting is still in an experimental stage and not ready
- for general distribution.
- On some ports UNICODE_SUPPORT is set automatically:
- - WIN32 (and WinCE) use method b) by defining UNICODE_SUPPORT and
- UNICODE_WCHAR.
- - On Unix, the automatic configuration script enables UNICODE_WCHAR
- if ISO-10646 compatible wide characters are supported and
- UTF8_MAYBE_NATIVE if the locale detection call is available.
- For these ports, setting NO_UNICODE_SUPPORT forces deactivation of
- the Unicode support.
- NO_SETLOCALE (for Unix)
- On Unix, it is now assumed that <locale.h> and the setlocale function
- are available, to setup locale-aware filtering of displayed filenames.
- The option NO_SETLOCALE allows to disable the dependency on <locale.h>
- and setlocale() on systems where this assumption is invalid (and the
- auto-configuring make target "generic" cannot be used for capabilities
- detection).
- _MBCS
- NO_MBCS
- Enable multi-byte character set support. This is the default for the
- Human68k system (originated from Japan) and for Win32 (here only DBCS
- "double-byte character set" support). The MBCS support should also be
- enabled on systems which are capable of using UTF-8 as native charset.
- For MBCS support, the C runtime library must supply implementations
- for the mblen() function and the MB_CUR_MAX runtime macro/function.
- The NO_MBCS symbol allows to explicitely disable MBCS support for
- testing purpose, or when MBCS support does not work as expected.
- HAVE_WORKING_ISPRINT
- NO_WORKING_ISPRINT
- The symbol HAVE_WORKING_ISPRINT enables enhanced non-printable chars
- filtering for filenames in the fnfilter() function. On some systems
- (Unix, VMS, some Win32 compilers), this setting is enabled by default.
- In cases where isprint() flags printable extended characters as
- unprintable, defining NO_WORKING_ISPRINT allows to disable the enhanced
- filtering capability in fnfilter(). (The ASCII control codes 0x01 to
- 0x1f are always escaped on ASCII systems.)
- DEBUG
- Used for debugging purposes; enables Trace() statements. Generally
- it's best to compile only one or two modules this way.
- DEBUG_TIME
- Used for debugging the timezone code in fileio.c; enables TTrace()
- statements. This code is only used for the freshen/update options
- (-f and -u), and non-Unix compilers often get it wrong.
- (4) If you regularly compile new versions of UnZip and always want the same
- non-standard option(s), you may wish to add it (them) to the LOCAL_UNZIP
- environment variable (assuming it's supported in your makefile). Under
- MS-DOS, for example, add this to AUTOEXEC.BAT:
- set LOCAL_UNZIP=-DDOSWILD -DDATE_FORMAT=DF_DMY
- You can also use the variable to hold special compiler options (e.g.,
- -FPi87 for Microsoft C, if the x87 libraries are the only ones on your
- disk and they follow Microsoft's default naming conventions; MSC also
- supports the CL environment variable, however).
- (5) Run the make utility on your chosen makefile:
- Unix
- For most systems it's possible to invoke the makefile in place, at
- the possible cost of an ignorable warning; do "make -f unix/Makefile
- list" to get a list of possible system targets, and then "make -f
- unix/Makefile target" for your chosen target. The "generic" target
- works for most systems, but if it fails with a message about ftime()
- unresolved or timezone redefined, do "make clean", "make help", and
- then either "make generic2" or "make generic3" as instructed. If all
- else fails, read the makefile itself; it contains numerous comments.
- (One of these days we'll make a configure script that automates this
- procedure better.)
- VMS (OpenVMS):
- On VMS, two build methods are provided: a command procedure, and
- description files for MMS or MMK. Both methods must be run from
- the main directory, not the [.VMS] subdirectory.
- A simple build using the command procedure looks like this:
- @ [.VMS]BUILD_UNZIP.COM
- A simple build using MMS or MMK looks like this:
- MMS /DESCRIP = [.VMS]DESCRIP.MMS ! Or, with MMK, ...
- MMK /DESCRIP = [.VMS]DESCRIP.MMS
- Various options for each build method are explained in comments in
- the main builder file, either BUILD_UNZIP.COM or DESCRIP.MMS.
- Here are some more complex build examples:
- o Build with the large-file option enabled (non-VAX only):
- @ [.VMS]BUILD_UNZIP LARGE
- or:
- MMS /DESC = [.VMS] /MACRO = LARGE=1
- o Re-link the executables (small-file and large-file):
- @ [.VMS]BUILD_UNZIP LINK
- @ [.VMS]BUILD_UNZIP LARGE LINK
- or
- MMK /DESC = [.VMS] CLEAN_EXE ! Deletes existing executables.
- MMK /DESC = [.VMS] ! Builds new executables.
- MMK /DESC = [.VMS] /MACRO = LARGE=1 CLEAN_EXE
- MMK /DESC = [.VMS] /MACRO = LARGE=1
- o Build a large-file product from scratch, for debug, getting
- compiler listings and link maps:
- mms /desc = [.vms] clean
- mms /desc = [.vms] /macro = (DBG=1, LARGE=1. LIST=1)
- On VAX, the builders attempt to cope with the various available C
- compilers: DEC/Compaq/HP C, VAX C, or GNU C. If DEC/Compaq/HP C is
- not available or not desired, comments in the relevant builder file
- explain the command-line options used to select a different
- compiler.
- System-architecture-specific files (like objects and executables)
- are placed in separate directories, such as [.ALPHA], [.IA64], or
- [.VAX]. Large-file products get their own directories, [.ALPHAL]
- or [.IA64L]. On VAX, VAX C products are placed in [.VAXV], GNU C
- products in [.VAXG]. Each product builder announces what the
- destination directory will be when it is run.
- Common files, such as the help libraries (UNZIP.HLP for the
- default UNIX-like command-line interface, UNZIP_CLI.HLP for the
- VMS-like command-line interface), are placed in the main
- directory. With a mixed-architecture VMS cluster, the same main
- directory on a shared disk may may be used by all system types.
- (Using the NOHELP option with BUILD_UNZIP.COM can keep it from
- making the same help files repeatedly.)
- Some further information may be found in the files
- [.VMS]README. and [.VMS]00BINARY.VMS, though much of what's
- there is now obsolete.
- MS-DOS
- See the msdos\Contents file for notes regarding which makefile(s) to
- use with which compiler. In summary: pick one of msdos\makefile.*
- as appropriate, or (as noted above) use the OS/2 gccdos target for
- emx+gcc. There is also an mscdos cross-compilation target in
- os2\makefile.os2 and a sco_dos cross-compilation target in the Unix
- makefile. For Watcom 16-bit or 32-bit versions, see the comments in
- the OS/2 section below.
- After choosing the appropriate makefile and editing as necessary or
- desired, invoke the corresponding make utility. Microsoft's NMAKE
- and the free dmake and GNU make utilities are generally the most
- versatile. The makefiles in the msdos directory can be invoked in
- place ("nmake -f msdos\makefile.msc", for example).
- OS/2
- Either GNU make, nmake or dmake may be used with the OS/2 makefile;
- all are freely available on the net. Do "nmake -f os2\makefile.os2",
- for example, to get a list of supported targets. More generally,
- read the comments at the top of the makefile for an explanation of
- the differences between some of the same-compiler targets.
- Win32 (WinNT or Win9x)
- For creating Win32 executables, the Microsoft Visual C++ compiler
- platforms from version 2.x up to 8.0 (Visual Studio .Net C++ 2005)
- are supported. Recent build test have been run on VC++ 6.0, 7.1
- and 8.0. The linker of newer Microsoft Visual C++ versions (beginning
- with Visual C++ 2008 - [VC++ 9.0]) create executables that are marked
- to run on Windows 2000 and newer, only. Although these Visual C++
- environments may succeed in building Win32 Info-ZIP executables,
- they cannot (and must not) be used to create binaries for public
- distribution.
- Alternative compilers for the Intel platforms are OpenWatcom C++,
- GNU C (preferably the mingw32 port, CygWin and emx/rsxnt may also
- work), Borland C++, or lcc-win32.
- DEC C/C++ for NT/Alpha may or may not still work.
- For the Watcom compiler, use WMAKE and win32\makefile.wat; for the
- Microsoft compilers, use NMAKE and win32\Makefile; for mingw32 and
- CygWin, GNU Make and win32\Makefile.gcc should do the job.
- With emx+gcc, a good choice is GNUMake 3.75 (or higher) from the
- djgpp V2 distribution used on win32\Makefile.emx.
- The unzip32.dll WinDLL executables can be built using the appropiate
- Makefile in the win32\ subdirectory, or by using the Microsoft Visual
- C++ project files supplied below the windll subdirectory. Besides the
- MSC compilers, gcc-mingw32, Watcom C and Borland C allow to build the
- Windows UnZip DLL. By default, the Makefiles for compilers that use
- the Microsoft C runtime are configured to link against the shared
- multithreading C runtime DLL. Depending on the intended usage for
- unzip32.dll, a statically linked dll might be more suitable. The
- make scripts for MSC support build variants with static linking; you
- should look up the configuration switch DLLSTANDALONE in the MSC
- Makefile or the "Static..." build configurations in the Visual Studio
- project files.
- WinCE (WinCE or WinNT)
- Only Microsoft Visual C++ 5.0, 6.0 or Visual C++ embedded 3.0 or later
- are supported. Use the appropiate version of the included project
- files and check wince\README for details.
- AmigaDOS
- SAS/Lattice C and Manx Aztec C are supported. For SAS C 6.x do "smake
- -f amiga/smakefile all"; for Aztec C do "make -f amiga/makefile.azt
- all". The Aztec C version supports assembly-language versions of two
- routines; these are enabled by default.
- Atari TOS
- Turbo C is no longer supported; use gcc and the MiNT libraries, and
- do "make". Note that all versions of gcc prior to 2.5.8 have a bug
- affecting 68000-based machines (optimizer adds 68020 instructions).
- See atari\README for comments on using other compilers.
- Macintosh
- Metrowerks CodeWarrior Pro 4 with Universal Interfaces 3.1 is the only
- currently supported compiler, although the Mac Programmer's Workbench
- (MPW) and Think C were supported at one time and still have some hooks.
- Other Compilers may work too, no compiler specific instructions
- (pragma, header, macros, ...) were used in the code.
- For CodeWarrior Pro 4, un-BinHex the CodeWarrior project file and
- UnZip resource file (using Stuffit Expander or BinHex 4.0 or later),
- then open the project and click on the compile button.
- See ":macos:Contents" for the possible project targets.
- Link order of the standard libraries is very important: Link all
- sources first and all standard libraries last.
- Acorn (RISC OS)
- Extract the files from the archive and place in standard 'Acorn' C
- form (i.e., *.c, *.h and *.s become c.*, h.* and s.*, respectively),
- either using the UNZIP$EXTS environment variable and a pre-built UnZip
- binary, or using Spark[FS] and doing it manually. Then copy the
- Acorn.Makefile to the main UnZip directory and either type 'amu' or
- use the desktop make utility.
- VM/CMS
- Unpack all the files and transfer them with ASCII -> EBCDIC conver-
- sion to an appropriate directory/minidisk/whatever, then execute
- UNZVMC to compile and link all the sources. This may require C/370
- version 2.1 or later and certain `nucleus extensions,' although
- UnZip 5.3 has been reported to compile fine with the `ADCYCLE C/370
- v1.2 compiler.' Note that it will abend without access to the C/370
- runtime library. See the README.CMS file for more details.
- MVS
- Unpack all the files and transfer them to an appropriate PDS with
- ASCII -> EBCDIC conversion enabled, then edit UNZMVSC.JOB as required,
- and execute it to compile and link all the sources. C/370 2.1 or
- later is required. See README.MVS for further details. [This is a
- new port and may need a little more work even to compile.]
- Human68K
- [This is a Japanese machine and OS.] It appears that GNU make and
- gcc are required; presumably just do "gmake -f human68k/Makefile.gcc"
- to build everything. This port has not been tested since the 5.12
- release.
- TOPS-20
- [No longer fully supported due to new, unported features, although
- patches are always accepted.] Unpack all files into the current
- directory only (including those in the zipfile's tops20 directory),
- then use make.mic and "do make".
- BeOS
- You can run the BeOS makefile in place by typing "make -f
- beos/Makefile". In fact, this is how the author tests it.
- Running the appropriate make utility should produce three executables on
- most systems, one for UnZip/ZipInfo, one for UnZipSFX, and one for fUnZip.
- (VMS is one prominent exception: fUnZip makes no sense on it. The Amiga
- produces a fourth executable called MakeSFX, which is necessary because
- Amiga self-extracting archives cannot be created by simple concatenation.
- If necessary the source amiga/makesfx.c can be compiled on other systems.)
- Read any OS-specific README files for notes on setting things up for
- normal use (especially for VMS) and for warnings about known quirks and
- bugs in various compilers (especially for MS-DOS).
- Also note that many OSes require a timezone variable to be set correctly
- (often "TZ"); Unix and VMS generally do so by default, Win95/NT do if set
- up properly, but other OSes generally do not. See the discussion of the
- -f and -u options in the UnZip man page (or unzip.txt). BeOS doesn't
- currently support timezone information at all, but this will probably be
- added soon.
- Then test your new UnZip on a few archives and let us know if there are
- problems (but *please* first make certain that the archives aren't actu-
- ally corrupted and that you didn't make one of the silly mistakes dis-
- cussed in the documentation). If possible, double-check any problems
- with PKUNZIP or with a previous version of UnZip prior to reporting a
- "bug." The zipfile itself may be damaged.
- To install:
- ===========
- Unix
- The default prefix for the installation location is /usr/local (things
- go into the bin and man/man1 subdirectories beneath the prefix), and
- the default man-page extension is "1" (corresponding to man/man1, above).
- To install as per the defaults, do "make install"; otherwise do "make
- prefix=/your/path manext=your_extension install". (For Intel Unix flavors
- where the assembler CRC routines were used [ASM_CRC], use the install_asm
- target instead of the regular install target.) For example, to install
- in your home directory with "l" as the man-page extension (for "local"),
- do "make prefix=$HOME manext=l install". Permissions will be 755 for the
- executables and 644 for the man pages. In general root must perform in-
- stallation into a public directory. Do "rehash" if your shell requires
- it in order to find the new executables.
- VMS
- To complete the installation, the executables may be left in place,
- or moved (or copied) to a convenient place. While other methods
- (like DCL$PATH) exist, most users define symbols to make the UnZip
- executables available as foreign commands. These symbol definitions
- may be placed in a user's SYS$LOGIN:LOGIN.COM, or in a more central
- location, like SYS$MANAGER:SYLOGIN.COM. Typical symbol definitions
- might look like these:
- UNZIP :== $ dev:[dir]UNZIP.EXE ! UNIX-like command line.
- or:
- UNZIP :== $ dev:[dir]UNZIP_CLI.EXE ! VMS-like command line.
- For convenience, a ZIPINFO symbol could also be defined, so:
- ZIPINFO :== $ dev:[dir]UNZIP.EXE """-Z"""
- On a non-VAX system, different symbols could be defined for the
- small-file and large-file programs. For example:
- UNZIPS :== $ dev:[dir.ALPHA]UNZIP.EXE ! UNZIPS = small-file UnZip.
- UNZIP*L :== $ dev:[dir.ALPHAL]UNZIP.EXE ! UNZIP[L] = large-file UnZip.
- The builders create help text files, UNZIP.HLP and UNZIP_CLI.HLP.
- These may be incorporated into an existing help library, or a separate
- UnZip help library may be created using commands like these, using
- either UNZIP.HLP (as shown) or UNZIP_CLI.HLP:
- $ LIBRARY /HELP dev:[dir]existing_library.HLB UNZIP.HLP
- $ LIBRARY /CREATE /HELP UNZIP.HLB UNZIP.HLP
- UnZip help may then be accessed from a separate UnZip help library
- using a command like:
- $ HELP /LIBRARY = device:[directory]UNZIP.HLB
- For greater ease, the user (or system manager) may define a
- HLP$LIBRARY logical name to allow the HELP utility to find the UnZip
- help library automatically. See HELP HELP /USERLIBRARY for more
- details. The command procedure HLP_LIB_NEXT.COM may be used to
- determine the next available HLP$LIBRARY logical name, and could be
- adapted to define a HLP$LIBRARY logical name for an UnZip help library.
- The kit includes MAKESFX.COM, a command procedure intended to simplify
- creating a self-extracting archive. It may be helpful to install this
- procedure near the UnZip executables. MAKESFX.COM expects another
- symbol definition, like one of these:
- UNZIPSFX :== $ dev:[dir]UNZIPSFX.EXE ! UNIX-like command line.
- or:
- UNZIPSFX :== $ dev:[dir]UNZIPSFX_CLI.EXE ! VMS-like command line.
- Again here, on a non-VAX system, either a small-file or a large-file
- UNZIPSFX program may be used. (MAKESFX.COM could be modified to allow
- a run-time choice to be made.)
- OS/2, MS-DOS, NT, Atari, Amiga
- Move or copy unzip.exe (or unzip.ttp, or UnZip, or whatever) to a direc-
- tory in your path; also possibly copy the UnZip executable to zipinfo.exe
- (or ii.exe), or else create an alias or a batch/command file for ZipInfo
- ("@unzip -Z %1 %2 %3 %4 %5 %6 %7 %8 %9" under MS-DOS). The latter is only
- relevant if NO_ZIPINFO was *not* defined, obviously... Under djgpp 2.x,
- zipinfo.exe is a 2K stub symbolically linked to unzip.exe.
- Acorn RISC OS
- Copy the executables unzip, funzip and zipinfo to somewhere in your
- Run$Path. See your Welcome manual if you don't know about Run$Path.
- BeOS
- The default prefix for the installation location is /boot/usr/local
- (things go into the bin and man/man1 subdirectories beneath the prefix),
- and the default man-page extension is "1" (corresponding to the man/man1,
- above). Of course, these Unix man-pages aren't useful until someone ports
- something that can format them... plain text versions are also installed
- with an extension of ".txt". To install, do a "make install", or to
- change the prefix, do "make prefix=/your/path install". For example, to
- install in /boot/bin, do "make prefix=/boot/bin install".
- Macintosh
- (This port is for Macintosh OS before Mac OS X. See Unix Apple below for
- Mac OS X and later.)
- MacZip requires at least System 7 and a Macintosh with a minimum of a
- Motorola 68020 or PowerPC 601 processor. Other configurations may work
- but it is not tested at all.
- The application (MacZip) is distributed as a combination of zip and unzip
- in one program. The offical release is a fat binary with both regular 68K
- and native PowerPC versions included.
- Move the executable(s) somewhere--for example, drag it (or them) to your
- Applications folder. For easy access, make an alias in the Launcher Control
- Panel or directly on your desktop.
- This port supports also Apple-event.So you can install it in your
- WWW-Browser as a helper-app.
- Look into "macos/README.TXT" (or ":macos:README.TXT" on Mac) for further
- info.
- Macintosh OS X (Unix Apple)
- Mac OS X and later are based on BSD Unix and are supported by the Unix
- port. See the Unix port for details. Though support is currently
- minimal, we plan to support additional Mac OS X features, such as resource
- forks, in future releases.
- Human68K, TOPS-20, AOS/VS, MVS, VM/CMS, etc.
- Dunno, sorry...
|