UnZip, version 5.5, 17 February 2002

Features added (or removed):

5.5a (04 Feb 01):
 - unzip.1: added documentation for the new Acorn NFS filetype features [SPC]
 - generic (inflate.c, globals.h, fileio.c, unzpriv.h): integrated support of
    Deflate64 for all ports with exception of MSDOS and OS/2 16-bit [SPC]

5.5b (11 Feb 01):
 - added Deflate64 support to fUnZip [SPC]
 - added Deflate64 support for 16-bit environments [SPC]

5.5c (18 Apr 01):
 - SFX: made SFX_EXDIR default, added NO_SFXEXDIR option to allow switching
    off the "-d exdir" support [SPC]
 - OS2, WIN32: added presetting of file size for extracted files, to reduce
    file fragmentation [Pavel Lastovicka, Kai Uwe Rommel, SPC]
 - VMS, new functionality of -b option: when extracting to standard output
    (-c or -p), -b switches to "binary piping mode" by disabling text data
    conversion [SPC]

5.5d (28 Apr 01):
 - SFX: added simple "execute command after extraction" feature that uses a
    command specification supplied with the Zip archive comment, controlled
    by the CHEAP_SFX_AUTORUN compile time option [Paul Kienitz]
 - SFX: slightly refined the CHEAP_SFX_AUTORUN code, switched off SFX_EXDIR
    when CHEAP_SFX_AUTORUN is enabled, documented the new autorun feature [SPC]
 - VMS: extended new "binary piping" functionality of -b switch to extraction
    of archive entries with VMS attributes saved [SPC]

5.5f (30 Sep 01):
 - extract.c, TestExtraField(): added crc32 check for PKVMS e.f. type [SPC]
 - added real VMS-e.f. analysis for fool-proof detection of VMS "variable
    length record" text files, enabled VMS_TEXT_CONV as default (but not for
    SFX stub) [SPC]
 - added support for optional ACORN_FTYPE_NFS feature to more OS that allow
    long filenames and commas within filenames (BeOS, Novell, OS/2, Theos,
    Win32) [SPC]

5.5g (05 Nov 01):
 - extract.c, extract_or_test_entrylist(): added code for "stripping off
    absolute path spec" when extracting [SPC]

5.5h (12 Jan 02):
 - unzip.h, unzip.c; mapname() in all ports except CMS/MVS, Tandem, TOPS20:
    added code to strip "../" path components from extracted names and new
    option "-:" to allow deactivating this security feature; changed mapname()
    calling interface to allow reporting warning error levels to caller [SPC]
 - man/unzip.1: documented the new "-:" option [SPC]
 - vms/cmdline.c etc.: added support for "-:" option to VMS DCL interface;
    updated VMS help files with description of "-:" option [SPC]
 - windll/windll.{c|txt}: modified handling of DCL struct's "ndflag" member
    to allow setting the "-:" option through the windll interface [SPC]
 - unzpriv.h, zipinfo.c: rudimentary support for recognizing PKWARE's new
    "64-bit size specs" extra field [SPC]

5.5 (17 Feb 02):
 - unix/Makefile: added separate makefile symbol INSTALL_PROGRAM for command
    to install "binary" (compiled and linked) program files [Santiago Vila]


Bugs fixed:

5.5a (04 Feb 01):
 - all OS with Unix-compatible file attributes (Acorn, AosVS, BeOS, QDOS, Unix,
    and others), mapattr(): corrected wrong masking expression in check for
    missing directory attribute; added this check for ports where it was
    still missing [Eric Siegerman, SPC]
 - inflate.c: reorganized inner loop function for slight performance gain [SPC]
 - explode.c: reorganized code (2 instead of 4 inner-loop function versions),
    fixed memory leaks when get_tree() fails (added huft_free() calls) [SPC]

5.5b (11 Feb 01):
 - inflate.c: some more optimizations (also resulting in easier readable code)
    [SPC]
 - unzip.c: revised work area size calculation in the WORK_MALLOC case, when
    the decompression buffer is malloc'ed separately; removed suspicious
    "one unit excess" allocation (8193 instead of 8192, not clear why this
    was introduced in ancient times) [SPC]
 - VMS - cvthelp.tpu, unzip_cli.help: reformatted CLI help file to show negated
    form of negatable options on a separate line in the header of qualifier
    descriptions [Hunter Goatley]
 - generic: renamed version.h into unzvers.h (for better distinction from zip
    sources) and updated all makefiles [SPC]
 - windll: changed windll.rc to get version info directly from unzvers.h and
    killed windll/unzver.h [SPC]
 - api.c, global.h, extract.c, explode.c, inflate.c, unshrink.c: corrected
    declarations of variables and function parameters holding redirected buffer
    size (unsigned vs. ulg issues), added/modified appropiate type casts [SPC]

5.5c (18 Apr 01):
 - most make procedures: unzipsfx compilation requires completely separate
    object files (exception: crc32), because global structure is now different
    from unzip setup (sfx: no Deflate64!) [Thom Schmidt, SPC]
 - inflate.c: moved macro definitions for invalid huft code marker out of
    "no ZLIB only" code part; it is used in huft_build() [Thomas Klausner]
 - AMIGA, HUMAN68K: replaced specific mkGoff.c helper program sources by a more
    generic gbloffs.c source (located in the top level directory); adapted
    makefiles to this change [SPC]
 - win32/win32: modified version() to recognize Borland C++ 5.5.1 [SPC]
 - AMIGA: adapted assembler core routine flate.a to Deflate64 and the 64k
    extraction buffer; adapted inflate setup to allow for 16bit ints in
    an otherwise 32-bit environment [Paul Kienitz]
 - human68k/flate.s: incorporated Paul's updates of amiga/flate.a in the
    HUMAN68K source variant [SPC]
 - MacOS: updates from MacZip release 1.07b [Dirk Haase]
 - unzpriv.h: updated exceptions of "made by FAT -> filename charset is OEM"
    rule to now include the PKZIP 4.0 case [SPC]
 - unzpriv.h, extract.c zipinfo.c: in preparation to multivolume support,
    struct min_info has been extended to hold the entry's disk volume number
    (to conserve space, hostnum & hostver members are shortened to uch) [SPC]
 - extract.c, extract_or_test_files() function: isolated code of "second loop"
    in a separate function, in preparation for multivolume support [SPC]
 - os2/os2.c: use posix-style mkdir definition whenever __GNUC__ is defined,
    for better compatibility with non-EMX gcc ports [Pavel Lastovicka, SPC]
 - windll/windll.c: added missing SETLOCALE() initialization to Wiz_Init()
    [Kevin Cheng]
 - WINDLL port: in windll.c, changed FreeDllMem() scope into static; tried
    to clarify in windll.txt that Wiz_SetOpts() and Wiz_Unzip() must be
    used as a pair of functions [SPC]
 - VMS: removed unused and undocumented /TYPE switch from CLI interface [SPC]

5.5d (28 Apr 01):
 - unix/Makefile: correction for LynxOS target [Mark Clayton]
 - extract.c: synchronized extract_or_test_entrylist() prototype declaration
    for the SET_DIR_ATTRIB case with actually used function interface [SPC]
 - vms/descrip.mms: corrected typo in match_$O rule [Michael Lemke]
 - vms/vms.c: limit buffer size for single block output to less than 64k
    (RMS limit on VAX); corrected record overflow checks to use the right
    RMS limit of (32k-1) [Mike Freeman, SPC]
 - unzver.h: renamed COMPANY_NAME symbol to IZ_COMPANY_NAME, check for
    symbol being already defined; restrict definition of OS/2-DLL specific
    version symbols to OS/2 port [Mike White, SPC]
 - windll/uzexampl.c: corrected inclusion path of unzver.h [Mike White]
 - acorn/GMakefile: need NO_STRNICMP, fixed missing renaming of version.h
    into unzvers.h [Andy Wingate]
 - vms/vms.c: fixed long standing bug BUFS512 expression - clipping to a
    multiple of 512 is achieved by ANDing with ~511 instead of ~512 [SPC]

5.5e (29 Apr 01):
 - vms/vms.c: added missing -c handling in WriteBuffer() to make the "-b"
    binary piping mode functional [SPC]

5.5f (30 Sep 01):
 - OS2, WIN32: reenable -X "restore ACLs" option (has been broken since
    version 5.42 due to incomplete change by SPC [Michael Ringe, SPC]
 - moved IZVMS specific e.f. decompression from vms/vms.c into extract.c, this
    functionality is now needed for generic VMS_TEXT_CONV feature [SPC]
 - zipinfo.c: fixed 16-bit specific bug in verbose IZVMS e.f. report [SPC]
 - unix/unxcfg.h: fixed setup for GNU/Hurd [Marcus Brinkmann]
 - tandem/tandem.c: fixed copy&paste typo in stat() [<YuZH@spdb.com.cn>]
 - vms/cmdline.c: verbatim '%' signs in format specification strings are
    "escaped" by doubling them, to prevent compiler warnings for newest
    DEC (COMPAQ) C versions [Dirk Munk, SPC]
 - tandem/tanunz.c, tandem/tandem.[ch], fileio.c: created Tandem-specific
    version of open_outfile(), moved UNZIP part of zipopen() code into this
    function [SPC]
 - generic: added ZCONST attributes to several function string pointer
    parameters when the function does not modify the string contents [SPC]
 - Contents, README, INSTALL, ToDo, WHERE: documentation updates [SPC]

5.5g (05 Nov 01):
 - win32/Makefile.bc: completed support for guisfx stub and static lib [SPC]
 - vms/vms.c: in find_vms_attrs(), fixed IZVMS ef-block parser which has been
    broken by changes for 5.5f beta [SPC]
 - acorn/acorn.c: fixed missing semicolon in setRISCOSexfield() prototype
    declaration [Andy Wingate]
 - win32/Makefile.bc: removed -q flag for compatibility with older versions
    of Borland C++ Builder [E-Yen Tan]

5.5h (12 Jan 02):
 - man/*.1: modified manpages to be more "friendly" to automatic conversion
    tools into the OpenSource "DocBook" format [Eric S. Raymond];
    tested new manpages and corrected some formatting quirks [SPC]
 - extract.c: corrected size mismatches between format specifiers and actual
    numeric arguments [SPC]
 - msdos/msdos.c: cleanup of token concatenation preprocessor warnings emitted
    by GCC 3.02 [SPC]
 - process.c: moved definition of symbol SPARKID_2 from acorn/riscos.h into
    this file (symbol used by getRISCOSexfield()) [Santiago Vila, SPC]
 - unzip.c, unzip() main function, REENTRANT code: fixed signal handler "leak"
    by saving previous state of all allocated signal handlers and restoring
    them at function exit [Jim Mathies, SPC]
 - unzip.h, unzpriv.h: moved "internal" function return codes (IZ_DIR etc.)
    into the private main header unzpriv.h [SPC]
 - extract.c, fileio.c: extended UNIXBACKUP optional functionality to create
    "numbered" backup filenames, fixed behaviour when backup file already
    exists (-o option switches off numbered backup files and overwrites the
    first backup file when neccessary) [Mauricio Ponzo, SPC]
 - unzpriv.h, fileio.c, process.c: changed ZLSEEK macro into a real function
    seek_zipf() (located in fileio.c); added check of return code to its
    calls; fixed filehandle leak in do_seekable() that occured in case of
    ZLSEEK errors [Miki Shapiro, SPC]
 - wince/intrface.cpp: added SetFileSize() function to preallocate extraction
    file space, as implemented in the win32 port (dummy function for WinCE
    native compiles because availability of system service is unknown) [SPC]
 - funzip.c: changed skope of err() helper function to "static" [Mark Adler]

5.5i (01 Feb 02):
 - acorn/acorn.c: correct dir traversal security fix (Acorn uses '^'as parent
    folder reference); update and enhance the special character translations;
    static printRISCOSexfield() functions must only be declared when its
    definition is active [Darren Salt]
 - unzip.h, unzip.c, man/unzip.1: disabled -: option for Acorn [SPC]
 - amiga/flate.a, amiga/makefile.azt: modified the way of including gbloffs'
    output in the assembler inflate code [Paul Kienitz]
 - gbloffs.c: corrected USE_DEFLATE64 symbol name, added missing type cast to
    CRYPT symbol handling [Paul Kienitz]
 - unix/Makefile: corrected and renamed target(s) for MacOS X [Mark Adler, SPC]
 - acorn/makefile: make does not like recursive macro definitions [Darren Salt]
 - unreduce.c: indented the #error message directive to hide it from pure
    traditional K&R C style preprocessors [Peter Jones, SPC]
 - amiga/filedate.c: exclude time handling code from Zip utility compiles
    (a Zip change) [Paul Kienitz]
 - acorn/GMakeFile: updated machine-specific options, used standard "gcc" as
    command driver for linking [Andy Wingate]
 - unix/unix.c, mapname(): removed extranous opening parentesis from optional
    ACORN_FTYPE_NFS only code [Santiago Vila, SPC]
 - acorn/acorn.c: corrected location of the MimeMap module [Darren Salt]
 - acorn/riscos.c: fixed problem with readdir() sometimes not detecting end-
    of-dir on "RISCOS V4 long directory format" FSs [Darren Salt]
 - msdos/makefile.wat, os2/makefile.os2, win32/Makefile.wat: updated the
    Watcom C support, checked MSDOS builds, added win32 DLL target [SPC]

5.5j (11 Feb 02):
 - acorn/GMakefile, acorn/Contents: made clean target working as expected,
    updated and moved version info of gcc used (Andy Wingate)
 - tandem/make: added support for switching on/off of CRYPT option [Dave Smith]
 - tandem/HISTORY: updated "version of current binaries" info [Dave Smith]
 - tandem/tanunz.c, open_outfile(): removed unneeded fopen redefines [SPC]
 - tandem/tanunz.c, checkdir(): fixed missing closing ')' of FnFilter2 macro
    calls [Dave Smith]
 - LICENSE: clarification that unmodified UnZipSFX stub binaries can be
    distributed as part of SFX Zip archives without any further documentation
    requirements [Christian Spieler, Ian E. Gorman, Greg Roelofs]

5.5 (17 Feb 02):
 - inflate.c, explode.c, globals.h, unzpriv.h: changed type of "extra bits"
    arrays used to build the decoding huffman trees from "ush" into "uch" for
    optimization and adapted corresponding variable types [SPC]
 - tandem/tandem.c: small cosmetic changes to catch up with Zip mods [SPC]
 - unzpriv.h, tandem/tandem.h: removed Zip-specific settings, implemented the
    USE_EF_UT_TIME default setting for both Zip and UnZip in tandem.h, removed
    corresponding entry from unzpriv.h [SPC]
 - LICENSE: refinement of the SFX stub related insertion [Greg Roelofs]
 - windll/windll.rc: updated copyright year [SPC]
 - msdos/makefile.dj1, msdos/makefile.dj2: added missing header dependencies,
    corrected wrong object list for unzipsfx target (only .dj1) [SPC]
 - tandem/tanunz.c, open_outfile(): repaired wrong variable names, added
    "upshifting" of filename before executing system calls [Dave Smith]
 - unzpriv.h, TANDEM setup: define INT_16BIT symbol when compiling in NON WIDE
    mode to get DEFLATE64 option to work [Dave Smith]
 - win32/Makefile.wat: finished "$(OBJS)" -> "$(OBJU) conversion [Paul Kienitz]
 - win32/w32cfg.h: Watcom C requires IZTZ_DEFINESTDGLOBALS setting when using
    the timehandling replacement code from timezone.c [Paul Kienitz]
 - README, unzvers.h: removed BETA notes for public release [SPC]
 - os2/os2.c, SetFileSize(): 16-bit OS/2 needs fake code here [Kai-Uwe Rommel]
 - unzpriv.h: added ZCONST to varmessage() buf arg [Kai-Uwe Rommel, SPC]
 - os2/os2.c: added #ifndef FUNZIP sections to allow inclusion of this module
    in the object modules list for 16-bit fUnZip targets [SPC]
 - os2/makefile.os2: fixed 16-bit targets to include os2f.obj resp. msdosf.obj
    in the fUnZip object modules list [SPC]
 - fileio.c, do_string(): added typecasts in CHEAP_SFX_AUTORUN option code to
    remove signed/unsigned mismatch warnings [Hunter Goatley]

==================

These changes occurred in beta versions 5.5a to 5.5.  This list may have
left out some bugfixes and even some features...void where prohibited, your
mileage may vary, etc., etc.

Christian Spieler
