Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6725 siemargl 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 " 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 " 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 " 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  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 
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...