Notes about MS-DOS executables and compilers: - Borland start-up code is reported to switch the screen mode auto- matically if it's not 80 columns (or possibly 40) and either 25, 43 or 50 lines. In particular, extended modes such as 100x40 are not retained. - Borland start-up code also uses interrupt 1Ah, causing incorrect behavior (including lock-ups) on some Japanese MS-DOS machines such as the Fujitsu FMR series, which lack this interrupt. - Some(?) Borland compilers are apparently incapable of putting static data into far memory; this means all of UnZip's strings are in near memory, and there is not enough room to enable ZipInfo in the small memory model. The medium memory model is the default for now, but it may be necessary in some cases to use the large model. - Older Borland compilers do not understand source files with Unix line-endings (LF rather than CR/LF). Use "flip" or a similar utility to convert the line endings before compiling. - The Borland 5.00 compiler is simply too buggy to use on WizUnZip, both 16-bit and 32-bit versions, and we recommend avoiding it for now even on the commmand-line version of UnZip. - Microsoft C 5.1 large-model code is more than an order of magnitude slower than the identical code compiled with MSC 6 or 7 (a factor of 15 in our tests, actually). This may be due to a lousy optimizer or lousy libraries; regardless, since UnZip is hovering at the doorstep of the large memory model, we recommend upgrading to a later version of the compiler. For these reasons, Info-ZIP's distributed versions of the 16-bit MS-DOS executables are compiled with MSC 6 or 7. - The default wildcard ("globbing") behavior of djgpp/go32 is disabled by default in UnZip, but this can be overridden if the GO32 environment variable is set to "glob". This will cause UnZip to fail with various odd errors about "filename not matched" and the like; to avoid this, set the GO32 variable to "noglob" or unset it altogether. (The documented method of avoiding this by quoting wildcards with single quotes was buggy in djgpp 1.11 but is reported fixed in 1.12; not tested.) - djgpp's handling of timezones, necessary for the correct conversion of MS-DOS filetimes to those used in the Unix-like C library, is completely broken in djgpp 1.12 and probably earlier versions as well. It is fixed (or very close to it) in the 1.12m4 patch release and reportedly in the 2.x series, so be sure to use one of those when compiling. Otherwise UnZip's -f and -u (freshen/update) functions will not work correctly. - djgpp/go32 executables, when run in a DOS box under OS/2 *and* extracting to an HPFS disk *and* overwriting existing files (intentionally, that is), do not set the files' timestamps correctly. Instead, the timestamps re- main set to whatever the original files' stamps were. This is a pretty obscure bug, but it does *not* occur in the 16-bit version so it seems to be go32's fault somehow. - According to notes found in another package, there was a known conflict between djgpp 1.x's go32 extender and QEMM's DPMI; this was apparently fixed in QEMM 7.04/QDPMI 1.05, but if you still have an older version (1.03 or 1.01), add "set GO32=nodpmi" to your autoexec.bat to avoid the conflict.) - [For Zip only, the djgpp/go32 extender goes nuts with the copying and/or deletion of some sort of a temporary file (swap file?) after compression is finished; this can take 30 seconds or more and really hurts perfor- mance. It doesn't affect UnZip, apparently.] - emx+gcc's DOS extender does not understand DPMI, and while there is an alternative extender called RSX available (found in dpmigcc4.zip as of August 1994), its setup is somewhat kludgy when the local memory manager supports both DPMI and VCPI (or something else). It's also not yet as widely known or available as djgpp. For these reasons Info-ZIP's distributed 32-bit MS-DOS executables will probably be compiled with Watcom C 10.x and use the PMODE/W extender. If a problem occurs with unzip386.exe, check first if it also occurs with unzip.exe before reporting it. GRR 960427