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 13To 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 50To 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 741To install: 742=========== 743 744Unix 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 758VMS 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 815OS/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 823Acorn 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 827BeOS 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 837Macintosh 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 854Macintosh 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 860Human68K, TOPS-20, AOS/VS, MVS, VM/CMS, etc. 861 Dunno, sorry... 862