Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. __________________________________________________________________________
  2.  
  3.   This is the Info-ZIP file INSTALL (for UnZip), last updated 16 Apr 2009.
  4. __________________________________________________________________________
  5.  
  6.   Yes, this is a rather long file, but don't be intimidated:  much of its
  7.   length is due to coverage of multiple operating systems and of optional
  8.   customization features, large portions of which may be skipped.
  9. __________________________________________________________________________
  10.  
  11.  
  12.  
  13. To compile UnZip, UnZipSFX and/or fUnZip (quick-start instructions):
  14. ========================================
  15.  
  16. (1) Unpack everything into a work directory somewhere, and make sure you're
  17.     in the main UnZip directory (the one with this file in it).
  18.     * (See note below concerning line termination format used in the source
  19.        distribution)
  20.  
  21. (2) Copy the appropriate makefile into the current directory, except under
  22.     OS/2.
  23.  
  24. (3) Run your "make" utility on the makefile (e.g., "nmake -f makefile.msc").
  25.  
  26. (4) Try out your new UnZip the way you would any new utility:  read the
  27.     docs first.
  28.  
  29.     Ah ha ha ha!!  Oh, that kills me.  But seriously...  For VMS, see the
  30.     Install section below or [.vms]README. for details.
  31.  
  32.     For DOS and other OSes without explicit timezone support (i.e., everybody
  33.     but Unix, Windows 95 and NT), make sure the "TZ" environment variable is
  34.     set to a valid and reasonable value; see your compiler docs for details.
  35.  
  36. (*) The unzip sources as well as other Info-ZIP source archives are packaged
  37.     in Unix format. All text files use single LF (Ascii 0x0a) characters as
  38.     line terminators.  On systems that use different conventions for plain text
  39.     files (e.g.:DOS,Win9x,WinNT,OS/2 -> combined CR+LF; MacOS -> single CR),
  40.     some utilities (editors, compilers, etc.) may not accept source files
  41.     with LF line terminators.
  42.     For these systems, we recommend to use Info-ZIP's UnZip utility for
  43.     extraction of our distribution archives, applying the command option
  44.     "-a" (= translate text files to native format) in the extraction command.
  45.     In case this procedure is not applicable, an appropiate third-party
  46.     conversion utility may be used to achieve the desired line termination
  47.     style (examples: "flip", available for Unix, DOS, OS/2; or "tr" on Unix).
  48.  
  49.  
  50. To compile UnZip, UnZipSFX and/or fUnZip (detailed instructions):
  51. ========================================
  52.  
  53. (1) Unpack *.c and *.h (the actual source files), preserving the directory
  54.     structure (e.g., ./unix/unix.c).  The sole exception is TOPS-20, where
  55.     tops20/* should be unpacked into the current directory, but TOPS-20
  56.     is no longer fully supported anyway.
  57.  
  58.     As of UnZip 5.41, full decryption support has been integrated in the
  59.     UnZip source distribution.  If you wish to compile binaries without
  60.     decryption support, you must define the preprocessor flag NO_CRYPT.
  61.     For many environments, you may add this flag to the custom compilation
  62.     flags supplied by the environment variable LOCAL_UNZIP.  For more
  63.     details, see the make procedures and accompanied documentation for your
  64.     particular target OS.
  65.  
  66.     As of UnZip 5.53, support for the bzip2 compression algorithm has been
  67.     added to UnZip. However, this support requires the original sources of
  68.     the bzip2 compression library which have to be aquired separately;
  69.     see "http://www.bzip.org/" for further reference.
  70.  
  71.  
  72. (2) Choose the appropriate makefile based on the description in the Con-
  73.     tents file for your OS (that is, there's only one for Unix or OS/2, but
  74.     MS-DOS and several other OSes have several, depending on the compiler).
  75.     Copy it into the current directory and rename if necessary or desired.
  76.     (Some makefiles can be invoked in place; see (5) below.)
  77.  
  78.     Don't be afraid to read the makefile!  Many options will be explained only
  79.     in the comments contained therein.  The defaults may not quite suit your
  80.     system.  When making changes, remember that some "make" utilities expect
  81.     tabs as part of the makefile syntax.  Failure with cryptic error messages
  82.     will result if your editor quietly replaces those tabs with spaces.
  83.  
  84.     Special point of confusion:  some non-MSDOS makefiles contain MS-DOS
  85.     targets (useful for cross-compilations). An example is the OS/2 makefile
  86.     os2/makefile.os2 that contains the gccdos target for DOS emx+gcc and
  87.     some more DOS related targets for Watcom C and MSC. But since version 5.3,
  88.     the msdos subdirectory contains makefiles for all supported DOS compilers.
  89.     [The old djgpp, djgpp1 and gcc_dos targets in unix/Makefile have been
  90.     removed in 5.3; use msdos/makefile.dj* instead.]
  91.  
  92.     Extra-special point of confusion:  makefile.os2 expects to remain in
  93.     the os2 subdirectory.  Invoke it via "nmake -f os2/makefile.os2 gcc",
  94.     for example.
  95.  
  96.  
  97. (3) If you want a non-standard version of UnZip, define one or more of the
  98.     following optional macros, either by adding them to the LOCAL_UNZIP
  99.     environment variable or by editing your makefile as appropriate.  The
  100.     syntax differs from compiler to compiler, but macros are often defined
  101.     via "-DMACRO_NAME" or similar (for one called MACRO_NAME).  Note that
  102.     some of these may not be fully supported in future releases (or even
  103.     in the current release).  Note also that very short command lines in
  104.     MS-DOS (128 characters) may place severe limits on how many of these
  105.     can be used; if need be, the definitions can be placed at the top of
  106.     unzip.h instead (it is included in all source files)--for example,
  107.     "#define MACRO_NAME", one macro per line.
  108.  
  109.       DOSWILD   (MS-DOS only)
  110.         Treat trailing "*.*" like Unix "*" (i.e., matches anything); treat
  111.         trailing "*." as match for files without a dot (i.e., matches any-
  112.         thing, as long as no dots in name).  Special treatment only occurs
  113.         if patterns are at end of arguments; i.e., "a*.*" matches all files
  114.         starting with "a", but "*.*c" matches all files ending in "c" *only*
  115.         if they have a dot somewhere before the "c".  [The default method of
  116.         specifying files without a dot would be "* -x *.*", making use of
  117.         UnZip's exclude-files option.]  The matching is actually the same as
  118.         Unix, if you assume that undotted filenames really have an invisible
  119.         dot at the end, which is how DOS and related systems treat filenames
  120.         in general.  All other regular expressions (including "?" and
  121.         "[range_of_chars]") retain their Unix-like behavior.
  122.  
  123.       WILD_STOP_AT_DIR   (incompatible with WINDLL!)
  124.         Enables an additional option "-W".  When this qualifier is specified,
  125.         the pattern matching routine is modified so that both '?' (single-char
  126.         wildcard) and '*' (multi-char wildcard) do not match the directory
  127.         separator character '/'. Examples:
  128.           "*.c" matches "foo.c" but not "mydir/foo.c"
  129.           "*/*.c" matches "bar/foo.c" but not "baz/bar/foo.c"
  130.           "??*/*" matches "ab/foo" and "abc/foo" but not "a/foo" or "a/b/foo"
  131.         To enable matching across directory separator chars, two consecutive
  132.         multi-char wildcards "**" should be specified.
  133.         This modified behaviour is equivalent to the pattern matching style
  134.         used by the shells of some of UnZip's supported target OSs (one
  135.         example is Acorn RISC OS).
  136.  
  137.       VMSWILD   (VMS only)
  138.         Use parentheses rather than brackets to delimit sets (ranges), and
  139.         use '%' instead of '?' as the single-character wildcard for internal
  140.         filename matching.  (External matching of zipfile names always uses
  141.         the standard VMS wildcard facilities; character sets are disallowed.)
  142.  
  143.       VMSCLI   (VMS only)
  144.         Use VMS-style "slash options" (/FOOBAR) instead of the default Unix-
  145.         style hyphenated options (-f).  This capability does not affect options
  146.         stored in environment variables (UNZIP_OPTS or ZIPINFO_OPTS); those use
  147.         the Unix style regardless.  Beginning with UnZip 5.32, the supplied
  148.         VMS build methods generate both VMS-style and default "UNIX-style"
  149.         executables; you should NOT add VMSCLI to the custom options.
  150.  
  151.       CHECK_VERSIONS   (VMS only)
  152.         UnZip "extra fields" are used to store VMS (RMS) filesystem info,
  153.         and the format of this information may differ in various versions
  154.         of VMS.  Defining this option will enable UnZip warnings when the
  155.         stored extra-field VMS version(s) do(es) not match the version of
  156.         VMS currently being used.  This is a common occurrence in zipfiles
  157.         received from other sites, but since the format of the filesystem
  158.         does not seem to have changed in years (including on Alpha and
  159.         IA64 systems), the warnings are not enabled by default.
  160.  
  161.       RETURN_CODES   (VMS only)
  162.         VMS interprets return codes according to a rigid set of guidelines,
  163.         which means it misinterprets normal UnZip return codes as all sorts
  164.         of really nasty errors.  Therefore VMS UnZip returns an alternate set
  165.         of return codes; since these may be difficult to interpret, define
  166.         RETURN_CODES for human-readable explanations.
  167.  
  168.       VMS_TEXT_CONV   (everybody except VMS)
  169.         VMS Stream_LF-format text files archived with the "-V" option
  170.         (/VMS), but NOT with -VV (/VMS=ALL), should be fine when extracted
  171.         on other systems.  Stream_LF-files archived with -VV should be
  172.         readable as well, but they may get some junk appended.
  173.         Text files with other formats (like the default VFC, with its
  174.         embedded byte counts) may be only semi-readable at best when
  175.         extracted on other systems.  Defining this option enables UnZip's
  176.         -aa option to detect and convert VMS VFC-record text files into
  177.         native text format.  Non-VMS UnZips now use a rudimentary VMS extra
  178.         field analyser to relyably determine such text files. (Earlier
  179.         versions of UnZip applied some heuristics instead.)
  180.         Therefore this option is now enabled by default for the main program
  181.         (but not the SFX stub), because it can be extremely useful on those
  182.         rare occasions when a VMS text file must be extracted as normal text.
  183.  
  184.       USE_DJGPP_ENV   (MS-DOS DJGPP 2.0x only)
  185.         Regular DJGPP v2.0x compiled programs which use ENVIRONMENT are
  186.         able to read from the file "djgpp.env" as well as those set in the
  187.         environment.  This adds about 1KB to the size of the executable.
  188.         This option is disabled by default in Info-ZIP source. If you are
  189.         able to use "djgpp.env" and don't like to clutter the environment
  190.         with many special purpose variables, you may want to compile with
  191.         this option set.
  192.  
  193.       USE_DJGPP_GLOB  (MS-DOS DJGPP 2.0x only)
  194.         If you like to get UnZip binaries that handle command line arguments
  195.         similar to Unix tools which are run in an Unix shell, you might want
  196.         to set this compilation option.  This option enables the support for
  197.         globbing command line arguments containing wildcards that is built
  198.         into the DJGPP startup code.  When using a binary compiled with this
  199.         option, you may have to enclose wildcard arguments in double quotes
  200.         to get them passed to the program unmodified.  Enabling this option
  201.         is not recommended, because it results in Info-Zip binaries that do
  202.         not behave as expected for MS-DOS programs.
  203.  
  204.       USE_VFAT  (MS-DOS only, for using same executable under DOS and Win95/NT)
  205.         djgpp 2.x and emx/gcc+RSX 5.1 can detect when they are running under a
  206.         Win32 DOS box and will accordingly enable long-filename support.  For
  207.         now only djgpp 2.x and emx/gcc with RSX 5.1 or later have this feature
  208.         (and it is defined by default in msdos/makefile.dj2 and makefile.emx),
  209.         but if/when other compilers build in similar support, define this
  210.         macro to enable its use.  See also msdos/doscfg.h.  [Note that djgpp
  211.         2.0's LFN support is flaky; users should upgrade to 2.01 or later.]
  212.  
  213.       NO_W32TIMES_IZFIX (Win32 including WinDLL, and WinCE)
  214.         By specifying this option, you can disable Info-ZIP's special timestamp
  215.         adjustment to get stable time stamps on NTFS disks that do not change
  216.         depending on the current time being normal vs. daylight saving time.
  217.         When this option is set, UnZip behaves exactly like other programs;
  218.         file timestamps on NTFS partitions are created so that their >current<
  219.         local time representation displayed by directory listings (cmd.exe
  220.         "dir" command or Windows Explorer listings) is the same as shown by
  221.         UnZip's listing. But the actual UTC timestamp values stored in the
  222.         NTFS file attributes vary depending on whether extraction is done
  223.         at summer or winter time.
  224.         This option is not recommended because it sacrifies the timestamp
  225.         comparison checks when extracting or modifying archives in "update
  226.         only newer" mode.
  227.         However, for environments where consistency of >displayed< dates
  228.         of files extracted to NTFS vs. FAT disks is considered more important
  229.         than correctly working update/freshen tasks of Zip&UnZip, this
  230.         option may be used.
  231.         >> DO NOT DISTRIBUTE OR PUBLISH executables that were compiled with
  232.         this option! <<
  233.  
  234.       NOTIMESTAMP
  235.         This option disables the -T option, which basically does exactly what
  236.         Zip's -go options do (i.e., set the timestamp of the zipfile to that of
  237.         the newest file in the archive without rewriting the archive).  Unlike
  238.         Zip, however, UnZip supports wildcard specifications for the archive
  239.         name; for example, "unzip -T *.zip" will set the dates of all zipfiles
  240.         in the current directory.  (UnZip's option is also much faster.)
  241.  
  242.       DATE_FORMAT=DF_DMY or DF_MDY or DF_YMD
  243.         This option controls the order in which date components are printed
  244.         in non-ZipInfo-mode listings:  day-month-year or month-day-year or
  245.         year-month-day.
  246.         For DOS, FlexOS, OS2, Theos and Win32, the format is automatically
  247.         obtained from the operating system; most others default to DF_MDY.
  248.  
  249.       DATE_SEPCHAR='-' or '.' or '/' etc.
  250.         This option controls the character that separates the date components
  251.         shown in (non-ZipInfo-mode) listings.  The Win32 port obtains the
  252.         separator automatically from the operating system's locale settings;
  253.         all others default to '-'.
  254.  
  255.       ACORN_FTYPE_NFS  (needs support for long filenames with embedded commas)
  256.         This option enables a -F option that instructs UnZip to interpret the
  257.         filetype information extracted from Acorn RiscOS extra field blocks.
  258.         The filetype IDs are translated into "NFS filetype extensions" and
  259.         appended to the names of the extracted files. This feature facilitates
  260.         maintenance of Unix-based NFS volumes that are exported to Acorn RiscOS
  261.         systems.
  262.  
  263.       QLZIP  (Unix only)
  264.         Add some support for QDOS extra fields. This option enables Unix
  265.         UnZip to append "datalen info" to QDOS exec type files in the same
  266.         format as used by QDOS cross-compilers on Unix or the qltools v2.2(+).
  267.  
  268.       UNIXBACKUP   (default on OS/2, Unix, Win32)
  269.         This option enables a -B option that instructs UnZip to rename files
  270.         that would normally be overwritten.  The renamed files are given a
  271.         tilde suffix and a unique sequence number (`~#####').  Note that
  272.         previously renamed files may be overwritten without notice, even
  273.         if the -n option is given.
  274.         On target ports where UNIXBACKUP is enabled by default, the negated
  275.         option NO_UNIXBACKUP may be used to disable this feature.
  276.  
  277.       OS2_EAS
  278.         List the sizes of OS/2 EAs and ACLs for each file as two extra columns
  279.         in "unzip -l" output.  This is primarily useful for OS/2 systems, but
  280.         because zipfiles are portable, OS2_EAS can be defined for any system.
  281.         (May be extended someday to show sizes of Mac resource forks, RISCOS
  282.         and VMS file info, etc.)
  283.  
  284.       DELETE_IF_FULL  (anybody with unlink() function)
  285.         If a write error is encountered (most likely due to a full disk),
  286.         enabling this option will cause the incomplete file to be deleted
  287.         instead of closed normally.  This is particularly useful for the
  288.         Windows CE port, which must generally contend with extremely limited
  289.         resources.
  290.  
  291.       ASM_CRC   (Amiga/Aztec C; many x86 systems:  DOS, OS/2, Win32, Unix)
  292.         Use an assembler routine to calculate the CRC for each file (speed).
  293.  
  294.       ASM_INFLATECODES   (Amiga/Aztec C only, for now)
  295.         Use an assembler version of inflate_codes() for speed.
  296.  
  297.       OLD_EXDIR
  298.         No longer supported.
  299.  
  300.       SFX_EXDIR
  301.         Enable the "-d <extract_dir>" option for UnZipSFX.  This is now
  302.         enabled by default (since UnZip 5.5) to facilitate use with
  303.         automated installation scripts and the like.  For disabling
  304.         this feature, see the NO_SFX_EXDIR option.
  305.  
  306.       NO_SFX_EXDIR
  307.         Disables the "-d <extract_dir>" option for UnZipSFX to generate the
  308.         smallest possible executable stub.  (Prior to the UnZip 5.5 release,
  309.         this was the default.)
  310.  
  311.       CHEAP_SFX_AUTORUN
  312.         Enable a simple "run command after extraction" feature for
  313.         the (command line) UnZipSFX stub.  This feature is currently
  314.         incompatible with the "-d <extract_dir>" command line option,
  315.         therefore CHEAP_SFX_AUTORUN implicitely sets the NO_SFX_EXDIR
  316.         option.
  317.  
  318.       NO_ZIPINFO
  319.         Compile without ZipInfo mode (-Z) enabled; makes a smaller executable
  320.         because many text strings are left out.  Automatically enabled for
  321.         some small-model compiles under MS-DOS and OS/2, so ordinarily there
  322.         is no need to specify this explicitly.  (Note that even with this
  323.         defined, the resulting executable may still be too big to extract
  324.         some zipfiles correctly, if compiled with the small memory model.)
  325.  
  326.       USE_DEFLATE64 (default for UnZip and fUnZip)
  327.       NO_DEFLATE64 (default for UnZipSFX stub)
  328.         The "deflate64" algorithm from PKZIP 4.0 (or newer) is an enhanced
  329.         variant of the deflate algorithm that achieves slightly better
  330.         compression ratios on highly redundant data.  Normally, UnZip should
  331.         be compiled with support for this compression algorithm enabled.
  332.         However, this results in significantly larger memory requirements
  333.         to run the program.  For 16-bit executables (DOS and OS/2), the
  334.         special memory management to support the 64k history buffer results
  335.         in a slight performance (= speed) penalty.  And for the SFX stub,
  336.         "deflate64" support might be unnessessary as long as the Info-ZIP
  337.         Zip utility does not support it (quite likely, this will never
  338.         get implemented).  So, the NO_DEFLATE64 option is provided to allow
  339.         exclusion of the deflate64 support.
  340.  
  341.       USE_BZIP2 (requires additional external code distribution)
  342.        UnZip can optionally support the "bzip2" compression algorithm for
  343.        most ports on 32-bit (or higher) platforms. Currently, this support
  344.        is integrated in the Make procedures of MSDOS 32-bit (DJGPP), VMS,
  345.        Win32, and many Unix systems.
  346.        Prerequisites:
  347.        You have to obtain the bzip2 source distribution (version 1.03 or
  348.        higher) and extract it into the "bzip2" subdirectory.
  349.        Compilation:
  350.        - MSDOS, Win32: You have to supply the symbol definition
  351.          "USEBZ2=1" on the command line when you invoke the make program.
  352.        - Unix: The target "generic" automatically activates bzip2 support
  353.          when its configure script detects the presence of the bzip2 sources.
  354.          For other targets, there are two options:
  355.          a) Use the command
  356.             "make -f unix/Makefile D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2 \
  357.                    LIBBZ2=bzip2/libbz2.a YourTarget"
  358.            (Do not use the continuation line and replace YourTarget with
  359.            the appropiate target name.)
  360.          b) Edit the Makefile and remove the comment signs from the lines
  361.             that define the macros D_USE_BZ2, L_BZ2, and LIBBZ2 (at about
  362.             line 84 ff.).
  363.        - VMS: The MMS/MMK build program should automatically activate the
  364.          bzip2 support when it detects the presence of the bzip2 sources.
  365.  
  366.       MULT_VOLUME (experimental for 5.5x, do NOT use in production versions!)
  367.       NO_MULT_VOLUME (default)
  368.         The symbol MULT_VOLUME is used to flag code portions needed for
  369.         support of multi-volume archives. For now, this flag MUST NOT be
  370.         used to compile a production versions of UnZip. This flag has been
  371.         introduced to allow integration of experimental code for multi-volume
  372.         support in the master source tree. This feature will become a default
  373.         option in the future 6.1 release of UnZip.
  374.  
  375.       LZW_CLEAN
  376.       USE_UNSHRINK (now default, as of January 2005)
  377.         The "shrinking" algorithm from PKZIP 1.0 is an LZW variant.  Unisys
  378.         patented the Lempel-Ziv-Welch algorithm in 1985 and has publicly
  379.         claimed that decompression is covered by it.  (IBM also patented the
  380.         same thing in a filing 3 weeks prior to Unisys's.)  In 2004, the
  381.         Unisys and IBM patents expired worldwide, so unshrinking is now
  382.         enabled again by default.  If you do not wish to include the LZW
  383.         method, you may still disable it by defining LZW_CLEAN.
  384.         (Unshrinking was used by PKZIP 1.0 and 1.1, and Zip 1.0 and 1.1.
  385.         All newer archives use only the deflation method.)
  386.  
  387.       COPYRIGHT_CLEAN   (now default)
  388.       USE_SMITH_CODE
  389.         The last chunk of code in UnZip that was blatantly derived from Sam
  390.         Smith's unzip 2.0 (as in, "substantially similar") is in unreduce.c.
  391.         Since reducing was only used by very early PKZIP beta versions (0.9x),
  392.         support for it is now omitted by default (COPYRIGHT_CLEAN).  To in-
  393.         clude unreducing capability, define USE_SMITH_CODE and replace the
  394.         stub unreduce.c source file by the separatly distributed full source
  395.         code module.  Note that this subjects UnZip to any and all restrictions
  396.         in Smith's copyright; see the UnZip COPYING.OLD file for details.
  397.  
  398.       USE_CRYPT
  399.         Enable decryption support for all binaries.  The default setting
  400.         is to disable decryption support for the SFX stub to keep its size
  401.         as small as possible. For other binaries of the UnZip distribution,
  402.         decryption support is enabled by default.
  403.  
  404.       NO_CRYPT
  405.         Disable decryption support for all binaries.
  406.  
  407.       PASSWD_FROM_STDIN   (with full crypt sources only; Unix, VMS only)
  408.         Used to allow the password on encrypted files to be read from stdin
  409.         rather than the default stderr.  This was useful for those who wished
  410.         to automate the testing or decoding of encrypted archives (say, in a
  411.         shell script via ``echo "password" | unzip -tq archive''), but as of
  412.         version 5.3, UnZip has a -P option for passing a password directly to
  413.         the program.  PASSWD_FROM_STDIN will therefore probably be phased out
  414.         in future versions.  Note that the same security warnings given in the
  415.         description of the -P option apply here as well.
  416.  
  417.       UNICODE_SUPPORT
  418.         Enable restoring from UTF-8 encoded paths.  These paths are stored
  419.         in extra fields in a backward-compatible way so that archives with
  420.         UTF-8 paths still work on zips and unzips that don't support Unicode.
  421.         This support follows the recent additions to the PKWare AppNote for
  422.         Unicode support, except that Unicode comments on systems where UTF-8
  423.         is not the current character set is not implemented in this release.
  424.  
  425.         Internally, Unicode support can be achieved by three methods:
  426.         a) The charset encoding used by the system is already UTF-8, so
  427.            the program just has to select the UTF-8 versions of the stored
  428.            filenames for file name handling.
  429.            This method is enabled by setting the symbol UTF8_MAYBE_NATIVE;
  430.            this activates code to check for native UTF-8 encoding in the
  431.            locale settings.
  432.         b) The operating system and the compilation environment support
  433.            "wide character" data in Unicode encoding (UCS-2/UTF-16 or UCS-4),
  434.            which are used to translate between UTF-8 and the native
  435.            extended-ASCII character encoding.
  436.            The code for this method is activated by setting the preprocessor
  437.            symbol UNICODE_WCHAR.
  438.            It may be activated together with UTF8_MAYBE_NATIVE to provide
  439.            more versatile Unicode support and additional "debugging" options
  440.            for checking the correct recognition of non-ASCII Unicode
  441.            characters.
  442.         c) The operating system and the compilation environment allow to use
  443.            unicode-encoded "wide character" data for native text strings
  444.            support.
  445.            Complete support for this method requires a throughout revision
  446.            of the UnZip code. All internal string handling and text output
  447.            needs to be ported to use wchar_t character storage.
  448.            This porting is still in an experimental stage and not ready
  449.            for general distribution.
  450.  
  451.         On some ports UNICODE_SUPPORT is set automatically:
  452.         - WIN32 (and WinCE) use method b) by defining UNICODE_SUPPORT and
  453.           UNICODE_WCHAR.
  454.         - On Unix, the automatic configuration script enables UNICODE_WCHAR
  455.           if ISO-10646 compatible wide characters are supported and
  456.           UTF8_MAYBE_NATIVE if the locale detection call is available.
  457.         For these ports, setting NO_UNICODE_SUPPORT forces deactivation of
  458.         the Unicode support.
  459.  
  460.       NO_SETLOCALE (for Unix)
  461.         On Unix, it is now assumed that <locale.h> and the setlocale function
  462.         are available, to setup locale-aware filtering of displayed filenames.
  463.         The option NO_SETLOCALE allows to disable the dependency on <locale.h>
  464.         and setlocale() on systems where this assumption is invalid (and the
  465.         auto-configuring make target "generic" cannot be used for capabilities
  466.         detection).
  467.  
  468.       _MBCS
  469.       NO_MBCS
  470.        Enable multi-byte character set support.  This is the default for the
  471.        Human68k system (originated from Japan) and for Win32 (here only DBCS
  472.        "double-byte character set" support).  The MBCS support should also be
  473.        enabled on systems which are capable of using UTF-8 as native charset.
  474.        For MBCS support, the C runtime library must supply implementations
  475.        for the mblen() function and the MB_CUR_MAX runtime macro/function.
  476.        The NO_MBCS symbol allows to explicitely disable MBCS support for
  477.        testing purpose, or when MBCS support does not work as expected.
  478.  
  479.       HAVE_WORKING_ISPRINT
  480.       NO_WORKING_ISPRINT
  481.         The symbol HAVE_WORKING_ISPRINT enables enhanced non-printable chars
  482.         filtering for filenames in the fnfilter() function.  On some systems
  483.         (Unix, VMS, some Win32 compilers), this setting is enabled by default.
  484.         In cases where isprint() flags printable extended characters as
  485.         unprintable, defining NO_WORKING_ISPRINT allows to disable the enhanced
  486.         filtering capability in fnfilter().  (The ASCII control codes 0x01 to
  487.         0x1f are always escaped on ASCII systems.)
  488.  
  489.       DEBUG
  490.         Used for debugging purposes; enables Trace() statements.  Generally
  491.         it's best to compile only one or two modules this way.
  492.  
  493.       DEBUG_TIME
  494.         Used for debugging the timezone code in fileio.c; enables TTrace()
  495.         statements.  This code is only used for the freshen/update options
  496.         (-f and -u), and non-Unix compilers often get it wrong.
  497.  
  498.  
  499. (4) If you regularly compile new versions of UnZip and always want the same
  500.     non-standard option(s), you may wish to add it (them) to the LOCAL_UNZIP
  501.     environment variable (assuming it's supported in your makefile).  Under
  502.     MS-DOS, for example, add this to AUTOEXEC.BAT:
  503.  
  504.         set LOCAL_UNZIP=-DDOSWILD -DDATE_FORMAT=DF_DMY
  505.  
  506.     You can also use the variable to hold special compiler options (e.g.,
  507.     -FPi87 for Microsoft C, if the x87 libraries are the only ones on your
  508.     disk and they follow Microsoft's default naming conventions; MSC also
  509.     supports the CL environment variable, however).
  510.  
  511.  
  512. (5) Run the make utility on your chosen makefile:
  513.  
  514.       Unix
  515.         For most systems it's possible to invoke the makefile in place, at
  516.         the possible cost of an ignorable warning; do "make -f unix/Makefile
  517.         list" to get a list of possible system targets, and then "make -f
  518.         unix/Makefile target" for your chosen target.  The "generic" target
  519.         works for most systems, but if it fails with a message about ftime()
  520.         unresolved or timezone redefined, do "make clean", "make help", and
  521.         then either "make generic2" or "make generic3" as instructed.  If all
  522.         else fails, read the makefile itself; it contains numerous comments.
  523.         (One of these days we'll make a configure script that automates this
  524.         procedure better.)
  525.  
  526.       VMS (OpenVMS):
  527.         On VMS, two build methods are provided: a command procedure, and
  528.         description files for MMS or MMK.  Both methods must be run from
  529.         the main directory, not the [.VMS] subdirectory.
  530.  
  531.         A simple build using the command procedure looks like this:
  532.              @ [.VMS]BUILD_UNZIP.COM
  533.  
  534.         A simple build using MMS or MMK looks like this:
  535.              MMS /DESCRIP = [.VMS]DESCRIP.MMS      ! Or, with MMK, ...
  536.              MMK /DESCRIP = [.VMS]DESCRIP.MMS
  537.  
  538.         Various options for each build method are explained in comments in
  539.         the main builder file, either BUILD_UNZIP.COM or DESCRIP.MMS.
  540.  
  541.         Here are some more complex build examples:
  542.  
  543.         o Build with the large-file option enabled (non-VAX only):
  544.  
  545.              @ [.VMS]BUILD_UNZIP LARGE
  546.           or:
  547.              MMS /DESC = [.VMS] /MACRO = LARGE=1
  548.  
  549.         o Re-link the executables (small-file and large-file):
  550.  
  551.              @ [.VMS]BUILD_UNZIP LINK
  552.              @ [.VMS]BUILD_UNZIP LARGE LINK
  553.           or
  554.              MMK /DESC = [.VMS] CLEAN_EXE  ! Deletes existing executables.
  555.              MMK /DESC = [.VMS]            ! Builds new executables.
  556.              MMK /DESC = [.VMS] /MACRO = LARGE=1 CLEAN_EXE
  557.              MMK /DESC = [.VMS] /MACRO = LARGE=1
  558.  
  559.         o Build a large-file product from scratch, for debug, getting
  560.           compiler listings and link maps:
  561.  
  562.              mms /desc = [.vms] clean
  563.              mms /desc = [.vms] /macro = (DBG=1, LARGE=1. LIST=1)
  564.  
  565.         On VAX, the builders attempt to cope with the various available C
  566.         compilers: DEC/Compaq/HP C, VAX C, or GNU C.  If DEC/Compaq/HP C is
  567.         not available or not desired, comments in the relevant builder file
  568.         explain the command-line options used to select a different
  569.         compiler.
  570.  
  571.         System-architecture-specific files (like objects and executables)
  572.         are placed in separate directories, such as [.ALPHA], [.IA64], or
  573.         [.VAX].  Large-file products get their own directories, [.ALPHAL]
  574.         or [.IA64L].  On VAX, VAX C products are placed in [.VAXV], GNU C
  575.         products in [.VAXG].  Each product builder announces what the
  576.         destination directory will be when it is run.
  577.  
  578.         Common files, such as the help libraries (UNZIP.HLP for the
  579.         default UNIX-like command-line interface, UNZIP_CLI.HLP for the
  580.         VMS-like command-line interface), are placed in the main
  581.         directory.  With a mixed-architecture VMS cluster, the same main
  582.         directory on a shared disk may may be used by all system types.
  583.         (Using the NOHELP option with BUILD_UNZIP.COM can keep it from
  584.         making the same help files repeatedly.)
  585.  
  586.         Some further information may be found in the files
  587.         [.VMS]README. and [.VMS]00BINARY.VMS, though much of what's
  588.         there is now obsolete.
  589.  
  590.       MS-DOS
  591.         See the msdos\Contents file for notes regarding which makefile(s) to
  592.         use with which compiler.  In summary:  pick one of msdos\makefile.*
  593.         as appropriate, or (as noted above) use the OS/2 gccdos target for
  594.         emx+gcc.  There is also an mscdos cross-compilation target in
  595.         os2\makefile.os2 and a sco_dos cross-compilation target in the Unix
  596.         makefile.  For Watcom 16-bit or 32-bit versions, see the comments in
  597.         the OS/2 section below.
  598.  
  599.         After choosing the appropriate makefile and editing as necessary or
  600.         desired, invoke the corresponding make utility.  Microsoft's NMAKE
  601.         and the free dmake and GNU make utilities are generally the most
  602.         versatile.  The makefiles in the msdos directory can be invoked in
  603.         place ("nmake -f msdos\makefile.msc", for example).
  604.  
  605.       OS/2
  606.         Either GNU make, nmake or dmake may be used with the OS/2 makefile;
  607.         all are freely available on the net.  Do "nmake -f os2\makefile.os2",
  608.         for example, to get a list of supported targets.  More generally,
  609.         read the comments at the top of the makefile for an explanation of
  610.         the differences between some of the same-compiler targets.
  611.  
  612.       Win32 (WinNT or Win9x)
  613.         For creating Win32 executables, the Microsoft Visual C++ compiler
  614.         platforms from version 2.x up to 8.0 (Visual Studio .Net C++ 2005)
  615.         are supported.  Recent build test have been run on VC++ 6.0, 7.1
  616.         and 8.0.  The linker of newer Microsoft Visual C++ versions (beginning
  617.         with Visual C++ 2008 - [VC++ 9.0]) create executables that are marked
  618.         to run on Windows 2000 and newer, only.  Although these Visual C++
  619.         environments may succeed in building Win32 Info-ZIP executables,
  620.         they cannot (and must not) be used to create binaries for public
  621.         distribution.
  622.         Alternative compilers for the Intel platforms are OpenWatcom C++,
  623.         GNU C (preferably the mingw32 port, CygWin and emx/rsxnt may also
  624.         work), Borland C++, or lcc-win32.
  625.         DEC C/C++ for NT/Alpha may or may not still work.
  626.         For the Watcom compiler, use WMAKE and win32\makefile.wat; for the
  627.         Microsoft compilers, use NMAKE and win32\Makefile; for mingw32 and
  628.         CygWin, GNU Make and win32\Makefile.gcc should do the job.
  629.         With emx+gcc, a good choice is GNUMake 3.75 (or higher) from the
  630.         djgpp V2 distribution used on win32\Makefile.emx.
  631.  
  632.         The unzip32.dll WinDLL executables can be built using the appropiate
  633.         Makefile in the win32\ subdirectory, or by using the Microsoft Visual
  634.         C++ project files supplied below the windll subdirectory.  Besides the
  635.         MSC compilers, gcc-mingw32, Watcom C and Borland C allow to build the
  636.         Windows UnZip DLL.  By default, the Makefiles for compilers that use
  637.         the Microsoft C runtime are configured to link against the shared
  638.         multithreading C runtime DLL.  Depending on the intended usage for
  639.         unzip32.dll, a statically linked dll might be more suitable.  The
  640.         make scripts for MSC support build variants with static linking; you
  641.         should look up the configuration switch DLLSTANDALONE in the MSC
  642.         Makefile or the "Static..." build configurations in the Visual Studio
  643.         project files.
  644.  
  645.       WinCE (WinCE or WinNT)
  646.         Only Microsoft Visual C++ 5.0, 6.0 or Visual C++ embedded 3.0 or later
  647.         are supported.  Use the appropiate version of the included project
  648.         files and check wince\README for details.
  649.  
  650.       AmigaDOS
  651.         SAS/Lattice C and Manx Aztec C are supported.  For SAS C 6.x do "smake
  652.         -f amiga/smakefile all"; for Aztec C do "make -f amiga/makefile.azt
  653.         all".  The Aztec C version supports assembly-language versions of two
  654.         routines; these are enabled by default.
  655.  
  656.       Atari TOS
  657.         Turbo C is no longer supported; use gcc and the MiNT libraries, and
  658.         do "make".  Note that all versions of gcc prior to 2.5.8 have a bug
  659.         affecting 68000-based machines (optimizer adds 68020 instructions).
  660.         See atari\README for comments on using other compilers.
  661.  
  662.       Macintosh
  663.         Metrowerks CodeWarrior Pro 4 with Universal Interfaces 3.1 is the only
  664.         currently supported compiler, although the Mac Programmer's Workbench
  665.         (MPW) and Think C were supported at one time and still have some hooks.
  666.         Other Compilers may work too, no compiler specific instructions
  667.         (pragma, header, macros, ...) were used in the code.
  668.         For CodeWarrior Pro 4, un-BinHex the CodeWarrior project file and
  669.         UnZip resource file (using Stuffit Expander or BinHex 4.0 or later),
  670.         then open the project and click on the compile button.
  671.         See ":macos:Contents" for the possible project targets.
  672.         Link order of the standard libraries is very important: Link all
  673.         sources first and all standard libraries last.
  674.  
  675.       Acorn (RISC OS)
  676.         Extract the files from the archive and place in standard 'Acorn' C
  677.         form (i.e., *.c, *.h and *.s become c.*, h.* and s.*, respectively),
  678.         either using the UNZIP$EXTS environment variable and a pre-built UnZip
  679.         binary, or using Spark[FS] and doing it manually.  Then copy the
  680.         Acorn.Makefile to the main UnZip directory and either type 'amu' or
  681.         use the desktop make utility.
  682.  
  683.       VM/CMS
  684.         Unpack all the files and transfer them with ASCII -> EBCDIC conver-
  685.         sion to an appropriate directory/minidisk/whatever, then execute
  686.         UNZVMC to compile and link all the sources.  This may require C/370
  687.         version 2.1 or later and certain `nucleus extensions,' although
  688.         UnZip 5.3 has been reported to compile fine with the `ADCYCLE C/370
  689.         v1.2 compiler.'  Note that it will abend without access to the C/370
  690.         runtime library.  See the README.CMS file for more details.
  691.  
  692.       MVS
  693.         Unpack all the files and transfer them to an appropriate PDS with
  694.         ASCII -> EBCDIC conversion enabled, then edit UNZMVSC.JOB as required,
  695.         and execute it to compile and link all the sources.  C/370 2.1 or
  696.         later is required.  See README.MVS for further details.  [This is a
  697.         new port and may need a little more work even to compile.]
  698.  
  699.       Human68K
  700.         [This is a Japanese machine and OS.]  It appears that GNU make and
  701.         gcc are required; presumably just do "gmake -f human68k/Makefile.gcc"
  702.         to build everything.  This port has not been tested since the 5.12
  703.         release.
  704.  
  705.       TOPS-20
  706.         [No longer fully supported due to new, unported features, although
  707.         patches are always accepted.]  Unpack all files into the current
  708.         directory only (including those in the zipfile's tops20 directory),
  709.         then use make.mic and "do make".
  710.  
  711.       BeOS
  712.         You can run the BeOS makefile in place by typing "make -f
  713.         beos/Makefile".  In fact, this is how the author tests it.
  714.  
  715.     Running the appropriate make utility should produce three executables on
  716.     most systems, one for UnZip/ZipInfo, one for UnZipSFX, and one for fUnZip.
  717.     (VMS is one prominent exception:  fUnZip makes no sense on it.  The Amiga
  718.     produces a fourth executable called MakeSFX, which is necessary because
  719.     Amiga self-extracting archives cannot be created by simple concatenation.
  720.     If necessary the source amiga/makesfx.c can be compiled on other systems.)
  721.     Read any OS-specific README files for notes on setting things up for
  722.     normal use (especially for VMS) and for warnings about known quirks and
  723.     bugs in various compilers (especially for MS-DOS).
  724.  
  725.     Also note that many OSes require a timezone variable to be set correctly
  726.     (often "TZ"); Unix and VMS generally do so by default, Win95/NT do if set
  727.     up properly, but other OSes generally do not.  See the discussion of the
  728.     -f and -u options in the UnZip man page (or unzip.txt).  BeOS doesn't
  729.     currently support timezone information at all, but this will probably be
  730.     added soon.
  731.  
  732.     Then test your new UnZip on a few archives and let us know if there are
  733.     problems (but *please* first make certain that the archives aren't actu-
  734.     ally corrupted and that you didn't make one of the silly mistakes dis-
  735.     cussed in the documentation).  If possible, double-check any problems
  736.     with PKUNZIP or with a previous version of UnZip prior to reporting a
  737.     "bug."  The zipfile itself may be damaged.
  738.  
  739.  
  740.  
  741. To install:
  742. ===========
  743.  
  744. Unix
  745.   The default prefix for the installation location is /usr/local (things
  746.   go into the bin and man/man1 subdirectories beneath the prefix), and
  747.   the default man-page extension is "1" (corresponding to man/man1, above).
  748.   To install as per the defaults, do "make install"; otherwise do "make
  749.   prefix=/your/path manext=your_extension install".  (For Intel Unix flavors
  750.   where the assembler CRC routines were used [ASM_CRC], use the install_asm
  751.   target instead of the regular install target.)  For example, to install
  752.   in your home directory with "l" as the man-page extension (for "local"),
  753.   do "make prefix=$HOME manext=l install".  Permissions will be 755 for the
  754.   executables and 644 for the man pages.  In general root must perform in-
  755.   stallation into a public directory.  Do "rehash" if your shell requires
  756.   it in order to find the new executables.
  757.  
  758. VMS
  759.   To complete the installation, the executables may be left in place,
  760.   or moved (or copied) to a convenient place.  While other methods
  761.   (like DCL$PATH) exist, most users define symbols to make the UnZip
  762.   executables available as foreign commands.  These symbol definitions
  763.   may be placed in a user's SYS$LOGIN:LOGIN.COM, or in a more central
  764.   location, like SYS$MANAGER:SYLOGIN.COM.  Typical symbol definitions
  765.   might look like these:
  766.  
  767.      UNZIP :== $ dev:[dir]UNZIP.EXE             ! UNIX-like command line.
  768.   or:
  769.      UNZIP :== $ dev:[dir]UNZIP_CLI.EXE         ! VMS-like command line.
  770.  
  771.   For convenience, a ZIPINFO symbol could also be defined, so:
  772.  
  773.      ZIPINFO :== $ dev:[dir]UNZIP.EXE """-Z"""
  774.  
  775.   On a non-VAX system, different symbols could be defined for the
  776.   small-file and large-file programs.  For example:
  777.  
  778.      UNZIPS  :== $ dev:[dir.ALPHA]UNZIP.EXE     ! UNZIPS = small-file UnZip.
  779.      UNZIP*L :== $ dev:[dir.ALPHAL]UNZIP.EXE    ! UNZIP[L] = large-file UnZip.
  780.  
  781.   The builders create help text files, UNZIP.HLP and UNZIP_CLI.HLP.
  782.   These may be incorporated into an existing help library, or a separate
  783.   UnZip help library may be created using commands like these, using
  784.   either UNZIP.HLP (as shown) or UNZIP_CLI.HLP:
  785.  
  786.       $ LIBRARY /HELP dev:[dir]existing_library.HLB UNZIP.HLP
  787.  
  788.       $ LIBRARY /CREATE /HELP UNZIP.HLB UNZIP.HLP
  789.  
  790.   UnZip help may then be accessed from a separate UnZip help library
  791.   using a command like:
  792.  
  793.           $ HELP /LIBRARY = device:[directory]UNZIP.HLB
  794.  
  795.   For greater ease, the user (or system manager) may define a
  796.   HLP$LIBRARY logical name to allow the HELP utility to find the UnZip
  797.   help library automatically.  See HELP HELP /USERLIBRARY for more
  798.   details.   The command procedure HLP_LIB_NEXT.COM may be used to
  799.   determine the next available HLP$LIBRARY logical name, and could be
  800.   adapted to define a HLP$LIBRARY logical name for an UnZip help library.
  801.  
  802.   The kit includes MAKESFX.COM, a command procedure intended to simplify
  803.   creating a self-extracting archive.  It may be helpful to install this
  804.   procedure near the UnZip executables.  MAKESFX.COM expects another
  805.   symbol definition, like one of these:
  806.  
  807.      UNZIPSFX :== $ dev:[dir]UNZIPSFX.EXE       ! UNIX-like command line.
  808.   or:
  809.      UNZIPSFX :== $ dev:[dir]UNZIPSFX_CLI.EXE   ! VMS-like command line.
  810.  
  811.   Again here, on a non-VAX system, either a small-file or a large-file
  812.   UNZIPSFX program may be used.  (MAKESFX.COM could be modified to allow
  813.   a run-time choice to be made.)
  814.  
  815. OS/2, MS-DOS, NT, Atari, Amiga
  816.   Move or copy unzip.exe (or unzip.ttp, or UnZip, or whatever) to a direc-
  817.   tory in your path; also possibly copy the UnZip executable to zipinfo.exe
  818.   (or ii.exe), or else create an alias or a batch/command file for ZipInfo
  819.   ("@unzip -Z %1 %2 %3 %4 %5 %6 %7 %8 %9" under MS-DOS).  The latter is only
  820.   relevant if NO_ZIPINFO was *not* defined, obviously...  Under djgpp 2.x,
  821.   zipinfo.exe is a 2K stub symbolically linked to unzip.exe.
  822.  
  823. Acorn RISC OS
  824.   Copy the executables unzip, funzip and zipinfo to somewhere in your
  825.   Run$Path.  See your Welcome manual if you don't know about Run$Path.
  826.  
  827. BeOS
  828.   The default prefix for the installation location is /boot/usr/local
  829.   (things go into the bin and man/man1 subdirectories beneath the prefix),
  830.   and the default man-page extension is "1" (corresponding to the man/man1,
  831.   above).  Of course, these Unix man-pages aren't useful until someone ports
  832.   something that can format them... plain text versions are also installed
  833.   with an extension of ".txt".  To install, do a "make install", or to
  834.   change the prefix, do "make prefix=/your/path install".  For example, to
  835.   install in /boot/bin, do "make prefix=/boot/bin install".
  836.  
  837. Macintosh
  838.   (This port is for Macintosh OS before Mac OS X.  See Unix Apple below for
  839.   Mac OS X and later.)
  840.   MacZip requires at least System 7 and a Macintosh with a minimum of a
  841.   Motorola 68020 or PowerPC 601 processor. Other configurations may work
  842.   but it is not tested at all.
  843.   The application (MacZip) is distributed as a combination of zip and unzip
  844.   in one program. The offical release is a fat binary with both regular 68K
  845.   and native PowerPC versions included.
  846.   Move the executable(s) somewhere--for example, drag it (or them) to your
  847.   Applications folder.  For easy access, make an alias in the Launcher Control
  848.   Panel or directly on your desktop.
  849.   This port supports also Apple-event.So you can install it in your
  850.   WWW-Browser as a helper-app.
  851.   Look into "macos/README.TXT" (or ":macos:README.TXT" on Mac) for further
  852.   info.
  853.  
  854. Macintosh OS X (Unix Apple)
  855.   Mac OS X and later are based on BSD Unix and are supported by the Unix
  856.   port.  See the Unix port for details.  Though support is currently
  857.   minimal, we plan to support additional Mac OS X features, such as resource
  858.   forks, in future releases.
  859.  
  860. Human68K, TOPS-20, AOS/VS, MVS, VM/CMS, etc.
  861.   Dunno, sorry...
  862.