------------------------- August 7th 1996 version 2.2a ------------------
 1. QDOS port (Jonathan Hudson)
 2. win32 volumelabel handling (Paul)
 3. VM/CMS clean up (Greg Hartwig)
 4. leading "../" in internal filenames are allowed (Paul)
 5. System V packages support (John Bush)
 6. Fix handling of atx in zipup() (Onno, Greg)
 7. Fixed typo that caused zip -R to dump core (Onno)
 8. msdos/makefile.dj2: fix for command line too long when linking zip.exe
 9. win95 long filename support with djgpp v2 (Onno, Kimio Itoh)
------------------------- August 9th 1996 version 2.2b ------------------
 1. windll: use wiz instead of wizip (Mike)
 2. use z->name NOT z->zname to open files (Onno, Mike)
------------------------ September 1st 1996 version 2.2c ------------------
 1. windll: use fprintf instead of putc to send data to std{out,err} (Mike)
 2. os2: make borlandc version detection equal to unzip 5.30d (Kai Uwe)
 3. use #elif constructions for msdos,os2 and win32 compiler detection (Onno)
 4. fix for incorrect free in zip.c (Onno, Mike, Steve)
 5. BeBox port from Chris
 6. unix/{configure,Makefile} fixes for SCO Xenix 286 (Tom Schmidt)
 7. remove zilog entry from unix/Makefile (Onno)
 8. man page fixes (Tom Schmidt)
 9. SCO ODT {3,5} fixes (Bill Davidsen)
------------------------ October 8th 1996 version 2.2d ------------------
 1. Fix bug in QDOS patch that broke zipsplit.c (Onno, Paul)
 2. Fix a couple of warnings from BorlandC (Mike)
 3. msdos/makefile.wat: Delete some more files when cleaning up (Paul)
 4. store msdos volumelabels without a dot in them (Paul)
 5. clean up of unix/{Makefile,configure,packaging} (Tom Schmidt)
 6. make QDOS port case independent (Jonathan Hudson)
 7. new amiga SASC makefile (Walter Haidinger)
 8. don't truncate filenames in win32's in2ex() (Paul)
 9. os2/makefile.os2 update for emx 0.9c (Kai Uwe)
10. password() function for QDOS (Jonathan)
11. fix the last(?) free() related bug (Mike)
12. win32: security descriptors operations (Scott Field)
13. win32: FILE_SHARE_DELETE is not defined in some win32 compilers (Onno)
14. win32: fix makefile.wat to include nt.c (Onno)
------------------------ January 17th 1997 version 2.2e ------------------
 1. define USE_CASE_MAP in osdep.h for those ports that need it (Onno)
 2. define PROCNAME in osdep.h for those ports that need it (Onno)
 3. wild() prototype decl only if PROCNAME defined => delete MSVMS define (Onno)
 4. add DOS EMX makefile (E-Yen Tan)
 5. include <qdos.h> a little earlier in qdos/qdos.c (Jonathan)
 6. add ttyio.o to OBJZ in qdos/Makefile.qdos (Jonathan)
 7. remove unused fprintebc define from zip.c (Onno)
 8. use the right password routine in ttyio.c for unzip (Mike)
 9. BeOS update from Chris
10. Fix for 'zip -r foo x:' (Paul)
11. Fix library bug on beos (Chris)
12. Fix calculating version number (kitoh_@mix.or.jp, Walter Haidinger)
13. IsWinNT always returned TRUE (Mike)
14. Windll update from Mike
15. Improved crc routines for x86 from Scott Field
16. Detect in unix/configure if we can use crc_i386.S (Onno)
17. Fix spurious internal logic error (Paul)
18. Fix to include directory names on the Acorn when needed (Sergio)
19. include zip.h in mvs.h (Onno, George Carr)
20. add workaround for AZTEC C compiler bug to revision.h (Paul, Walter)
21. MVS doesn't have rmdir (George Carr)
22. define and use USE_ZIPMAIN for WINDLL en VM_CMS (Onno)
23. Fixes from Greg Hartwig to make CMS standalone versions possible.
24. Move OS specific encryption stuff to the os specific directories (Christian)
25. Change password fetching interface in ttyio and crypt (Christian)
26. Update emx support for 0.9c (Christian)
27. Define WINDLL instead of MSWIN (Christian)
28. Extended time stamp extra field format support (Christian)
29. Support for rsxnt-emx 0.9c win32 compiler (Christian)
30. Use izshr017b (Christian)
------------------------ March 11th 1997 version 2.2f ------------------
 1. Move makefile.emx, rsxwinnt.h and zip.def to win32 subdir (Kai Uwe)
 2. Add win32 target to makefile.os2 to allow cross compilation (Kai Uwe)
 3. Fix NTSD_EAS link time failures with win32 (Paul)
 4. Fix buffer freed too early in password verification code (Mike)
 5. Remove unix/zipgrep and man/zipgrep.1 (sanvila@ctv.es)
 6. Only use crc_i386.o when we're using an x86 (Onno, Mark)
 7. Remove carriage returns from amiga/crc_68.a (Paul)
 8. New windll from Mike
 9. Fix typo in os2/os2zip.c (Kai Uwe)
10. Don't use ctime (last file status change) for unix and qdos cross compile
    (Greg)
11. added gccwin32 crosscompilation target (RSXNT) to os2/makefile.os2 (Kai Uwe)
12. fixed the OS/2 file attribute and time stamp generation for zipping
    stdin ("-") (Kai Uwe)
13. fixed the atime and ctime stat fields for the OS/2 Watcom C library
    (Kai Uwe)
14. added atime and ctime support for the UT extra field when generated under
    OS/2, the atime and ctime values are only stored when zipping (Kai Uwe)
15. qdos patches from Jonathan Hudson mainly for extended time flag handling
16. amiga aztec compiler bug workaround (Paul)
17. fix -v output of zipcloak, zipnote and zipsplit (Paul)
18. new amiga/makefile.azt with targets for debug versions (Paul)
------------------------ March 31st 1997 version 2.2g ------------------
 1. remove -I/usr/local/include from unix/Makefile (Chris)
 2. Update versinfolines in revision.h (Greg)
 3. change 1U to 0x1 to accomodate non ANSI compilers (Onno, Rodney Brown)
 4. win32zip.c: cast buffer parameter in memcompress() to char * (Mike)
 5. remove beos/zipgrep (Chris)
 6. correct the -e password verification check in zip.c (Christian)
 7. use ZCONST instead of const in the generic code. (Christian)
 8. fix mktime timezone correction when time is near to daylight/nodaylight
    switch points. (Christian)
 9. correct dependencies in makefile.os2 (Christian)
10. use a more sensible default for iztime.ctime than "0" when system does not
    not support creation time stamps. (Christian)
11. fix VMS_PK_EXTRA function interface declarations. (Christian)
12. implement atime/ctime support in win32. (Christian)
13. win32/win32.c: replacement getch() for Watcom. (Paul)
14. win32/makefile.wat: debug object files kept separate. (Paul)
15. msdos/makefile.wat: debug object files kept separate. (Paul)
16. Fix extended time defines for the acorn. (Sergio)
17. Define PROCNAME() in acorn/osdep.h (Sergio)
18. Ignore exit status of ${INSTALL_D} in unix/Makefile (Chris)
19. Add Metroworks and BEOS info to version() in several files (Chris)
20. Move defines for the password fetch to zip.h (Christian)
21. Support the obsolete version rsxnt 1.1 / emx 0.9b (Christian)
22. Remove obsolete "#define PROCNAME ..." from cmsmvs/cmsmvs.h (Christian)
23. Fix extended time defines for qdos (Jonathan Hudson)
24. Use watcom getch() from unz530q in win32/win32.c (Onno)
25. Don't install zipgrep via the unix package tools (John Bush)
26. use izshr021 (Onno)
27. Fix zipnote: use iname not zname in zipnote.c (Onno)
28. Create proginfo directory (Christian)
------------------------ May 5th 1997 version 2.2h --------------------
 1. Fix vms/zipup.h: iztime --> iztimes  (Onno, Mike Freeman)
 2. Remove windll/wizdll.def (Mike)
 3. Add a couple of external variable declaration to windll.h (Mike)
 4. Remove zipgrep from install in unix/Makefile (Onno)
 5. Make updating .zip files with extended time fields possible (Kai Uwe)
 6. Delete beos/Makefile.gcc, beos/Makefiles handles both compilers (Chris)
 7. Fixes for unused variables (Chris)
 8. Added very simplistic example how to load and call the windll (Mike)
 9. Updated windll documentation to note this example (Mike)
10. Removed an unused memeber of a structure in windll (Mike)
11. Add BUGS instead of infozip.who and algorith.doc with the packaging
    tools (John Bush)
12. tailor.h: increment NUM_HOSTS to keep in sync with UnZip (Christian)
13. win32/osdep.h: remove NO_SECURE_TESTS define (Christian)
14. zip.h: add declaration for free_crc_table() (Christian)
15. windll: move everything that's not windows specific into api.* (Mike)
16. use iname when checking for directory names in zipfile.c (Sergio)
17. improved mktime.c with better error checking (Christian)
18. improved crc routines (Christian, Rodney Brown)
19. get the -z option working again (Onno, Brad Clarke)
20. define BROKEN_FSEEK and seekable() for those systems where fseek()
    always returns 0 (== OK) (Onno, Jeffrey Altman)
------------------------ May 10th 1997 version 2.2i --------------------
 1. win32's seekable should only check for FILE_TYPE_DISK (Onno, Jeffrey Altman)
 2. add (ulg) cast to zipbeg = ~0 in zipfile.c (Steve)
 3. seekable() *really* belongs in flush_block, keep it there (Onno)
 4. seekable() calls fseekable(FILE *) (Onno)
 5. define HAVE_FSEEKABLE if a port has their own fseekable (Onno)
 6. WatCom doesn't have _get_osfhandle, use _os_handle instead (Paul)
 7. upgrade to Mike's latest windll sources (Mike)
 8. add -P option so you can specify a password on the commandline (Onno)
 9. Get -@ working again (Onno)
10. emx+RSXNT doesn't know about _get_osfhandle() (Kai Uwe)
11. fix a couple of typos in the OS/2 makefiles (Kai Uwe)
12. fix initialization bug in windll code (Mike)
13. tweak deletedir for RISC OS (Sergio)
14. RISCOS doesn't know about fstat() (Sergio)
15. Remove acorn/acorn (Sergio)
16. Delete debugging statements from version_local() in msdos.c (Greg)
17. Fix huge bug in readzipfile() (Onno)
------------------------ May 18th 1997 version 2.2j --------------------
 1. Add missing ';' after return ZE_PARMS in zip.c (Mike)
 2. Remove obsolete 'struct stat st' in zipfile.c (Onno)
 3. Get Amiga SFX handling working again (Paul)
 4. Get zip -A working again (Onno)
 5. Change an && to & in zipfile.c (Johnny)
 6. Fix handling of empty sfx archives (Onno, Mike)
 7. Remove experimental entries from the makefiles (Jean-loup)
 8. Add exit codes to the manual page (Onno)
 9. Remove lines from the help screen that contain lesser used options (Onno)
------------------------ June 8th 1997 version 2.2k --------------------
 1. use zip -t ddmmyyyy for year 2000 stuff (Greg)
 2. zip -@ only handles ONE filename per line (Jean-loup)
 3. beos support for DR9 filesystem and symlinks (Chris)
 4. VB support for windll (Mike)
------------------------ June 10th 1997 version 2.2l -------------------
 1. beos filetype support (Chris)
 2. fill the buffer in getnam() to get it working again (Onno)
 3. implement -x@filename and -i@filename (Onno)
------------------------ June 22nd 1997 version 2.2m -------------------
 1. Add a ; after de nextarg label in main() (Onno, Erik Baatz)
 2. Initialize p to NULL in get_filters() (Onno, Frank Donahoe)
 3. Fix typo in first if statement in filetypes() (Johnny Lee)
 4. zip -A works again (Onno, Greg)
 5. don't free zipbuf for VMS and CMS_MVS in main() (Onno, Mike Freeman)
 6. fix make_zip.com, link_zip.com and vmsdefs.h for gcc 2.6.3 on VMS (Onno)
 7. clarify -g option in the man page (Jean-loup)
------------------------ July 6th 1997 version 2.2n -------------------
 1. use local in readzipfile2() declaration (Onno, Mike Freeman)
 2. return values with windll in get_filters() (Mike)
 3. a couple of minor patches for BEOS (Chris)
 4. zip -g works again (Onno, Chris)
 5. Some more Visual Basic dll support (Mike)
 6. Fix stack overflow in readzipfile() for DOS (Onno, Michael Mauch)
------------------------ August 19th 1997 version 2.2o -------------------
 1. beos README and Makefile tweaks from Chris.
 2. Syntax corrections for README and man/zip.1  (Frank Donahoe)
 3. Use name not iname when deleting directories in trash() (Christian)
 4. change several wkuvx1 to lists in e-mail addresses (Christian)
 5. default to PK style extra fields for VMS (Christian)
 6. use izshr023 (Christian)
 7. replace buggy time library functions (Walter Haidinger, Paul, Christian)
 8. in2ex() and stat() are needed also when UTIL isn't defined (Greg Hartwig)
 9. don't use type=record in fopen() for MVS and CMS (Greg Hartwig)
10. Change P and K literals to hex for EBCDIC systems (Greg Hartwig)
11. Add output path support for CMS and MVS (Greg Hartwig)
12. Add memtoasc and memtoebc for EBCDIC systems (Greg Hartwig)
13. Handle comments correctly to fix zipnote for CMS and MVS (Greg Hartwig)
14. Add -tt option (do not operate on files after date mmddyy) (Christian)
15. move alloc routines for DOS into the !UTIL block (Christian)
16. move UTIL blocks and version_local() functions to a more logical place
    (Christian)
17. Handle -P, -R, -x@, -i@ and -tt for the VMS CLI (Christian)
18. Update VMS help file with the new options (Christian)
19. Use iname in MATCH, not zname (Jonathan Hudson)
20. windll: more Visual Basic support (Mike)
21. windll: more project makefiles (Mike)
22. windll: insert Zip in front of global variable names (Mike)
------------------------ August 25th 1997 version 2.2p -------------------
 1. Remove unused flags from LFLAGS2 in unix/Makefile (Onno)
 2. SunOS make bug: change unix_.o rule in unix/Makefile (Onno, Mike Freeman)
 3. ZipIsWinNT() instead of IsWinNT() in zip.h (Mike)
 4. Fix -t and -tt behaviour for windll (Mike)
 5. Remove windll makefiles that are now elsewhere (Mike)
 6. BEOS: preserve file attributes associated with symbolic links (Chris)
 7. No need to use in2ex() for ziputils (Christian)
 8. Fix comment handling for EBCDIC systems (Christian)
 9. EBCDIC conversion for entry names read from zipfile in UTIL mode (Christian)
10. Fix "fatal" error messages on EBCDIC systems (Christian)
11. zipnote.c: Fix handling of entry name changes for EBCDIC systems (Christian)
12. removed a large part of "dead" code from ziputils version (Christian)
13. use z->iname in comparison functions for sorting (Christian)
14. new installation utils for the acorn (Sergio)
15. use LSSTAT in set_extra_field for unix and beos (Onno)
16. perror(z->zname) instead of perror("zip warning") (Onno, Geoff Pennington)
17. Amiga SFX should work again (Paul)
18. refer to zip22 in install.doc (Frank Donahoe)
------------------------ September 10th 1997 version 2.2q -------------------
 1. Change .doc to .txt, these aren't MS-Word documents (John D. Mitchell)
 2. Change msdos$_(OBJ) to msdos_$(OBJ) (Kai Uwe)
 3. Fix a couple of amiga related glitches (Paul)
 4. Support for DOS packed .exe files in makefile.dj2 (Frank Donahoe)
 5. Change warning message for zip -A (Greg)
------------------------ September 29th 1997 version 2.2r -------------------
 1. Fix make svr4package (Eric Baatz)
 2. Fix VMS warning (Mike Freeman, Christian)
 3. Clean up beos gcc port and beos README (Chris)
-------------------------- October 6th 1997 version 2.2s --------------------
 1. Change lpPrint to lpZipPrint for windll (Mike)
 2. Change lpPassword to lpZipPassword for windll (Mike)
 3. Amiga timezone fixes (Paul)
 4. WatCom C 11.0 makefile fixes (Paul)
 5. Tandem port from Dave Smith
 6. Corrections and updates for install.txt (Christian)
 7. Minor VMS README update (Christian)
-------------------------- October 12th 1997 version 2.2t --------------------
 1. qdos compiler bug workaround (Jonathan)
 2. prevent storing qdos specific filenames that exceed filesystem limits
    (Jonathan)
 3. fix undelimited comment in fileio.c (Frank Donahoe)
 4. disable storing of symlinks in BEOS until OS support is available (Chris)
 5. Init hash_head to 0 in amiga/deflate.a (Paul)
 6. Upgrade to izshr025 (Christian)
 7. don't add ".zip" to ZIP name for TANDEM (Dave Smith)
 8. use zipup.h not tandem.h in zipup.c (Dave Smith)
 9. rename history to CHANGES (Onno)
10. rename install.txt to INSTALL (Onno)
11. rename zip.txt to ZIPMAN (Onno)
12. create WHATSNEW (Onno)
-------------------------- October 15th 1997 version 2.2u --------------------
 1. Use Info-ZIP instead of Info-Zip (Christian)
 2. Note recent filename changes in several files (Christian)
 3. Remove a couple of items from the TODO list (Christian, Onno)
 4. Add windll port, zip -t yyyymmdd and zip -R to WHATSNEW (Christian)
 5. VMS documentation cleanups and clarifications (Christian)
 6. dist entry in unix/Makefile (Onno)
 7. remove duplicate amiga/timezone.txt (Christian)
 8. rename ZIPMAN to MANUAL and update a couple of files regarding this (Onno)
-------------------------- October 24th 1997 version 2.2v --------------------
 1. izshr026: in WHERE wiz40 instead of wiz30 (Christian)
 2. izshr026: another couple of Info-ZIP spelling fixes (Christian)
 3. Remove zipgrep from the makefiles that still had it (Christian)
 4. Update makefiles to handle the MANUAL renaming change (Christian)
 5. Fix the last daylight savings bug on the Amiga (Paul)
 6. Fix the SCO Unix specialty detection in unix/configure (Onno,
    bug reported by Bo Kullmar for Solaris 2.6 and with uname -X output
    for SCO Unix from ken@apisys.com and dgsmith@vnet.ibm.com)
 7. Update WHERE and amiga/time_lib.c from unzip 5.32g (Greg)
-------------------------- October 26th 1997 version 2.2w --------------------
 1. Additional +Onolimit check in unix/configure (Onno, Peter Jones)
 2. Use ZIPERR macro instead of ziperr (Christian)
 3. initialize z->lflg for zip entries without extra field (Christian)
 4. "local (+ locextend)" vs. "central" header consistency check (Christian)
 5. Override local header values with central header values with -A
    and differences between these headers (Christain)
 6. made "deltaoff" signed long; offset adjustment may be negative (Christian)
 7. fix a number of "wild" deallocation bugs (Christian)
 8. When zipping from a FAT drive (only 8.3 DOS names) under OS/2 or
    WIN32, set z->vem to "OS_DOS | <real zip version number>".
    Mark as "made by DOS PKZIP 2.0" only when dosify was requested. (Christian)
 9. DOS port should not store fake unix style external attributes. (Christian)
10. amiga/time_lib.c from izshr028 (Christian)
-------------------------- October 31st 1997 version 2.2y --------------------
 1. amiga/time_lib.c from izshr029 (Christian)
 2. Turbo C++ version code clarification (E-Yen Tan)
 3. Fix spelling in cmsmvs/zipname.conven (Rodney Brown)
 4. Fix memset check in unix/configure for Unixware 2.1.1 (Rodney Brown)
 5. Forward declaration fixes for HP-UX bundled compiler (Rodney Brown)
-------------------------- November 3rd 1997 version 2.2 --------------------
 1. Update WHERE (Greg).
-------------------------- January 4th 1998 version 2.21a -------------------
 1. BSD friendly version of version_local() in unix/unix.c (Onno)
 2. No NT versions in DOS version_local() (Steve Salisbury)
 3. -t mmddyyyy instead of -t ddmmyyyy in WHATSNEW (Walter Haidinger)
 4. use generic fseekable() for rsxnt (Christian)
 5. Fix MSC 8.x warnings (Christian, Steve Salisbury)
 6. win32 Borland C++ makefile (E-Yen Tan)
 7. Tandem doesn't know about extensions like .zip,.arj, ... (Dave Smith)
 8. Use dosmatch for EMX and DJGPP too (Christian)
 9. dummy djgpp startup functions to remove command line globbing and
    recognition of environment variables from djgpp.env (Christian)
10. include DJGPP_MINOR in DOS version_local() (Christian)
11. TC 2.0 doesn't have mktime() (Christian, mmp@earthling.net)
12. VMS: rename opendir() to zopendir() so avoiding name clash with
    VMS 7.x POSIX libraries (Christian, Martin Zinser)
13. Add support for VMS DEC C V 5.6 features (Christian)
14. Use iname for comparison in check_dup (Christian Spieler, Christian Michel)
15. Fix access to uninitialized ioctx records in vms_get_attributes()
    Christian, Robert Nielsen)
16. Parenthesis around MAX_MATCH>>1 in match.S (Greg)
17. Use strchr() not strrchr() for -i and -x to get -i@ and -x@ really
    working (Onno, Kai Uwe)
18. add chmod statements to unix/Makefile (Quentin Barnes)
19. Windll: handle both -r and -R (Mike)
20. Windll: general error handler in main() via setjmp/longjmp (Mike)
21. Don't allow zip -i@x.lst foo.zip (Onno)
22. vms/link_zip.com: use .eqs. not .nes. when checking with f$search
    for the zip AXP object library (David Dachtera)
23. rsxnt 1.3.1 fixes (E-Yen Tan)
-------------------------- January 20th 1998 version 2.21b -------------------
 1. Bigger PATH_MAX for win32's windll (Mike)
 2. Update windll.txt w.r.t. PATH_MAX (Mike)
 3. Amiga SAS/C fixes (Walter, Paul)
 4. zip -i@ and -x@ should *really* work now ...... (Onno)
-------------------------- February 20th 1998 version 2.21c -------------------
 1. make -f unix/Makefile qnx needs LN=ln in its options (Chris)
 2. Support Metroworks Codewarrior/x86 on BEOS (Chris)
 3. Add Norbert Pueschel to proginfo/infozip.who (Walter)
 4. Use big endian for Be types (Chris)
 5. zip -i and -x were broken by the -i@ fix last time around (Christian)
 6. win32 stat bandaid (Paul)
 7. acorn filetype and timestamp fixes (Sergio, D. Krumbholz)
 8. update to izshr30 (Christian)
 9. Support for NTSD in the RSXNT environment (Christian)
10. restructure readzipfile() (Christian)
11. Where needed define MATCH in osdep.h (Christian)
12. version_local() fixes for RSXNT (Christian)
13. New vmsmunch.c (Christian)
-------------------------- March 15th 1998 version 2.3a -------------------
 1. Fixes for the windll API (Mike)
 2. Use CPUTYPE in BorlandC Makefile for DOS (E-Yen Tan)
 3. BEOS: -rostr not available for the x86 compiler (Chris)
 4. preserve file attributes of a symlink on BEOS (Chris)
 5. New VM/CMS README.CMS and version_local() (Ian Gorman)
 6. INSTALL fixes from Takahiro Watanabe
 7. OS/390 port from Paul von Behren
 8. new api.h from Mike
-------------------------- April 19th 1998 version 2.3b -------------------
 1. Improve Tandem file I/O performance (Dave Smith)
 2. New VM/CMS README.CMS and version_local() (Ian Gorman)
 3. cygwin32 port from Cosmin Truta
 4. Workaround for tasm32 5.0 bug in win32/crc_i386.asm (Cosmin Truta)
 5. win32/match32.asm fixes for tasm 5.0 (Cosmin Truta)
 6. simplify OS/390 port (Christian)
 7. win32 timezone handling fixes (Christian)
 8. fix 40-bit time conversion on the acorn (Sergio and Christian)
 9. strip network part from UNC type filenames (Christian)
10. Makefile for OpenMVS (Ian Gorman)
11. Use the Watcom getch() for cygwin32 (Christian)
12. Borland C++ 5.x added to win32's version_local() (Cosmin Truta)
13. Borland C++ needs tzset() in win32 (Christian, Cosmin Truta)
-------------------------- May 21st 1998 version 2.3c -------------------
 1. Better error messages for -i and -x (Christian)
 2. Win32 stat() wrapper needs dos2unixtime (Christian,Paul,Mike)
 3. DJGPP: use _chmod to handle LFN attributes correctly (Michael Mauch)
 4. Fix Borlandc warnings (Mike)
 5. win32/makefile.bor fixes from Michael Mauch
 6. win32/makefile.{dj,emx} fixes from E-Yen Tan
 7. Use izshr031 (Christian)
 8. CMS: use RECFM=V LRECL=32760 by adding "byteseek" (Greg Hartwig)
 9. Check external name for trailing "/" (Greg Hartwig)
10. More specific info in CMS version_local() (Greg Hartwig)
11. Changed usage info to refer to "fm" rather than "path" on CMS (Greg Hartwig)
12. No more "extra data" messages when using the same OS (Greg Hartwig)
13. Rewritten README.CMS, one version for ZIP and UNZIP (Greg Hartwig)
14. DOS/OS2/WIN32/UNIX: ex2in() strips off "//host/share/" from UNC names (SPC)
-------------------------- June 23rd 1998 version 2.3d -------------------
 1. Fixed Win32's stat() bandaid handling of time stamps (SPC)
 2. General fix of file selections for DELETE and FRESHEN action (SPC)
 3. CMS_MVS: Use ASCII coding for TIME extra field ID (SPC)
 4. EBCDIC: Repaired bogus CMS_MVS fix in zipup.c; check the internal
    name for trailing (ASCII) '/' to detect directory entries (SPC)
 5. Use explicit ASCII coding when comparing or setting chars in iname (SPC)
 6. Fixed win32/makefile.bor, win32/makefile.dj (support NTSD),
    win32/makefile.emx (SPC)
 7. Replaced win32/makefile.cyg by win32/makefile.gcc, containing new
    support for mingw32 GCC environment (SPC)
 8. Use izshr032 (SPC)
 9. Modified zipup.c to hold (un)compressed lengths in "ulg" variables, in
    an attempt to support handling of huge (>2GByte) files. (SPC)
10. Removed some duplicate #defines from api.h, they are now in crypt.h (SPC)
11. Reenabled "extra data size" info messages in noisy mode for all systems
    except RISCOS and CMS_MVS (SPC)
12. For EMX 0.9c, the runtime lib contains a working mktime(), use it (SPC)
13. Miscellanous cosmetic changes (SPC)
14. Move win32/makefile.emx to msdos (E-Yen Tan)
15. make api.h work with zcrypt2.8 (Mike)
16. define ydays differently in api.h to avoid linking problems (Mike)
17. New windll.txt (Mike)
18. win32 lcc patches  (E-Yen Tan)
19. win32 lcc makefile (E-Yen Tan)
20. Multiple inclusion bug: no malloc.h when using lcc-win32 (E-Yen Tan)
21. New VB support files for windll (Mike Le Voi, Raymond King)
22. MacOS port by Dirk Haase
-------------------------- August 1st 1998 version 2.3e -------------------
 1. Generalized check for validy of TZ timezone setup info, similar to
    UnZip; use it on AMIGA and MSDOS, as before. (SPC)
 2. Apply TZ validy check on OS/2 and enable creation of UT e.f. (SPC)
 3. BEOS: New Makefile, updates for README and Contents (Chris Herborth)
 4. beos/beos.c: declare some private functions as "local" (SPC)
 5. Include memcompress() code only for ports that make use of it, controlled
    by preprocessor symbol ZP_NEED_MEMCOMPR (SPC)
 6. cmsmvs/README.CMS fix: Zip archive entries to be extracted into var-length
    records CMS files should >>NOT<< contain binary data ... (SPC)
 7. crc32.c, crctab.c: the crc polynom table is ZCONST (SPC)
 8. trees.c: fixed a bug in the deflate algorithm that limited the compressed
    size of an archive member to 512 MByte (SPC)
 9. deflate.c: Integrated the changes found in zlib that are neccessary to make
    the deflate algorithm deterministic; modified msdos/match.asm to take
    care of the "nice_match" global no longer being constant.  (SPC)
10. deflate.c, trees.c, zipup.c: Reorganized and simplified deflate's
    compressed output buffer handling. I/O and compression code are now
    separated more cleanly. (SPC)
11. Killed bits.c by moving its contents into trees.c resp. zipup.c;
    synchronized all Makefiles and Make procedures with this change. (SPC)
12. Integrated support for optionally replacement of deflate and crc32 by
    public domain zlib code. (SPC)
13. Synchronize the different variants (UNIX/GNU C, OS/2, WIN32) of i386
    assembler replacement for deflate's longest_match() (SPC)
14. Moved the EMX+rsxnt Makefile.emx from msdos/ back into win32/ (SPC)
15. Restored a separate Makefile.emx for DOS; on DOS, some make programs may
    have difficulties with recursive invokation (SPC)
16. Fixed the "include header mess" of the new MACOS port and removed the
    "work-around hacks" caused by these bad MACOS .h-file includes (SPC)
17. Integrated Dirk Haase's beta4 (27-Jun-98) release of MacZIP (Dirk Haase)
18. Added support for MS Quick C in the MSDOS version_local() report (SPC)
19. Added WIN32 rsxnt targets linking against the emx crtl DLL to Makefile.emx
    in os2/ and win32/ (SPC)
20. Fixed typo in os2/os2.c wild() function. (Kai Uwe Rommel)
21. Removed ChangeNameForFAT() from os2/os2.c in2ex() to fix problem with
    long filename support. (Kai Uwe Rommel)
22. os2/os2zip.[ch]: correct type of DOS-style timestamp data is "ulg" (SPC)
23. vms/cmdline.c: Removed wrong ';' behind if condition (Johnny Lee)
24. VMS: Preliminary preparations in C code for supporting GNU C on OpenVMS
    Alpha (Onno van der Linden, Christian Spieler)
25. VMS: Fixed check against adding zipfile to itself in fileio.c (SPC)
26. WIN32: Added lcc-Win32 variants of i386 assembler code for crc32() and
    longest_match(). (SPC)
27. WIN32: Removed bogus type-cast in assignment to statb st_mode member (SPC)
28. zip.c: Fixed MACOS-related typo that broke "-@" command option (SPC)
29. zipup.c: Fixed messed-up expression for assignment to z->ver (SPC)
30. MACOS extra fields: check realloc return values (Onno, Johnny Lee)
31. Fix the PUTBYTE macro in trees.c: >= instead of < (Onno)
-------------------------- September 6th 1998 version 2.3f -------------------
 1. Add zp_tz_is_valid to globals.c (Onno, Frank Donahoe)
 2. Updated tandem files from Dave Smith
 3. Windll: allow comments to zip archive with VB (Mike)
 4. Windll: add support for -b and update the documentation (Mike)
 5. win32: use wbS for FOPW to handle large zip files better (Steve Miller)
 6. MVS fix: use fseek();clearerr() instead of rewind() (Onno, Lee Burton)
 7. Updated VB examples for windll (Mike)
 8. Tandem: use UTC timestamps and GID/UID in extra field (Dave Smith)
 9. Tandem: handle -o option (Dave Smith)
10. default for ZCONST is const in tailor.h, override in osdep.h (Onno)
11. additional Macintosh options in zip.c (Dirk Haase)
12. additional Macintosh options in zip.1 and MANUAL (Onno, Dirk Haase)
13. Integrate Beta 5 of the Macintosh Port (Dirk Haase)
-------------------------- October 27th 1998 version 2.3g -------------------
 1. zip_tz_is_valid should be zp_tz_is_valid (Kai Uwe)
 2. MVS native (not OE) beta fixes (Keith Owens)
 3. LynxOS support from Giuseppe Guerrini
 4. MVS already has stat() and fstat() so use 'em (Keith Owens)
 5. MVS fix in readzipfile() for new, unopened dataset without EOF marker
    (Keith Owens)
 6. Remove 16-bit stuff from windll/windll.rc (Mike)
 7. Windll: Use hCurrentInst not hInst (Mike)
 8. In util.c compare strchr() return value with NULL (Onno, Frank Donahoe)
 9. unix/unix.c: initialize variable t in ex2in() (Onno, Frank Danahoe)
10. Remove windll/borland subdirectory (Mike)
11. Really fix extra field realloc() for BeOS and MacOS (Christian)
12. Fix the dj2 LFN related access violation bug (Christian, Joe Forster)
13. proginfo/3rdparty.bug: Added more info about other Zip clone's bugs.
14. The global copyright definitions in revision.h now depend on DEFCPYRT
    (Christian).
15. tandem/macros: removed obsolete object file references (Christian)
16. fix memory leak with the "filter" patterns (Christian, Leah Kramer)
17. zip.c: completed the support for MacOS specific -N (Christian)
18. reorganized the Mac specific help screen code (Christian)
19. zipup.c: corrected the USE_ZLIB code to emit "stored" entries under
    the same conditions as the "native deflate" code (Christian)
20. A couple of vars that will never be negative should be unsigned (Christian)
-------------------------- November 18th 1998 version 2.3h -------------------
 1. DJGPP: When compressing from stdin don't set binary mode if stdin is
    a terminal (E-Yen Tan)
 2. Fix signed/unsigned comparisons in fileio.c, util.c and zipcloak.c
    (Frank Donahoe)
 3. Move macgetch() prototype from macos/source/macos.c to macos/osdep.h
    (Christian)
 4. _doserrno should have type int, not unsigned int (Christian)
 5. In zipfile.c init a file pointer with NULL to fix gcc warning (Christian)
 6. Upgrade to MacOS beta 7 (Dirk Haase)
 7. Move the #pragma statements from generic sources to cmsmvs.h (Christian)
 8. Support for QNX/Neutrino 2.0 (Chris)
 9. Default to -r in help screen add -R at the bottom (Chris)
10. Clean up Makefile for BeOS R4 on x86 (Chris)
11. Beos: If not storing symlinks store attributes of symlink target (Chris)
12. Use izshr037 (Christian)
13. Remove ZIPERR() macro from in {msdos,win32}/osdep.h (Christian)
14. win32/win32.c: Fix 1-day offset in non-64bit FileTime2utime() (Christian)
15. win32: enable 64-bit FileTime2utime() for MS VC++ >= 5.0 (Christian)
16. cygwin32 only has _P_WAIT (Thomas Klausner)
17. msname() should *really* ignore illegal characters (Thomas Klausner)
18. Fix a missing ')' in Opendir() from win32zip.c (Thomas Klausner)
-------------------------- December 5th 1998 version 2.3i -------------------
 1. Remove the #pragma statements that were forgotten the first time (Ian)
 2. Remove obsolete macos/source/CharMap.h (Steve Salisbury)
 3. isatty(fileno(zstdin)) in zipup.c should be isatty(zstdin)
    (Onno, E-Yen Tan)
 4. several "shut up warnings from compiler" fixes (Christian)
 5. several cosmetic source changes (Christian)
 6. win32: make NTSD handling to be robust against alignment and structure
    padding problems (Christian)
 7. Apply don't set binary mode when stdin is a terminal in zipup.c for
    MSDOS and human68k (Christian)
 8. Upgrade to MacOS beta 8 (Dirk Haase)
 9. Add callback for WINDLL to handle user termination (Mike)
10. Fix typo in acornzip.c (Darren Salt)
11. acorn/sendbits.s: pass correct parameters to flush_outbuf() (Darren Salt)
12. Fixes for IBM C/C++ 3.6 where time_t is a double (Kai Uwe)
13. Fixes for IBM Visual Age C++ for win32 (Douglas Hendrix)
14. man/zip.1: some version numbers in the text were still "2.2" (Christian)
15. win32/makefile.emx: added a compilation variant that generates
    standalone executables (Christian)
16. change __CYGWIN32__ into __CYGWIN__ and add compatiblity definition for
    B19 and older (Cosmin Truta)
17. create uniform win32 getch() replacement (Christian)
18. put back in define of USE_EF_UT_TIME in tandem.h (Dave Smith)
19. put back in define of USE_CASE_MAP in tandem.h (Dave Smith)
20. updates to make/macros to allow the object to be licensed (Dave Smith)
21. updates to macros/doit to remove mktime.c (Dave Smith)
22. updates to tandem.c for in2ex/mapname/chmod amendments to match Unzip
    (Dave Smith)
23. Use izshr039.zip (Christian)
24. Init filenotes to 0 for the amiga too (Onno)
25. get_filters(): remove one flag=0 statement to make -R work again (Onno)
-------------------------- December 17th 1998 version 2.3j ------------------
 1. FOPWT defines opening a temp file for writing (Ian)
 2. Remove handling of bits.c from a couple of tandem files (Christian)
 3. A couple of "shut up warnings from compiler" fixes (Christian)
 4. win32/osdep.h: removed duplicate "IZ_PACKED" definition (Christian)
 5. win32/zipup.h: remove invalid "elseif" preprocessor token (Christian)
 6. sync MacOS help screen with other ports (Christian)
 7. get_filters(): set flag to 0 when -R isn't used (Christian)
 8. "local extra != central extra" now has "info" status (Christian)
 9. use windll directory as "home" directory for builds (Mike)
10. CMS/MVS: define FOPWT (Ian)
11. Upgrade to MacOS beta 9 (Dirk Haase)
-------------------------- January 17th 1999 version 2.3k ------------------
 1. Change FOPW into FOPW_TMP (Christian)
 2. win32: #include uses paths relative to the parent directory (Christian)
 3. Use forward slashes as path separator in #include statements (Christian)
 4. windll: fix descriptions of f{In,Ex}cludeDate (Christian)
 5. win32/makefile.lcc: add some -I<path> options to find files in the
    right places (Christian)
 6. Supply default empty IZ_PACKED define (Christian)
 7. windll: Fix some typos, descriptions (Christian)
 8. windll project files: use relative paths, no specific root directory
    (Christian)
 9. windll project files: remove link references to import libraries that
    are not used by the zip library (Christian)
10. windll: fix potential infinite loop in a VB sample (Mike)
11. windll/windll.txt: remove "may not work with VB" statement (Mike)
12. Multibyte character set support from Yoshioka Tsuneo
13. Theos port from Jean-Michel Dubois
14. Tandem: added simple handling of Enscribe files by converting them into
    text type files (Dave Smith)
15. Tandem Extra Field ("TA") containing Tandem File Attributes (Dave Smith)
16. Tandem history file showing background info to (UN)ZIP ports (Dave Smith)
17. create ZIP file on tandem with special file code (1001) (Dave Smith)
18. made tandem.c & tandem.h code completely the same as UNZIP (Dave Smith)
19. unix/configure: move +Onolimit and -Olimit into the machine specific
    section (Onno, John Wiersba)
-------------------------- February 21st 1999 version 2.3l ------------------
 1. Fix qdos Makefile (Jonathan Hudson)
 2. fgets instead of gets in zipnote to fix linker warnings (Jonathan Hudson)
 3. Theos: remove _setargv.c and a reference in zip.c (Jean-Michel Dubois)
 4. Theos README (Jean-Michel Dubois)
 5. interchanged the fRecurse flag values for "-R" and "-r" (Christian)
 6. add "z" pr prefix to MBCS functions to avoid name clashes (Christian)
 7. Whenever the position of the increment operator does not matter, the
    INCSTR variant is used, which has been mapped to the {PRE|POS}INCSTR
    variant that is more efficient. (Christian)
 8. fixed the "-R" handling in fileio.c, filter() function (Christian)
 9. simplified some THEOS specific code additions (Christian)
10. changed the line break of the compiler version message in version_local()
    for MSDOS and Win32 to take into account some verbose compilers (Christian)
11. removed the THEOS changes from ttyio.c. Instead, a THEOS specific
    setup was added to ttyio.h (Christian)
12. sync vms/link_zip.com with the corresponding make_zip.com (Christian)
13. added compatibility settings for support of MBCS on Win32 with all tested
    compilers to win32/osdep.h
14. added type-casts to isalpha() macro calls (Christian)
15. fixed win32's wild_match which was clobbered by the MBCS addition
    (Christian)
16. finished up the "potential infinite loop" problems in the VB sample
    that Mike started to repair (Christian)
17. in ziperr.h, AZTEK C might require the false comma that was removed
    to satisfy THEOS C (Christian)
18. removed the bogus THEOS specific isdir check in zipup.c (Christian)
19. modified the code for line ending translation to be independent
    of the local system's convention for '\n' and '\r'; this allowed
    the removal of the THEOS specialities (Christian)
20. Tandem: -B option to zip Enscribe files with no record delimiters
    (Dave Smith)
21. Tandem: attempt to catch Large Transfer mode failure (Dave Smith)
22. Theos: Fixed keyboard entry functions. (Jean-Michel Dubois)
23. Theos: workaround for the argument wild card expansion that is bugged
    in the standard library. Managed by MAINWA_BUG flag. (Jean-Michel Dubois)
24. Theos: support for filenames and notes with accented characters.
    (Jean-Michel Dubois)
25. Upgrade to MacOS final (Dirk Haase)
-------------------------- March 31st 1999 version 2.3m -------------------
 1. Theos: for relative paths to root directory cause open, fopen and stat
    failure, workaround this. (Jean-Michel Dubois)
 2. Theos: when no path is indicated in a file or directory name and the
    file or directory doesn't exist in the current directory it looks for
    the file or directory in the root directory, workaround this.
    (Jean-Michel Dubois)
 3. Corrected some typos and spelling error in macos/HISTORY.TXT; skipped
    off invisible trailing whitespace (Christian)
 4. proginfo/extra.fld: added documentation for Tandem and Theos extra
    field layout (Christian with Dave D Smith resp. Jean-Michel Dubois)
 5. qdos/Makefile.qdos: The build of ZipCloak requires inclusion of
    the crctab object module; qfileio_.o compilation requires the -DUTIL
    flag (Christian)
 6. win32: fix incorrect MB_CUR_MAX macro for mingw32 and lcc (Christian)
 7. theos/_fprintf.c, theos/_rename.c, theos/osdep.h: Some function
    parameters require the "const" attribute to achieve compatibility
    with ANSI C requirements (Christian)
 8. theos/theos.c: map Theos' (No)Hidden file attribute to MSDOS Hidden
    bit in the MSDOS part of zipentry header's external attribute field;
 9. theos/stat.h: prevent multiple inclusions
10. Theos: Fixed wild card management for options other than adding
    (Jean-Michel Dubois)
11. Theos: Removed modifications of const strings (Jean-Michel Dubois)
12. Split tandem.c up into separate zip/unzip parts (Dave Smith, Christian)
13. Move inclusion of OS specific zipup.h files to tailor.h (Onno)
-------------------------- August 14th 1999 version 2.3n -------------------
 1. Move inclusion of OS specific zipup.h files back to zipup.c (Onno)
 2. Remove getline() from zipnote.c and use gets() again (Onno)
 3. BeOS PowerPC R4.1 support (Chris)
 4. New DOIT and MACROS files for the tandem port (Dave Smith)
 5. Don't switch the console to binary mode (Michel de Ruiter)
 6. In some circumstances undosm could be freed twice (Mike)
 7. Also define const in tailor.h for ultrix (Onno, Foppa Uberti Massimo)
 8. Tandem: Change zopen in TANZIPC to allow opening of files with missing
    alt keys (err 4) (Dave Smith)
 9. Tandem: Assume not DST if can't resolve time (no DST table available)
    (Dave Smith)
10. WIN32: skip trailing dots and spaces in getnam (Onno, Dan Kegel)
11. Use ZE_NONE when nothing to freshen or update (Onno, Yuri Sidorenko)
12. Remove tabs from files that don't need them (Onno)
13. Remove tabs and spaces from the end of a text line (Onno)
14. Upgrade macos to 1.04b2 (Dirk)
15. Add -Q documentation to manual page (Jonathan Hudson)
16. Copy hiperspace files instead of renaming them (Keith Owens)
17. Disallow some more characters to appear in DOS filenames when using -k
    (Onno, Thomas Klausner)
18. Document missing options and environment variables in the manual (Onno)
19. New acorn/GMakefile to compile with gcc on RISCOS (Darren Salt)
20. ISO 8601 date format support for -t and -tt (Rodney Brown)
-------------------------- September 21st 1999 version 2.3o -------------------
 1. Sync zip.h license with LICENSE (Onno)
 2. Add copyright notice to README, os2zip.c and os2.zip.h (Onno, Greg)
 3. Fix the ASM variable in acorn/GMakefile (Darren Salt)
 4. Add another requirement to acorn/ReadMe.GMakefile (Darren Salt)
 5. Fix unbalanced parenthesis in vms_get_attributes declaration in zip.h
    and move it to vms/zipup.h (Onno, Mike Freeman)
 6. Make a couple of os2 files public domain (Kai Uwe)
 7. Change and rename disclaimer array in revision.h (Onno)
 8. Change copyright array in revision.h (Onno)
 9. macstuff.c copyright is the same as macstuff.h (Christian)
10. WHATSNEW: add ISO 8601 dates supported (Christian)
11. fileio.c - msname(): strip off leading dots, these are illegal for
    MSDOS compatible names (Christian)
13. fileio.c - replace(): deactivate "dead" code for CMS_MVS (Christian)
14. man/zip.1: "-$" option is also used for WIN32 ports
15. msdos/msdos.c - version_local(): break the version line for
    GNU compilers too (Christian)
16. tailor.h: added typecasts to MBCS macros, to suppress "type mismatch"
    warnings (Christian)
17. util.c, zip.h, zipfile.c: ZCONSTify several pointers (Christian)
18. util.c - recmatch(), zip.c - version_info(): add compile time option
    WILD_STOP_AT_DIR (Christian, Darren Salt)
19. util.c - envargs(): MBCS related fixes (Christian)
20. win32/lm32_lcc.asm: add TAB characters that are required by the lcc
    assembler source parser (Christian)
21. zip.c: fix the "is a console" check (Christian)
22. zipnote.c: use getline() (Christian)
23. zipup.c: use zclose() in case of I/O errors (Christian)
24. zipup.c: use ZE_WRITE when a write error occurs (Christian)
25. win32/win32.c: HAVE_INT64 is used by mingw32 (Cosmin Truta)
26. update shared sources to match izshr041 (Christian)
-------------------------- November 29th 1999 version 2.3 ------------------
 1. Missing parenthesis in win32/win32.c (Steve Salisbury)
 2. Add Cosmin Truta to proginfo/infozip.who (Onno)
 3. Remove one parenthesis pair too many from vms_get_attributes() declaration
    in vms/zipup.h (Mike Freeman)
 4. qdos .s are expected to start with a #, work around it (Jonathan Hudson)
 5. tandem: -B0 should be deflating not storing (Dave Smith)
 6. human68k updates from Shimazaki Ryo
 7. beos Makefile cleanup (Chris)
 8. workaround for fseek to negativate offset behaviour of the RISC OS
    SharedCLibrary (Darren Salt)
 9. set file type for RISC OS in zipcloak.c (Darren Salt)
10. change tandem zgetch() to allow crypt version to work (Dave Smith)
11. fix a comment typo in acorn/riscos.c (Christian)
12. fileio.c: two type-cast to shut up noisy compilers (Christian)
13. human68k: fix missing case_flag argmument (Christian)
14. win32/win32.c: remove HAVE_INT64 completely (Christian)
15. zip.c: raise "cannot zip to console" error when stdout IS a tty (Christian)
16. zip.h: don't use dummy argument names in declarations (Christian)
17. Add missing semicolon in fileio.c (Shimazaki Ryo)
18. win32.c: IBMC compiler >= 3.50 have int64 (Kai Uwe)
19. Handle initialization error return value from MVS stat() in procname()
    (Keith Owens)
20. Use RISC OS instead of RiscOS in the manual (Darren Salt)
21. Use # instead of ? as single character wildcard on RISC OS (Darren Salt)
22. New windll example.c (Mike)
23. Correct storage of 8-bit char filenames with RSXNT (Burkhard Hirzinger)
24. fix install in unix/Makefile (Santiago Vila, Onno)
25. Fix zip -L output (Santiago Vila, Onno)
26. Ignore unix special files (Jonathan O'Brien)
27. Upgrade to izshr042 (Onno)
28. Make copyright notice the same as in izshr042 (Onno)
29. Make copyright notice in zip.h the same as LICENSE (Christian)
30. Set tempzf to NULL _after_ it has been closed (Chris Kacher)
31. Change email address for Jonathan Hudson (Jonathan Hudson)
32. Remove win32/winzip.c.orig (Steve Salisbury)
33. Use 'Steve Salisbury' throughout the documentation (Steve Salisbury)
34. Change email address for Steve Salisbury (Steve Salisbury)
35. Change email address for Chris Herborth (Chris Herborth)
36. Use zip23 in INSTALL (Roger Cornelius)
37. Use zcrypt28 in INSTALL (Onno)
38. New acorn/srcrename (Darren Salt)
39. amiga/makefile.azt: make clean should remove some more items (Paul)
40. Change email address for Cosmin Truta (Cosmin Truta)
-------------------------- February 11th 2001 version 2.4a ------------------
 1. Identify newer Borland compilers (Brad Clarke)
 2. Detect Turbo C 2.01 which doesn't have mktime (Brian Lindholm)
 3. Fix the use of -@ together with -i -x (Christian)
 4. Update msdos/README.DOS to match reality (Christian)
 5. win32: use assembler crc32 code (Christian)
 6. windll: _CRTIMP is needed in several function declarations (Christian)
 7. back to zip 2.2 memcompress() behaviour  (Kelly Anderson)
 8. new amiga time code based on nih public domain code  (Paul Kienitz)
 9. Detect some more Borland C++ builder versions (Brad Clarke)
10. Fix OS/2's extended file attributes compression code (Christian, Kai Uwe)
11. Correct translation of EBCDIC passwords to ASCII (Christian)
12. Attempt at integrating novell patches from Roger Foss (Onno)
13. Use izshr043 (Christian)
-------------------------- July 3rd 2001 version 2.4b ------------------
 1. Fix OS/2's ACL compression code (Christian, Kai Uwe)
 2. Rename netware subdir to novell (Christian)
 3. Remove -dNETWARE -dDOS from novell Makefile (Christian)
 4. Remove defined(NETWARE) from the sources (Christian)
 5. printf is a macro in glibc 2.2, fix version_local function
    (Christian, Matthew Wilcox)
-------------------------- January 13th 2002 version 2.4c ------------------
 1. Use klist_items when initilizating koff[] in tandem.c (Dave Smith)
 2. Only call NLMsignals() in zip.c when NLM is defined (Mike, Onno)
 3. include riscos.h instead of acorn/riscos.h in acorn/osdep.h (Andy Wingate)
 4. Use izshr044 (Christian)
-------------------------- January 13th 2002 version 2.4d ------------------
 1. Don't use mmap for stored entries (Christian)
 2. BIG_MEM and MMAP cannot be defined at the same time (Christian)
 3. Allow redirection of version screen to file (Christian)
 4. Fix for OS/2 output redirection bug (Christian, Kai Uwe)
 5. Acorn script for creating self extracting zips (Darren Salt)
 6. Update amiga makefiles to support revised timezone routines (Christian)
 7. Correct memcompress calculation for allocation size (Christian)
 8. Fix FORCE_METHOD debug option for level 1 and 2 (Christian)
 9. Whitespace cleanup in man/zip.1 (Christian)
10. Define IZ_IMP to specify compiler declaration prefixes (Christian)
11. make win32 and msdos version_local() "stdio-macro-safe" (Christian)
12. move tandem's zip specific zipopen to tanzip.c (Christian)
13. first parm is void * in external scope of vms_get_attributes() (Christian)
14. use right novell subdirectory in zipup.c (Christian)
15. update copyright for files modified in 2002 (Onno)
-------------------------- January 19th 2002 version 2.4e ------------------
 1. Add MacOS X to version_local() (Mark)
 2. unix/configure: Init LFLAGS1 to "", MacOS X doesn't like -s (Onno, Mark)
 3. rename errors array to ziperrors to avoid MacOS X library clash (Mark)
 4. Support for the upx executable packer in DOS makefiles (Christian)
 5. remove obsolete -m486 switch from dos djgpp makefile (Christian)
 6. When using DOS, force the use of msdos style external attributes when
    updating zip entries created under another OS (Christian)
 7. os2/makefile.os2: fixed ASFLAGS for watcom16dos (Christian)
 8. Update copyright and ftp address in several files (Christian)
 9. The RISCOS port uses '.' as directory separator, not '/' (Christian)
10. win32/makefile.bor: more options to compile the asm CRC code (Christian)
11. win32: use registry to handle timezones with MS C rtl (Christian)
12. acorn: use recommended practice for calling the linker (Andy Wingate)
13. unix/configure: check if CPP works else use ${CC} -E (Onno, Mark)
14. update versioninfolines in revision.h to match reality (Onno)
-------------------------- February 10th 2002 version 2.4f ------------------
 1. vms: Zip -V is now able to handle file sizes up to 4Gb (Christian)
 2. vms: Include target environment detection for MMS/MMK (Christian)
 3. Change dummy message from zipcloak (Christian)
 4. acorn: add riscos specific -/ option (Darren)
 5. Update acorn's WILD_STOP_AT_DIR feature (Christian)
 6. acorn: Fix buffer allocation for -/ option (Christian, Darren)
 7. acorn: fix make clean (Andy Wingate)
 8. acorn: use tabs for GMakefile to make GNU make happy (Andy Wingate)
 9. tandem: use nskopen not zipopen (Dave Smith)
10. tandem: allow passing of CRYPT define (Dave Smith)
11. use izshr045 (Christian)
-------------------------- April 1st 2002 version 2.4g ------------------
 1. acorn: fix assembler and compiler options in makefile (Darren)
 2. use izshr046 (Christian)
 3. MVS: define isatty to 1 to fix screen output (Christian)
 4. tandem: encryption really works now (Dave Smith)
 5. win32: detect Borland C++ builder 6 (Brad Clarke)
-------------------------- April 30th 2003 version 2.4h ------------------
 1. tandem: fix temporary file contention (Dave Smith)
 2. cmsmvs: generate better filenames with -j (Owen Leibman)
 3. tandem: fix temporary file leftovers (Dave Smith)
 4. solaris: enable large file I/O to break 2G barrier (Rick Moakley, Onno)

Note:  Zip 2.4 was never released.  That code was the start of the Zip 3.0
effort below.  Some changes and fixes also made it to the Zip 2.3x releases.

---------------------- January 21st 2004 version 3.0a ----------------------
Initial work on Zip 3.0 by Ed Gordon and Rainer Nausedat
 1. Changed some comments to update copyrights (Ed)
 2. Changed text in command line messages from zip 2.4 to zip 3.0 (Ed)
 3. Changes to many files for Zip64 wrapped in ifdef ZIP64_SUPPORT (Rainer)
 4. Attempt to fix buggy Win32 buffered 64-bit calls (Ed)
 5. Add functions to zipfile.c for Little-Endian memory writes (Rainer)
 6. Add functions to zipfile.c for writing Zip64 extra fields (Rainer)
 7. Major changes to putlocal, putcentral, and putend (Rainer)
 8. Fixing -F and -FF for Zip64 postponed (Ed and Rainer)
 9. Command line code replaced.  Global table sets options, long options now
    supported.  Permutes so order of arguments can vary (Ed)
10. Fix bug where not allowed to use -@ with stdout but was with stdin.
    Now can read filenames from stdin using -@ and output to stdout and
    no longer am allowed to use -@ if reading from stdin (Ed)
11. Replace stat() with zstat(), fstat() with zfstat() and struct
    stat with z_stat in Zip64 blocks.  Put 64-bit file calls in ifdef
    LARGE_FILE_SUPPORT blocks.  Can implement Zip64 without > 4 GB
    file support but for now need large files for Zip64 support (Ed)
12. Move port-specific code to osdep.h and win32.c (port specific) and
    tailor.h (generic) and remove temporary os_io.c.  As OF() is
    not defined until after osdep.h includes in tailor.h function
    prototypes for zfseeko, zftello, and zstat after that in tailor.h (Ed)
13. Settings of ZIP64_SUPPORT and LARGE_FILE_SUPPORT automatic based on
    port and version of compiler.  Defining NO_ZIP64_SUPPORT or
    NO_LARGE_FILE_SUPPORT overrides this (Ed)
14. Bugs compiling scanzipf_fix(...) in zipfile.c and the fix functions could
    use rewrite (Rainer and Ed)
15. Add prototype for zfopen for mapping to 64-bit fopen on ports using
    inodes but not implemented (Ed)
16. More work on extended local headers and encypted archives (Rainer)
17. Fix DLL files so now compiles (Ed)
18. File size in dll limited to 32-bit in structure.  A new DLL api is needed
    to return 64-bit file sizes.  Current api fixed to return max 32-bit if
    more than that (Ed)
19. Add local header Zip64 support and local extra field.  Fixed cast
    to ulg missed previously that forced zstat to return value mod 4 GB in
    zipup.c which kept local header code from seeing actual file size (Ed)
20. Add new option --force-zip64 to force use of zip64 fields.  Could
    be temporary (Ed)
21. Fix for VB added to api.c that just store the passed strings internally.
    Should update api to optionally return file sizes as 64-bit in call back
    and to accept RootDir and other strings in same call that zips (Ed)
22. Readme updated to describe new features and mention updated mail group
    web links (Ed)
23. Minor bugs in output format found and fixed.  Now can add
    files > 4 GB to archive and unzip using major unzippers (Ed)
24. If zip used as filter (zip - -) and sizes exceed limits of extended
    local header (data descriptor) then set max 32-bit values there.  Major
    unzippers ignore and use central directory values which are correct.  Can
    create Zip64 data descriptor using --force-zip64 option but seems no need
    for it (Ed)
25. A few bugs in how headers are handled prevented zipping large numbers
    of files.  Fixed (Rainer)
26. A bit of an attempt to fix -F and -FF.  Seems to work but not that
    robust.  More work needed (Ed)
27. After some cast and other fixes zip compiles on Linux Red Hat 9 using Unix
    generic.  Added automatic detection of fseeko64 and if detected
    sets LARGE_FILE_SUPPORT and setting that sets ZIP64_SUPPORT.  Works but
    could not test large files on the small system (Ed)
28. Tried to fix bug that prevents zipnotes from compiling when ZIP64_SUPPORT
    is set.  Still broke.  This crashes the Unix Makefile but after
    zip is compiled (Ed)
---------------------- May 8th 2004 version 3.0b ----------------------
 1. Update license headers on more files (Ed)
 2. Change many ZIP64_SUPPORT ifdefs to LARGE_FILE_SUPPORT where appropriate.
    Now can test ports using three stages, compile with NO_LARGE_FILE_SUPPORT
    (which disables ZIP64_SUPPORT) to test base code, compile with
    NO_ZIP64_SUPPORT to test the 64-bit file calls (assuming port sets
    LARGE_FILE_SUPPORT) but otherwise use the base code, and without either
    to test Zip64 if enabled on port (Ed)
 3. Fix zipnotes bug by moving a ZIP64_SUPPORT block in zipfile.c (Ed)
 4. Add Large File Summit (LFS) code to Unix port to enable 64-bit calls.
    Update configure to include test for all needed 64-bit file calls before
    enabling LARGE_FILE_SUPPORT for unix port (Ed)
 5. Merge encryption code from zcrypt29 (files from unzip) into zip and
    enable by default (Ed)
 6. New man pages for zipnote, zipsplit, and zipcloak (Greg, Ed)
 7. Add encryption notice to crypt.c comments and to version information
    in zip.c (Greg, Ed)
 8. Add Russian OEM EBCDIC support when OEM_RUSS defined in ebcdic.h but
    Dmitri reports that 0x2F not '/' so make recommended change in cutpath
    call in zipfile.c used by -D option (Dmitri - Nov 10 2003 email)
 9. ToDo30 file added to list what's left to do in this release (Ed)
10. Change fopen to zfopen for large file code and map to fopen64 for
    Unix (Ed)
11. ftello64 seems broken in zipup.c on Linux (kernel 2.4), returning
    negatives past the 2 GB barrier, though ftello64 works in a test program.
    Likely error in defines.  For now skip ftello64 check for Unix with
    LARGE_FILE_SUPPORT.
12. A few updates in Readme.  Needs overhaul likely.  Also verified mxserver
    is gone and replaced with list addresses (Ed)
13. First iterations at updating WinDLL for Zip64 (Mike)
14. Decide to drop backward dll compatibility in favor of a cleaner
    dll interface.  Decide to add string interfaces for VB (Ed, Mike)
15. Add string interfaces to dll interface to bypass array limitations
    imposed by VB and add -x and -i to interface (Mike)
16. Create new VB example using new Zip64 dll interface (Ed)
17. Add O_LARGEFILE define for zopen in unix/zipup.h to enable reading
    large files in unix (Ed)
18. Combine ZpSetOptions and ZpArchive dll calls to allow removing all VB kluges
    in api.c to work around VB garbage collecting passed strings (Mike)
19. Change new VBz64 example to use updated interface.  All works without
    kluges (Ed)
---------------------- August 15th 2004 version 3.0c ----------------------
 1. Add date formats in -t and -tt date errors (Ed)
 2. Add -so to display all available options (Ed)
 3. Many fixes from Dan Nelson to fix some large file support problems and
    add large file support to a few ports.  Main change is rather than use
    explicit 64-bit calls like fopen64 now set 64-bit environment and use
    standard calls.  Also add a define for 64-bit printf format used to
    print 64-bit stats (Dan, Ed)
 4. Changes to Unix config based on suggestions from Dan Nelson.  Check
    if off_t is at least 64 bit (Dan, Ed)
 5. Add -- to get_option.  Any arguments after -- on command line now
    read as paths and not options (Ed)
 6. Add extended help (Ed)
 7. Change add_filter flag parameter from char to int as some compilers have
    problems with char arguments (Ed)
 8. Changed filter() to do R and i separately so i has precedence over R (Ed)
 9. Split variable t in zip.c into t (off_t) and tf (ulg) (Ed)
10. Add quotes to zipname in check_zipfile for MSDOS to allow spaces in
    archive path given to unzip to test ( , Ed)
11. Move zip.h include before ctype.h include in trees.c and zipup.c as
    when ctype.h is first and using 64-bit environment at least on unix port
    found it defines off_t as 4 bytes in those files as off_t is defined as
    8 bytes in other files and this changes the size of the zlist structure
    which is not good (Ed)
12. Add default 64-bit file environment to tailor.h if LARGE_FILE_SUPPORT
    is set but no port 64-bit file defines are set up earlier in the file.
    Should allow other ports to set LARGE_FILE_SUPPORT on the compiler
    command line to test if the standard defines work (Ed)
13. Adjust binary detection in trees.c by changing 20% binary (4 out of 5
    ascii) that used >> 2 to 2% (64 out of 65) using >> 6 instead.
    trees.c  (Ed)
---------------------- November 12th 2004 version 3.0d ----------------------
 1. Add global variable for EncryptionPassword in VBz64 example and
    some other password callback cleanup (Ed)
 2. Add -W option to turn on WILD_STOP_AT_DIR where wildcards will not
    include directory boundaries in matches (Ed)
 3. Add -nw option "no wild" to completely disable wildcards in MATCH
    function.  Allows a list of files to be read in without worrying about
    wildcards or escapes (Ed)
 4. Add -s option split-size but not implemented (Ed)
 5. Add -sp option split-pause but not implemented (Ed)
 6. Add changes for WiZ including moving Win32 64-bit wrappers into
    win32i64.c to avoid naming conflict between libraries in WiZ (Mike, Ed)
 7. Some large file fixes in crypt.c (Ed)
 8. Add new error code ZE_UNSUP for unsupported compiler options.  Add
    check of size of zoff_t in zip.c when LARGE_FILE_SUPPORT enabled (Ed)
 9. Changed ZE_UNSUP to ZE_COMPERR to avoid conflict with unzip (Ed)
10. On VMS (sufficiently recent, non-VAX), DECC$ARGV_PARSE_STYLE is set
    automatically to preserve case of the command line if the user has
    SET PROCESS /PARSE = EXTEND.  This obviates quoting upper-case
    options, like -V, when enabled.  VMS.C (Steven Schweda (SMS))
11. On VMS, building with macro VMS_PRESERVE_CASE defined preserves case
    of names in archive, instead of forcing lower-case (the former and
    current default behavior).  VMSZIP.C (SMS)
12. On VMS, in some of the simplest cases, ODS5 extended file name
    escape characters ("^") are removed from names in archive.
    VMSZIP.C (SMS)
13. On VMS, fixed a problem in some cases with mixed-case directory
    names, where too much of the directory hierarchy was included in the
    path names in the archive.  VMSZIP.C (SMS)
14. On VMS, minor changes for large file support (long -> zoff_t).
    VMSZIP.C (SMS)
15. On VMS, changed some structure declarations to typedefs, and
    rearranged to simplify #if's and reduce potential name conflicts.
    VMS.H, VMS_IM.C, VMS_PK.C (SMS)
16. On VMS, reformed -V (/VMS) processing.  Added -VV (/VMS=ALL).
    Removed some sign bits to accomodate files bigger than 2GB.
    CMDLINE.C, VMS_IM.C, VMS_PK.C, ZIP.C, ZIP_CLI.CLD, ZIP_CLI.HELP,
    ZIPUP.H (SMS)
17. Update command line options to support -VV as distinct option (Ed)
18. More VMS changes (SMS)
19. Add zoff_t format function (SMS)
20. On VMS, when -b was not used, temporary archive files were always
    created in the current default directory, rather than in the archive
    file destination directory.  VMS now uses its own tempname()
    function.  FILEIO.C, VMS.C (SMS)
21. Remove using FNMAX for path size in a few places including filetime.c
    to avoid exceeding limit (based on fixes from Greg and others) (Ed)
22. Add port atheos (Ruslan Nickolaev, Ed)
23. Bug fix adds different extra fields for local and central in VMS (SMS)
24. Now short options also take optional values as next argument (Ed)
25. Change -dd to control -v dots (SMS, Ed)
26. On VMS, a new open callback function senses (where supported) the
    process RMS_DEFAULT values for file extend quantity (deq),
    multi-block count (mbc), and multi-buffer count (mbf), and sets the
    FAB/RAB parameters accordingly.  The default deq is now much larger
    than before (16384, was none), and the default mbc is now 127
    (up from 64), speeding creation of a large archive file.  Explicitly
    set RMS_DEFAULT values override built-in defaults.  OSDEP.H, VMS.C
    (SMS)
27. VMS CLI definitions and CLI help have been updated, and may be
    approximately correct.  CMDLINE.C, ZIP_CLI.CLD, ZIP_CLI.HELP (SMS)
28. The man file zip.1 updated and Makefile updated to generate manual
    pages for zipcloak.1, zipnote.1, and zipsplit.1 (Ed)
---------------------- July 23rd 2005 version 3.0e ----------------------
 1. Debian patch 004 - apply 2.4i configure changes from Onno to remove
    need for -fno-builtin in unix/configure (Onno, Ed)
 2. Debian patch 005 for bug 279867 - fix bug that could crash on large paths
    and create security problem.  Apply patch changes from Greg (Greg, Ed)
 3. SourceForge patch 1074363 - add win32i64.c to win32/makefile.w32 (Ed)
 4. Add check when not ZIP64_SUPPORT in scanzipf_reg() in zipfile.c if
    Zip64 archive being read (Ed)
 5. Renamed fzofft() used to format zoff_t values to zip_fzofft() to remove
    conflict when combined with UnZip in WiZ (Mike)
 6. Add check in scanzipf_reg() in zipfile.c if Zip64 archive being read (Ed)
 7. Fixes for amiga/makefile.azt to define directory for object files (Paul)
 8. Define prototypes for local functions optionerr, get_shortopt and
    get_longopt in fileio.c.  Define err argument of optionerr as ZCONST (Paul)
 9. Add help_extended and DisplayRunningStats prototypes, fix other prototypes
    in zip.c (Paul)
10. Split int kk off of k for argument types (Paul)
11. Aztec #endif quirk fix in zip.c for Amiga (Paul)
12. Add detection of binary in first buffer read from file in zipup.c to avoid
    a -l or -ll translation on binary file.  Not perfect but at least should
    catch some binary files (Ed)
13. Remove check for >= 128 from binary check in zipup.c as <= 6 enough for
    signed char (SMS, Ed)
14. SF Bug 1074368 - check for empty zip file in readzipfile() in zipfile.c
    (Christian d'Heureuse, Ed)
15. Add error exit to prevent archive corruption when updating a large-file
    archive with a small-file program.  Add ZE_ZIP64 error.
    ziperr.h, zipfile.c (SMS)
16. Change percent() in zipup.c to do rounding better, handle cases near limits
    while rounding, and allow negative percent returns (SMS, Ed)
17. Add function ffile_size() in zipfile.c but in #if 0 block until determine
    if works on all ports under all conditions.  Currently only used for size
    check for Zip64 archive detection if compiled without ZIP64_SUPPORT and
    this check may already be handled in scanzipf_reg() and should be added to
    scanzipf_fix() when that is updated (SMS, Ed)
18. Change >>1 to /2 in zipsplit.c to allow for negative percent returns (SMS)
19. Add type uzoff_t for unsigned zoff_t things.  Should clean up some casting
    (Ed)
20. Based on discussions with other development groups, when data descriptors
    (extended local headers) are used, force to Zip64.  This is compatible
    with other unzips and does not require a change of the AppNote, but the
    resulting archive requires Zip64 to read.  Using standard data descriptors
    would mean that the zip operation would fail if a Zip64 entry was
    encountered.  See zipfile.c (Ed)
21. Add define SPLIT_SUPPORT to enable splits.  The command line options are
    done and the globals are set up but nothing more.  globals.c, zip.h, and
    zip.c mainly (Ed)
22. Create spanning signature at beginning of archive when splitting enabled.
    If reading a split archive skip the spanning signature unless creating a
    split archive.  zip.c, globals.c (Ed)
23. Start implementing split archives.  Define two methods. split_method = 1
    updates local headers and is the most compatible but requires updating
    previous splits.  split_method = 2 uses data descriptors and should work
    for streams and removable media but may not be as compatible with other
    zip applications.  (In part based on previous discussions with Rainer.)
    Updated global variables to include bytes written to just the current
    entry in the current split.  zipfile.c (Ed)
24. Add note about output redirection to zip.1 (?, Ed)
25. Remove num < 0 check as num now unsigned.  util.c (SMS, Ed)
26. Change lastchar to lastchr in fileio.c in places to avoid function by same
    name (SMS, Ed)
27. Moved #endif /* !WINDLL */ in zip.c (Mike)
28. Account for vms directory version being ;1.  vmszip.c (SMS)
29. Fix Zip64 check in scanzipf_reg to use the buffer.  zipfile.c (Ed)
30. Default define size_t (for use by Steve's ffile_size() function).  tailor.h (Ed)
31. Enable Steve's ffile_size() function and enable large file check.  It
    currently does not allow file sizes over 2 GB but the code is not supporting
    it anyway without large file support.  Should remove that part of the check
    when the casts are fixed.  zipfile.c (Ed)
32. Fixes for djgpp.  Now compiles with djgpp 2 (Ed)
33. Add new VC6 projects for win32 and windll (Cosmin)
34. Convert some variables in zipsplit.c from ulg to zoff_t so compiles (Ed)
35. Add wildcards to extended help.  zip.c (Ed)
36. For optional option value now '-' is same as missing value.  fileio.c (Ed)
37. Remove extra free() from -dd option switch.  zip.c (Ed)
38. Change write_unsigned_to_mem() to write_ulong_to_mem() and write_short_to_mem()
    to write_ushort_to_mem().  zipfile.c (Ed)
39. Create new append to mem functions.  zipfile.c (Ed)
40. Change zlist nam and ext from extent to ushort as that is what gets written.
    zipfile.c (Ed)
41. Change GetSD to use ush instead of size_t.  win32/win32zip.c (Ed)
42. Change PutLocal(), PutExtended(), PutCentral(), and PutEnd() to write to
    memory and then write the block at once to the file.  zipfile.c (Ed)
43. Change zcomlen from extent to ush, other extent conversions.  zipfile.c,
    globals.c, zip.h (Ed)
44. Add is_seekable() and global output_is_seekable.  Do seekable check
    when output file is opened.  zipup.c, globals.c, zip.h, zip.c (Ed)
45. Do not increment files_so_far and bytes_so_far if file could not be read.
    zip.c (Ed)
46. If force_zip64 set, only force compressed size in central directory to Zip64
    instead of all entries (csize, usize, off, disk) in Zip64 extra field.  This
    fixes inconsistent handling of disk numbers.  zipfile.c (Ed)
47. Add end status if displaying running stats and not all files were read.
    zip.c (Ed)
48. Change force_zip64 to zip64_archive in putend().  zipfile.c (Ed)
49. Enable the i686-optimized code by default.  crc_i386.S,
    win32/crc_i386.asm, win32/crc_i386.c (Cosmin)
50. Document and implement a new text detection scheme provided by Cosmin in
    set_file_type().  Should be able to handle UTF-8 and some other character sets.
    proginfo/txtvsbin.txt, trees.c (Cosmin, Johnny, Christian)
51. Update binary detection for -l and -ll to use Cosmin black list.  zipup.c (Ed)
52. Change ZE_BIG to include read and write.  ziperr.h (Ed)
53. If archive not seekable then use data descriptors.  If ZIP64_SUPPORT always
    create Zip64 data descriptors and add a Zip64 extra field to flag it is
    a Zip64 data descriptor.  This is klugy but should be compatible with other
    unzips.  See the note in zipfile.c for details.  (Ed)
54. Use ush for comment length in putend().  Instead of extent use ush for
    zcount and fcount same as in zip file.  zip.h (Ed)
55. Update VB readme.  windll/VB/readmeVB.txt (Ed)
56. Change (INSTALL) to (INSTALL_PROGRAM).  unix/Makefile (, Ed)
57. During update the file and byte status counts were off.  Fixed by not coun-
    ting files copied from old to new as those are not in totals.  zip.c (Ed)
58. Change from -b to -bx for nroff of manuals to text files.  unix/Makefile (Ed)
59. Add cygwin to makefile.  unix/Makefile (, Ed)
60. Fix bug where files to delete not added to list.  zip.c (Ed)
61. Fix delete stats.  zip.c (Ed)
62. Increment version of crypt to 2.10.  Update default behavior notes.
    crypt.c, crypt.h (Paul, Christian)
63. Format changes, add parentheses to zfseeko(), fix output bytes, add ifdef
    blocks for ZIP10, fzofft formatting, casts.  crypt.c (Christian)
64. Cast block_start to unsigned.  deflate.c (Christian)
65. Let -R patterns match in subdirectories.  Update filter() to use switch,
    use global icount and Rcount, handle subdirectories, update icount and
    RCount in filterlist_to_patterns().  fileio.c, zip.c, zip.h, globals.c
    (Christian)
66. Enclose option -! and use_privileges under NTSD_EAS guard.  globals.c,
    zip.c, zip.h (Cosmin)
67. Updates to version, copyright, license.  [I did not split the copyright
    to 2 lines as it already takes up space on the help screen.  Ed]
    revision.h (Christian)
68. Add ZCONST to some read-only string pointer arguments in function
    declarations.  zipcloak.c, zipnote.c, zipsplit.c, zip.c, zip.h (Christian)
69. Fix byte counts on exit in zipcloak() and zipbare() to fix zipcloak bug
    (Christian)
70. Modified zipnote.c to use WRBUFSIZ to handle line widths of at least 2047
    characters in write mode (Christian)
71. Change simple() and greedy() from zoff_t to uzoff_t.  zipsplit.c (Christian)
72. Remove duplicate copyright notices.  zipsplit.c (Christian)
73. Remove export notice from help page.  Move notice to bottom of license
    page.  zipcloak.c (Ed)
74. File USexport.msg export history added. (Greg)
75. Added support for VMS ODS5 extended file names.  (Eight-bit only, no
    Unicode.)  VMS name character "/" is mapped to Zip name character
    "?".  New command-line options -C[2|5][-] (/PRESERVE_CASE[=opts])
    control name case preservation and/or down-casing.  globals.c,
    zip.c, zip.h, vms/cmdline.c, vms/vms_im.c, vms/vms_pk.c, vms/vms.c,
    vms/vmszip.c, vms/vms.h  (SMS)
76. New VMS option -ww (/DOT_VERSION) stores version numbers as ".nnn"
    instead of ";nnn" [changed from -Y to -ww (Ed)].  zip.c (SMS)
77. Changes to vms_open().  vms/vms_im.c, vms/vms_pk.c
78. Changes to vms_read().  vms/vms_pk.c (SMS)
79. Documentation updates.  vms/vms_zip.rnh (SMS)
80. Minor updates.  vms/zip_cli.help, vms/cmdline.c, vms/vms_zip.rnh (Ed)
81. Changes to vmsmunch().  vms/vmsmunch.c (SMS)
82. Do some updating of VMS options.  vms/zip_cli.cld (SMS)
83. Moved the VMS-specific ziptyp() function from zipfile.c to vms/vms.c
    to segregate better the RMS stuff. (SMS)
84. Put 64-bit calls in ZIP64_SUPPORT ifdef blocks, change some long parameters
    for append to memory block functions to ulg, remove redundant includes,
    add OFT protos to some functions with parameter types that get promoted
    like ush to avoid warnings in VMS.  zipfile.c (SMS)
85. Use zip_fzofft() to format number.  zipsplit.c (SMS)
86. Add file_id.diz from Zip 2.31 (?, Ed)
87. Update install from Zip 2.31 (?, Ed)
88. Update license from Zip 2.31.  License (?, Ed)
89. Update Readme.cr from Zip 2.31 (?, Ed)
90. Add 64-bit assembler for Win32 from Zip 2.31.  win32/makefile.a64,
    win32/readme.a64, win32/gvmat64.asm (?, Ed)
91. Update Readme (Ed)
92. Update headers.  crctab.c, crc32.c, deflate.c, ebcdic.h, fileio.h (Ed)
93. Option for extra verbose VMS, change DIAG_FLAG from verbose to
    (verbose >= 2).  vms/vms.c (SMS)
94. Update copyright header.  qdos/qdos.c (Christian, Ed)
95. Change exit(0) to exit(ZE_OK).  qdos/qdos.c (Christian)
96. Change ulg to unsigned long.  tailor.h (, Christian)
97. Default uzoff_t to unsigned long long if LARGE_FILE_SUPPORT manually
    enabled for an otherwise unsupported port.  tailor.h (Ed)
98. Update copyright header.  tailor.h (Ed)
99. Change EXIT(0) to EXIT(ZE_LOGIC) for ziperr recursion.  zip.c (Christian)
100. Change EXIT(0) to EXIT(ZE_OK) for successful returns.  zip.c,
     zipcloak.c (Christian)
101. Update license.  zip.h (Christian)
102. Initialized mesg in zipcloak.c, zipnote.c, zipsplit.c to fix access
     violation crashes.  (Christian)
103. Added -q (Quiet mode) option to zipcloak, zipnote, zipsplit.  (Christian)
104. Add proto of mb_clen().  fileio.c (Cosmin)
105. Synchronize ttyio.c and ttyio.h with the unzip-5.52 source. (Cosmin)
106. Control the POSIX emulation provided by some Unix-on-Windows compiler
     distributions, such as Cygwin, via the FORCE_WIN32_OVER_UNIX macro.
     tailor.h, win32/Makefile.gcc (Cosmin)
107. Remove getenv() declaration.  util.c (Cosmin)
108. Fix definitions of zopen and zstdin.  unix/zipup.h (Cosmin)
109. Enable binary file operations for DJGPP and Cygwin.  unix/osdep.h (Cosmin)
110. Remove -DMSDOS from CFLAGS; use correct dependency in target crc_i386.obj.
     win32/makefile.w32, win32/makenoas.w32 (Cosmin)
111. Update win32/makefile.bor and win32/makefile.gcc (Cosmin)
112. Put mktemp() declaration inside the NO_PROTO guard.  tailor.h (Cosmin)
113. Use the right type (DWORD) for volSerNo, maxCompLen and fileSysFlags
     in FSusesLocalTime().  win32/win32.c (Cosmin)
114. Set the "zip Debug" configuration as default.  win32/vc6/zip.dsp (Cosmin)
115. Define ASM_CRC by default.  win32/osdep.h (Cosmin)
116. Avoid using file names that are distinguished solely by letter case;
     e.g. crc_i386.S and crc_i386.s.  unix/Makefile (Cosmin)
117. Stylistic fix inside ex2in().  unix/unix.c (Cosmin)
118. Change zlist dsk from ush to ulg to support Zip64 and added casts in
     zipfile.c to write ush.  zip.h, zipfile.c (Christian, Ed)
119. Conditionally apply S_IFLNK to support DJGPP.  unix/unix.c (Cosmin)
120. Change -dd [siz] (display dots, set optional dot size) to the options
     -dd (turn dots on, use 10 MB default) and -ds siz (set dot size).
     Found that using -dd with an optional value got confusing as detection
     of an optional argument, when the next argument was not either an option
     or the end of the line, was easy to overlook.  Easier to avoid optional
     values.  zip.c (Ed)
121. Change text output of manual pages to zip.txt, zip.txt, zipcloak.txt,
     zipnote.txt, zipsplit.txt.  unix/Makefile (Christian, Ed)
122. Change comments using // to /* */ format.  api.c, zip.c   (Christian)
123. Add support for signals SIGABRT, SIGBREAK, SIGBUS, SIGILL, and SIGSEGV
     to utilities.  zipcloak.c, zipnote.c, zipsplit.c (Christian)
124. Update ToDo30.txt file (Ed)
125. Delete old Manual file (Ed)
126. Update WHERE from Zip 2.32 (Ed)
127. Change description of dot-size.  zip.c (Ed)
128. Change VMS to use -ds to set dotsize.  vms/cmdline.c (Ed)
129. Update manuals.  man/zip.1, man/zipsplit.1, man/zipnote.1,
     man/zipcloak.1 (Ed)
130. Detect i586, i686 and Cygwin in version_local().  unix/unix.c (Cosmin)
131. Add clean target.  win32/makefile.w32, win32/makenoas.w32 (Cosmin)
132. Changed most 64-bit size/offset variable declarations (like zoff_t)
     into "unsigned" type (like uzoff_t), for better backward compatibility
     with non-ZIP64_SUPPORT setups where "ulg" was used for these variables.
     deflate.c, fileio.c, globals.c, trees.c, vms/vms_pk.c, win32zip.c,
     zip.c, zip.h, zipfile.c, zipup.c (Christian)
133. Add (ulg) cast to strstart in flush_block.  deflate.c (Christian)
134. Updated Win32 LARGE_FILE_SUPPORT setup for Watcom and MinGW.
     tailor.h, win32/osdep.h (Christian)
135. Add attempt count to tempname().  fileio.c (Christian)
136. Fixed size counter handling in debug code for Zip64. trees.c (Christian)
137. Moved cryptnote display text definition into revision.h, like was done
     in Zip 2.31.  zip.c, revision.h (Christian)
138. Add ZCONST.  fileio.c (Christian)
139. Removed earlier change in trash() where ASCII-containing iname was
     searched for native-coded '/' characters.  [Added note but left as
     changed 5/20/05 EG]  zipfile.c (Christian)
140. Change zipup size error message to use zip_fzofft().  zipup.c (Christian)
141. Updated win32/makefile.wat to enable Zip64 support and use directory
     for intermediate files.  (Christian)
142. Change fcount and zcount from ulg to extent as extent is used internally,
     but Zip64 standard supports up to ulg.  Add note to zip.h.  globals.c,
     zip.h (Christian)
143. Define NO_W32TIMES_IZFIX in compile options when appropriate. Add
     version information for USE_ZLIB compiler option.  zip.c (Christian)
144. Add support for SIGABRT, SIGBREAK, SIGBUS, SIGILL, and SIGSEGV signals.
     zip.c (Christian)
145. Add display-usize option to show uncompressed size.  zip.c (Ed)
146. Add many descriptions to options table.  zip.c (Ed)
147. Remove -R from help screen as on extended help screen.  zip.c (Ed)
148. Add basics to extended help.  zip.c (Ed)
149. Fix checks in scanzipf_reg() for empty file since cenbeg now unsigned.
     Change buffer from t to b in small big check.  Back up after small
     zip big archive check.  zipfile.c (Ed)
150. Change Zip64 not supported warning in scanzipf_reg().  zipfile.c (Ed)
151. Fix bug where local and central headers were not matching when compiled
     with NO_LARGE_FILE_SUPPORT.  Restored order of zlist structure elements
     to match order of local header as scanzipf_reg() compares it as an
     array of bytes to the local header.  Gag.  It needs fixing but at least
     it works as intended now.  zip.h, zipfile.c (Ed)
152. Minor fix from 10000 to 10 K for WriteNumString().  util.c (Ed)
153. Add overflow check to file_read().  zipup.c (SMS)
154. Add parameter p1 product specification.  vms/collect_deps.com (SMS)
155. VMS changes.  vms/descrip_mkdeps.mms (SMS)
156. Change zoff_t to uzoff_t and unsigned int to size_t.  vms/vms_im.c,
     vms/vms_pk.c (SMS)
157. Fix ; that was : at end of line.  Fix DisplayNumString() prototype.
     zip.h (Ed)
158. Get rid of leading blanks in DisplayNumString().  util.c (Ed)
159. Reset dot_count each file.  zipup.c (Ed)
160. Minor changes to extended help.  zip.c (Ed)
161. Move defines into DEFINED_ONCE block.  api.h (Mike)
162. Add Still Remaining And Planned For Zip 3.0 section.  WhatsNew (Ed)
163. Delete quotes around CHANGES.  Readme (Ed)
164. Add -lf, open file at path and use for logging, -la, append to
     existing logfile, and -li, include informational messages, options.
     globals.c, zip.h, zip.c (Ed)
165. Update extended help to include logging.  zip.c (Ed)
166. Add support for required short option value in form -o=value as optional
     does.  fileio.c (Ed)
167. If bytes_total is smaller than bytes_so_far for some reason then display
     negative of bytes_to_go.  This can happen if files grow in size after all
     the sizes are initially added up.  zip.c (Ed)
168. Use usize from filetime for adding to bytes_total when updating instead
     of size in old entry.  zip.c (Ed)
169. Change status counts files_so_far and bytes_so_far to include bad files
     so the status counts end at the end but add bad_files_so_far and
     bad_bytes_so_far to track bad files.  After minor fixes it looks like
     the counts remaining at the end are correct, even when some files are
     not readable.  Update bad file warnings.  zip.c, zip.h, globals.c,
     zipup.c (Ed)
170. Add uq for unsigned q in zipup().  Initialize z->len in case an error
     later so have a valid size.  zipup.c (Ed)
171. Check noisy in DisplayRunningStats() so logging is independent of it.
     zip.c (Ed)
172. Add check in DOS for windows and if running DOS version on Windows warn
     user.  zip.c, msdos/msdos.c, msdos/osdep.h (Johnny)
173. Add errno.h for strerror(errno) call.  zip.c, zipup.c (SMS)
174. Fix log problem if using -q option.  zipup.c (Ed)
175. Change "Far char" to "char Far" as Far is a qualifier not for the char
     type but the storage allocation of the array.  fileio.c (Christian)
176. Update note on extent.  globals.c (Christian, Ed)
177. Remove extra USE_ZLIB.  zip.c (Christian)
178. Add note for the OEM_RUSS '/' bug.  Need to look at later as it seems
     the Russian bug remains unfixed.  zipfile.c (Christian, Ed)
180. So byte counts always come out even, create good_bytes_so_far to
     count bytes read in and convert bytes_so_far to use the counts
     from the initial scan.  If files change during the zip operation
     good_bytes_so_far will change and not match bytes_so_far.
     zip.h, globals.c, zip.c (Ed)
181. Changes to extended help.  zip.c (Ed)
182. Update WhatsNew (Ed)
183. Update DLL resource copyright.  windll.rc, windll.aps (Ed)
184. Add directory search improvements to Win32 (within recursion, reuse
     attribs from directory lookup to avoid calling stat()).  Add
     getd_attribs(), procname_win32().  win32/win32zip.c (Johnny)
185. Cache result of IsFileSystemOldFAT() to avoid repetitive system calls
     for identical information.  win32/win32.c  (Johnny)
186. Add optimization to dosmatch(): apply alternate shortcut code when the
     pattern to match consists of one multichar wildcard ('*') followed
     by a fixed string.  util.c (Johnny)
187. Move DOS check_for_windows() checks to Help and Version and errors
     only.  Shorten message to one line.  zip.c, msdos/msdos.c (Ed)
188. Define WIN32_OEM to enable oem ansi conversions for more than RSXNT.
     Not yet fully implemented.  win32/win32.c, win32zip.c, zip.c,
     zipfile.c (Ed)
189. Directory search improvements for MSDOS.  msdos/msdos.c (Johnny)
190. Add caching of directory information.  If pattern is just *string no
     need to recurse.  win32/win32.c (Johnny)
191. If wild_stop_at_dir then do recurse to handle cases like a/b/*.txt.
     win32/win32.c (Ed)
192. Additional improvements to directory search speedups, including
     a) MSDOS port fixes for Turbo C++ compiler
     b) In both Win32 and MSDOS, change getDirEntryAttr() into macro,
        saving one function call overhead
     e) Add explaining comment to optimized procname_{local} code
     f) In util.c, move "*literal" pattern-matching optimization from
        dosmatch() to recmatch(). Advantages:
        - optimization used for all systems
        - optimization applied to all occurences where a "*" is last wildcard
          in pattern
        - "dosmatch()" only preconditoning wrapper for matching workhorse
          "recmatch()", it should not implement matching algorithms itself
        - optimization not applied for WILD_STOP_AT_DIR option
     g) >>>disabled<<< "*literal" optimization for all MBCS-aware environments,
        because suspect that supplied optimization code is not MBCS-clean
        (for details see the comment within the patch), so IS NOT USED for
        win32 port!  Can force activation of match optimization by specifying
        conditional compilation symbol TEST_FOR_MBCS_CLEAN.
     (Christian)
193. Add and move comments, implement changes for directory search improvements
     in Zip 3.0 util.c (Ed)
194. In win32/win32.c, IsFileSystemOldFAT(), add declarations of static caching
     variables where missing to fix win32 port compilation bug (Christian)
195. Correct changed arguments in RSXNT-only character set conversion
     call.  win32/win32zip.c (Christian)
196. Implement Directory Search improvements from Zip 2.32.  win32/win32zip.c
     (Johnny, Ed)
197. Debian Bug #312090 fix.  Reworded man page to give multiple examples of
     recursion, not just zip -r foo foo.  man/zip.1 (Ed)
198. Change "-Aa -D_HPUX_SOURCE +e" to -Ae for HP.  "HP-UX with the HP compiler
     and on AIX 4.2.0. AIX 5.1 with gcc-3.4.3 (32-bit) and Darwin built fine
     - though AIX 5.1 needed CC=gcc make -e ... to find gcc.  According to the
     HP-UX man page -Ae is equivalent to -Aa -D_HPUX_SOURCE +e it seems the
     +e is needed and -Ae is more terse anyway."  Expression generated before
     was too long.  unix/configure (Rodney Brown)
199. Add support for osf4.0f that does not have fseeko or ftello but has 64-bit
     fseek and ftell though.  tailor.h (Rodney)
200. Fix unsigned char to char in recmatch(), add casts for compares.  util.c
     (Ed)
201. Fix for alpha off_t long long.  unix/osdep.h (Rodney)
202. Change shmatch() from uch to char and change parameters to recmatch().
     Change dosmatch().  util.c (SMS, Rodney, Ed)
203. Add local for DisplayRunningStats().  zip.c (Rodney, Ed)
204. Disable unused append_ubyte_to_mem().  Fix error messages in other append.
     zipfile.c (Rodney, Ed)
205. Delete unused getDirEntryAttribs().  msdos/msdos.c (Christian)
206. Change warning when running msdos version on Windows.  msdos/msdos.c (Ed)
207. Change recmatch() to support MBCS matching.  util.c (Christian)
208. Update WhatsNew (Ed)
209. Update Readme (Ed)
210. Format Readme to fit in 80 character lines (SMS, Ed)
211. Rename install.vms to install_vms.txt.  vms/install_vms.txt (SMS)
212. Add reference to vms/install_vms.txt in INSTALL (SMS)
213. Update INSTALL (Ed)
214. Remove ALT_NEXTBYTE and Building UnZip sections as no longer needed.
     vms/notes.txt (SMS, Ed)
215. Add note to TODO (Ed)
216. Update Makefile message to suggest using generic.  unix/Makefile (Ed)
217. Update text output of manual.  zip.txt (Ed)
218. Update VMS section.  INSTALL (SMS, Ed)
219. Minor changes in vms/install_vms.txt (SMS, Ed)
220. Update VMS install information.  INSTALL, vms/install_vms.txt (SMS, Ed)
221. Do not use _stati64 under Cygwin.  win32/osdep.h (Cosmin)
222. Add note to Makefile to use generic first.  unix/Makefile (Ed)
223. Add Test option for VMS CLI.  vms/cmdline.c (SMS, ?)
224. Add noconfirm to deletes, define symbol edit.  vms/descrip.mms (SMS)
225. Changes to vms/install_vms.txt (SMS)
226. Add note on symbols to VMS.  INSTALL (SMS)
227. Update license headers.  vms/osdep.h, vms/vms.h, vms/vmsmunch.c,
     vms/zipup.h, vms/vmszip.c, vms/vms.c, vms/vms_im.c, vms/vms_pk.c,
     vms/command.c (Ed)
228. Add stsdef.h include for VMS and convert unzip test return to VMS
     result for VMS.  zip.c (SMS)
229. Add const to ziperr().  amiga/amiga.c (Paul)
230. Clean up makefile.  amiga/makefile.azt (Paul)
231. Don't try Amiga large file support.  amiga/osdep.h (Paul)
232. Add note on -V and -VV.  vms/notes.txt (SMS)
233. Small update.  vms/zip_cli.help (SMS)
234. Format Windows warning message.  msdos/msdos.c (Christian)
235. Format changes.  util.c (Christian)
236. Update VMS.  INSTALL (SMS)
237. Add creation of intermediate object directories.  msdos/makefile.wat
     (Christian)
238. Add void * cast.  msdos/msdos.c (Christian)
239. Add include for mktemp().  msdos/osdep.h (Christian)
240. Fix __RSXNT__ and WIN32_OEM define blocks.  win32/win32.c (Christian)
241. Fix __RSXNT__ and WIN32_OEM define blocks.  win32/win32zip.c (Christian)
242. Add != NULL to check.  zip.c (Christian)
243. Fix WIN32_OEM.  zipfile.c (Christian)
---------------------- October 11th 2005 version 3.0f01 ----------------------
(the internal betas may be merged later)
 1. Add DSEG for Watcom data segment.  msdos/makefile.wat (Christian)
 2. Add -zq and use assembler.  os2/makefile.os2 (Christian)
 3. Update header.  os2/match32.asm (Christian)
 4. Change len from int to unsigned int.  os2/os2.c (Christian)
 5. In GetLongPathEA() limit tempbuf to CCHMAXPATH.  os2/os2.c (Christian)
 6. Add DWATCOM_DSEG to use data segment.  win32/makefile.wat (Christian)
 7. Update header and add DGROUP.  win32/match32.asm (Christian)
 8. Add UNICODE_SUPPORT define.  zip.h, zip.c (Ed)
 9. Add oname to f and z structs for the display name to use in messages.
    Change z->zname to z->oname in messages.  fileio.c, zip.c, win32zip.c,
    zipup.c, zipfile.c, zip.h (Ed)
10. Move multi-byte defines to make global (they were needed with wide
    characters but that was taken out and left them where they are).
    fileio.c, zip.h
11. Add copy_args(), free_args(), and insert_arg() to create copy of argv
    that can free() and to support inserting "@" in get_option for lists.
    fileio.c, zip.h
12. Insert arg "@" after list if not followed by option.  fileio.c
13. Add args variable and copy argv to args so can use insert_arg(). zip.c
14. Add MKS Korn Shell note.  zip.c
15. Change cast of option in add_filter() calls from char to int. zip.c
16. Implement multi-byte version of Unicode support.  To support Win32 NT
    wide calls will require additional work not planned for this release.
    Changes include (Ed):
    - Add use_wide_to_mb_default flag.  globals.c, zip.h
    - Add compiler UNICODE_SUPPORT version information.  zip.c
    - Add uname to f and z structs for UTF-8 name. zip.c
    - Moved some defines out of ZIP64 section.  zipfile.c
    - Add define UTF8_PATH_EF_TAG for Unicode Path extra field.  Currently
      the tag is 0x7075 which is 'u' 'p' for Unicode path and seems
      free according to the AppNote.  The extra field is
        tag (2 bytes 'u' 'p')
        size (2 bytes)
        Unicode Path size (2 bytes)
        unused (2 bytes set to 0)
        unused (2 bytes set to 0)
        Unicode path (variable)
      The unused locations also serve as a check in case the tag is in
      use already.
    - Add add_Unicode_Path_local_extra_field() and
      add_Unicode_Path_cen_extra_field() functions. zipfile.c
    - Add read_Unicode_Path_entry() function. zipfile.c
    - Set uname and oname in scanzipf_ref(). zipfile.c
    - Add define wide_to_mb_default.  Add zchar but not used. win32/osdep.h
    - Add wide command line reading but don't use. win32/win32.c
    - Add port functions for Unicode, including local_to_utf8_string(),
      wide_to_escape_string() (for converting a wide character that can't be
      converted to mb in the local character set to a reversable escape string),
      escape_string_to_wide(), wide_to_local_string(), local_to_display_string()
      (for creating the display version of name), utf8_to_local_string(),
      local_to_wide_string(), wide_to_utf8_string() (NOT IMPLEMENTED), and
      utf8_to_wide_string() (NOT IMPLEMENTED).  win32/win32.c
    - Implement attempt at escape function.  Whenever a wide character can't
      be mapped to the local character set, this function gets called.
      Currently the wide character is converted to a string of hex digits.
      If the wide can fit in 2 bytes then the form #1234 is used.  If not,
      the 4-byte form #L12345678 is used.
    It compiles but needs the utf8 functions implemented.  Also needs testing
    in a multi-byte environment and only Windows is implemented so need to at
    least do Unix. (Ed)
17. Update freeup() to include uname and oname.  zip.c
18. Move define wide_to_mb_default so default for all is '_'. zip.h (Ed)
19. No changes needed to osdep.h and update unix/unix.c but not tested. (Ed)
---------------------- October 19th 2005 version 3.0f02 ----------------------
 1. Remove null value check for split_size as get_option() already checks.
    zip.c (Ed)
 2. Update f$search().  vms/descrip.mms (SMS)
 3. Save parse name before search and use that on failure.  Change name parsing
    in ziptyp() to solve a problem with search-list logical name device directory
    specs.  vms/vms.c (SMS)
 4. Compile in UNICODE_SUPPORT if have wchar_t and mbstowcs().  unix/configure (Ed)
 5. Move Unicode defines to zip.h and functions to fileio.c so generic.  Create
    a new OEM function for Windows.  fileio.c, zip.h, tailor.h, win32/win32.c (Ed)
 6. Add UTF-8 functions.  fileio.c (Paul)
 7. Convert Unicode functions to use zwchar defined as unsigned long for wide
    char.  fileio.c, zip.h (Ed)
 8. Add wchar_t check for Unix.  unix/configure (Ed)
 9. Add default when zwchar (4 bytes) is too big for wchar_t (2 bytes).  zip.h (Ed)
10. Allow for states for wide characters but surrogates not done.  fileio.c (Ed)
11. Update WhatsNew (Ed)
---------------------- December 16th 2005 version 3.0f03 ----------------------
 1. Fix broke encryption when ZIP64_SUPPORT enabled by accounting for need for
    data description when encrypting.  Data description is not required for
    encryption (WinZip does not use one) but seems needed by Zip for some reason.
    zipfile.c (Ed)
 2. Add function bfwrite() to do buffered fwrite().  Most output already is
    written by zfwrite used by crypt.c which now calls bfwrite.  All splitting
    and new byte counts are done in bfwrite.  fileio.c (Ed)
 3. Move some functions out of ZIP64_SUPPORT defines for use with UNICODE_SUPPORT.
    zipfile.c, zip.h (Ed)
 4. Add is_ascii_string() and only create Unicode extra field if z->iname is
    not ascii.  zipfile.c, zip.h, fileio.c,  (Ed)
 5. Add parameter rewrite to putlocal() to note when rewriting bytes so the bytes
    rewritten are not counted in output totals.  zipfile.c, zip.h (Ed)
 6. Handle VMS ... wildcard.  util.c (SMS)
 7. Make tempzip file name global.  zip.c, globals.c, zip.h (Ed)
 8. Add out_path global and -O path option to allow the output archive to have a
    different name than the input archive, if there is one.  This allows
    updating a split archive, since output to the same split name would otherwise
    be complicated and not user friendly.  Use out_path for output.  zip.h,
    zip.c, globals.c (Ed)
 9. Many output functions that had output file y as parameter, such as zipup(),
    zipcopy(), putlocal(), putcentral(), and putend(), now do not as y is
    now global.  This allows changing y as splits are created.  zip.c (Ed)
10. Add function zipmessage() for writing messages like zipwarn() but are
    informational.  zip.c (Ed)
11. Minor changes to help.  zip.c (Ed)
12. Add SPLIT_SUPPORT to version output.  zip.c (Ed)
13. Add rename_split() to rename and set attributes for a split.  zip.c (Ed)
14. Add set_filetype() to set attributes of split.  zip.c (Ed)
15. Change variable a (holds attributes) to zipfile_attributes and make global.
    zip.c, zip.h, globals.c (Ed)
16. Add key_needed flag for encryption and move setting key to after
    command line processed.  zip.c (SMS)
17. Initialize dot size using default only if dot_size not set.  zip.c (Ed)
18. Change command line processing so that last -P or -e is used.  zip.c
    (Ed)
19. Fix broke writing of 4-byte spanning signature at the beginning of the archive
    if splitting.  zip.c (Ed)
20. Use bfcopy() instead of fcopy() to copy archive beginning.  bfcopy() uses
    global y.  zip.c (Ed)
21. It looks like tempzf is no longer used.  zip.c (Ed)
22. Account for SUNPRO_C and DECC_VER.  Change SPARC to Sparc.  unix/unix.c (SMS)
23. Remove GNUC.  vms/cmdline.c (SMS)
24. Change case of system calls.  vms/vms.c (SMS)
25. Add fix for VMS ... matching, but may change Zip to avoid ex2in() and in2ex()
    for pattern matching in future.  vms/vmszip.c (SMS)
26. Remove /NODIRNAMES and /DIRNAMES from VMS help.  vms/zip_cli.help (SMS)
27. Define new globals zip64_eocd_disk, zip64_eocd_offset, current_local_tempname,
    bytes_this_split, and bytes_this_entry for splits.  globals.c, zip.h (Ed)
28. Add SUNPRO C and DEC C compile checks.  unix/configure (SMS)
29. Add CFLAGS_NOOPT for removing optimization for configure.  unix/Makefile (SMS)
30. Modify crypthead() to use bfwrite().  crypt.h, crypt.c (Ed)
31. Modify zfwrite() to use global output file.  crypt.h, crypt.c (Ed)
32. Modify zfwrite() when no encryption to use bfwrite().  crypt.h (Ed)
33. Add bfcopy() to copy to y.  fileio.c (Ed)
34. Add close_split() and bfwrite() for splits.  fileio.c (Ed)
35. Add is_ascii_string() to check if UTF-8 extra field is needed.  fileio.c (Ed)
36. Change Unicode escape of 2-byte wide from #1234 to #U1234.  fileio.c (Ed)
37. Add read_Unicode_Path_entry() to read the UTF-8 path extra field.  zipfile.c (Ed)
38. Latest Unicode Path extra field format is
      1 byte     Version of Unicode Path Extra Field
      2 bytes    Name Field Checksum
      variable   UTF-8 Version of Name
39. Use CRC-32 for Unicode Path Checksum and AND halves.  zipfile.c (Paul)
40. Add Unicode Path Checksum check to make sure extra field applies to Name field
    still.  zipfile.c (Christian)
41. Move get_extra_field() out of Zip64 block and make available for splits.
    zipfile.c (Ed)
42. Check in putlocal() using is_ascii_string() and don't create Unicode path
    extra field if name is ASCII characters.  zipfile.c (Ed)
43. If local header for split is on another disk and using split method 1, close
    that split in putlocal() after rewrite local header.  zipfile.c (Ed)
44. Fix data descriptor bug when encrypting where putextended() did not handle the
    not Zip64 case, which mostly only happens now for encryption.  zipfile.c (Ed)
45. Check for ASCII name using is_ascii_string() in putcentral() for Unicode path
    extra field.  zipfile.c (Ed)
46. Instead of single disk values, update putend() to use real split values for
    current_disk, cd-start_disk, cd_entries_this_disk, cd_start_offset,
    zip64_eocd_disk, zip64_eocd_offset, and current_disk and allow for
    needing Zip64 if exceed standard max values for current_disk, cd_start_disk,
    cd_entries_this_disk, total_cd_entries, and cd_start_offset.  zipfile.c (Ed)
47. Use current_local_offset and current_local_disk for z->off and z->dsk in
    zipup().  zipup.c (Ed)
48. Fix bug where force_zip64 was used to determine descriptor size but can have
    Zip64 entry without force_zip64 so use zip64_entry.  zipup.c (Ed)
49. Change the p - o != s compression size test for splits to bytes_this_entry
    != (key ? s + 12 : s) and avoid ftell() in split.  zipup.c (Ed)
50. If local header is on a previous split and split method 1 do the seek on that
    split to update header.  zipup.c (Ed)
51. For streaming, only force Zip64 if reading stdin and writing a non-seekable
    device.  In other cases can detect either the input file size and set Zip64
    if needed or seek in the output to update the local headers.  zipup.c,
    zipfile.c, zipup.c (Ed)
52. Allow creation of stored archives with descriptors for testing.  Currently
    they can't reliably be read but this is planned.  zipup.c, zipfile.c, zip.c
    (Ed)
53. Update help, adding in -e, -P, -s splitsize, -sp, and -sv options.  zip.c (Ed)
54. Spelling fix in zipsplit man page.  man/zipsplit.1, zipsplit.txt (Ed)
55. New option -sv and variable noisy_splits to enable verbose splitting.
    Default is to quietly create splits, unless -sp set to pause between splits.
    zip.h, zip.c, globals.c, fileio.c (Ed)
---------------------- December 23rd 2005 version 3.0f04 ----------------------
 1. Move inlined text-vs-binary checks from file_read() into a separate,
    new function named is_text_buf().  zipup.c, util.c, zip.h (Cosmin)
 2. Fix calls to putlocal to remove the removed dest parameter.  crypt.c (Ed)
 3. Add get_split_path() to get the path for a split given the disk number.
    fileio.c, zip.h (Ed)
 4. Change formatting of zipmessage() to remove tabbing and add formatting
    to call to zipmessage().  fileio.c, zip.c (Ed)
 5. Initialize many variables such as y and tempzip.  zip.c, fileio.c,
    zipfile.c (Ed)
 6. Add loop to pause during split method 2 to allow changing disk or changing
    the path for the next split.  fileio.c (Ed)
 7. If after starting new split there is not enough room for the remaining buffer
    for split method 1 display error and exit and for split method 2 we can
    display a warning and user can replace disk or change path.  fileio.c (Ed)
 8. Add list to store input file arguments using add_name() to add the name to
    filelist_struc filelist and then process the names after the input archive
    is read.  zip.c (Ed)
 9. Fix infinite loop when opening a log file whose name contains multiple '/'.
    zip.c (Cosmin)
10. Move split size message lower and only output if option sv sets
    noisy splits.  zip.c (Ed)
11. Set y to output file, remove output file from zipcopy(), putlocal(),
    putcentral(), and putend().  zipsplit.c, zipnote.c, zipcloak.c (Ed)
12. Add code for not SPLIT_SUPPORT case.  zipfile.c, zipup.c (Ed)
13. Prepend '-' to commands from target clean.
    win32/makefile.w32, win32/makenoas.w32, win32/makefile.bor (Cosmin)
14. Must not call putenv() in iz_w32_prepareTZenv() under Cygwin.
    win32/osdep.h (Cosmin)
15. Add browse info in Visual C++ 6 project.  win32/vc6/zip*.dsp (Cosmin)
---------------------- December 27th 2005 version 3.0f05 ----------------------
 1. Add proposed changes to License (Ed)
 2. Fix -l corruption bug by using memcpy() instead of wrongly changing the
    buffer pointer.  Fix was left out of last beta.  zipup.c (Cosmin)
 3. Fix get_split_path() parameter.  zip.h (SMS, Ed)
 4. Add -dg and display_globaldots to display dots globally for entire archive
    instead of for each file.  Is not affected by noisy flag.  globals.c,
    zip.h, zip.c, zipup.c, fileio.c (Ed)
 5. Make dot_count and dot_size uzoff_t, dot_count because with global dots
    dot_count does not reset and with terabyte files the number of buffers
    could exceed 2G, dot_size to allow use of ReadNumString() to read number.
    zip.c, zip.h, globals.c (Ed)
 6. Add Deletion to help.  zip.c (Ed)
 7. Fix delete date.  zip.c (Ed)
 8. For streaming, need to assume Zip64 if writing a non-seekable device so
    extra field for Zip64 is created if needed.  zipup.c, zipfile.c, zipup.c (Ed)
 9. Add remove_local_extra_field() and remove_central_extra_field().
    zipfile.c (Ed)
10. Remove disabled copyright from license().  zip.c (Ed)
11. Clean up recent changes.  zip.c, zipfile.c, fileio.c, zip.h, zipup.c (Ed)
12. Create scanzipf_regnew() for new file scan.  zipfile.c (Ed)
---------------------- December 29th 2005 version 3.0f06 ----------------------
 1. Change dot_size and dot_count from uzoff_t to zoff_t to allow use of
    negative flag values.  globals.c, zip.h (SMS, Ed)
 2. Remove file parameter to bfwrite() in putend().  zipfile.c (SMS, Ed)
 3. Add back code for not SPLIT_SUPPORT to putend().  zipfile.c (SMS, Ed)
 4. Change tag from ush to ulg in remove_local_extra_field() and
    remove_central_extra_field() to avoid parameter problems.  zipfile.c (Ed)
 5. Add allow_empty_archive to flag when want to create an empty archive.
    globals.c, zip.h (Ed)
 6. Set allow_empty_archive when using -i and expecting an archive to be
    created.  This is in response to the 2/14/05 email.  zip.c (Ed)
 7. Make before and after variables that hold the dates of files to
    process or delete global so can use them in scanzipf_regnew().  zip.h,
    zip.c, globals.c (Ed)
 8. Change scanzipf_regnew() to be based on scanzipf_fix() which seems closer.
    Still have not coded the new regular zipfile reader.  zipfile.c (Ed)
 9. For new reader first get add list and then read old archive and filter
    as reading old entries.  zip.c, zipfile.c (Ed)
10. Define USE_NEW_READ to turn on using new reader, which is being
    created.  This allows all to work while the new reader is being worked
    on.  zip.c, zipfile.c (Ed)
---------------------- January 9th 2006 version 3.0f07 ----------------------
 1. Remove dest parameter from crypthead() and zipcopy().  crypt.c (SMS, Ed)
 2. Change -ds to handle dots for as small as every 32 KB.  zip.c (Ed)
 3. Add ask_for_split_write_path() and ask_for_split_read_path()  for
    asking where to put the next write split and for locating the next
    read split.  zip.h, fileio.c (Ed)
 4. Add in_path to track where reading splits from. zip.h, globals.c, zip.c (Ed)
 5. Update copyright date on changed files to include 2006 (Ed)
 6. Replace stderr with mesg for most output messages.  deflate.c, fileio.c,
    trees.c, util.c, zip.c, zipcloak.c, zipfile.c, zipnote.c, zipsplit.c
 7. Add mesg_line_started to track if need new line on mesg output and update
    zipmessage() and zipwarn() to use it.  Set mesg_line_started to 1 when
    newline not last character written to mesg and 0 when it is.  deflate.c,
    zip.h, zip.c, globals.c, zipup(), fileio.c (Ed)
 8. Include base_path as parameter for get_split_path().  fileio.c (Ed)
 9. Account for VMS version in split path.  Add vms_file_version().  fileio.c,
    zip.c, vms/vms.c, vms/vms.h (SMS)
10. Create crc16f() to create ANDed halves crc32 for Unicode using copy
    of crc32() but may change to use main copy.  zipfile.c, zip.h,
    fileio.c (Ed)
11. Close in_path and out_path in finish() and ziperr().  zip.c (Ed)
12. Change perror() to strerror() and print to mesg in ziperr().  zip.c (Ed)
13. Add find_next_signature() to find the next signature when reading a
    zip file.  zipfile.c (Ed)
14. Add find_signature() to find a given signature from current point in
    archive.  zipfile.c (Ed)
15. Add at_signature() to check if at a given signature in archive.
    zipfile.c (Ed)
16. Changes to scanzipf_regnew() but far from done.  zipfile.c (Ed)
17. Changes to readzipfile() to close input archive file and allow new
    zipfile reader to open and close files as goes through splits.
    zipfile.c (Ed)
18. Change -s to default to MB and set minimum split size to 64k.
    zip.c (Ed)
19. Add link to user32.lib for CharToOem().  makefile.w32, makenoas.w32
    (Cosmin)
20. Remove unused Z64_EFPos.  globals.c (Ed)
---------------------- February 13th 2006 version 3.0f08 ----------------------
 1. Move option checks before any work is done.  zip.c (Ed)
 2. Update bfcopy() to handle reading splits and remove input file
    parameter and use global in_file.  fileio.c (Ed)
 3. Change ask_for_split_read_path() to allow user aborting.  fileio.c (Ed)
 4. Change get_split_path() to use standard file extensions from most
    recent AppNote of .z01, .z02, ..., .z99, .z100, .z101, ... fileio.c (Ed)
 5. Change is_ascii_string to use 0x7F for ASCII detection.  fileio.c (Ed)
 6. Add copy_only global for when -O is used to change the format of an
    archive without changing the contents.  This allows for converting an
    archive to a split archive for instance.  The global copy_only is used
    to output status information for copies when normally copied files
    have no status messages.  globals.c (Ed)
 7. Add in_file, split_path, total_disks, current_in_disk, and
    current_in_offset as globals to track reading splits.  zip.h,
    globals.c (Ed)
 8. Update copyright date.  revision.h (Ed)
 9. Close in_file if open in finish().  zip.c (Ed)
10. Add -O (big o) to extended help.  zip.c (Ed)
11. Remove readzipfile() from zipstdout() and use main call later down.
    zip.c (Ed)
12. Move archive reading and file scanning after command line checks.
    zip.c (Ed)
13. If -O out_zip and so have_out is set then set copy_only and allow
    copying instead of error message *Nothing to do*.  zip.c (Ed)
14. If zipbeg is just 4 bytes and spanning then assume is spanning
    signature and set zipbeg to 0 to ignore.  zip.c (Ed)
15. Don't open initial write test as modify if have_out is set and so have
    a separate output file.  zip.c (Ed)
16. If zipbeg is 0 and nothing at beginning of archive to copy then don't
    open input file until zipcopy() does.  zip.c (Ed)
17. If stuff at beginning then copy and close input file.  Should be able
    to keep it open but easier to close it and let zipcopy() reopen it.
    zip.c (Ed)
18. Add status message when copy_only set so something is displayed.
    zip.c (Ed)
19. Instead of closing x at bottom close in_file.  The variable x was used
    inconsistently and it seemed easier to make in_file global instead.
    Then again y remains the global output variable.  zip.c (Ed)
20. Update copyright.  zipnote.c, zipsplit.c, zipcloak.c (Ed)
21. Change adjust_zip_local_entry() to return 1 if the entry is Zip64 and
    0 if not.  This is needed to know how large the extended local header
    is later.  zipfile.c (Ed)
22. Add read_Unicode_Path_local_entry() to read the local version of the
    Unicode Path extra field.  zipfile.c (Ed)
23. Handle disk in adjust_zip_central_entry().  zipfile.c (Ed)
24. Change USE_NEW_READ to SPLIT_SUPPORT as splits seems to be stable more
    or less.  zipfile.c (Ed)
25. Add is_signature() to compate signatures.  zipfile.c (Ed)
26. Create scanzipf_fixnew().  It should look like scanzipf_regnew().
    zipfile.c (Ed)
27. Change scanzipf_regnew() to read the central directory and create zlist
    and handle reading traditionally.  Allows using central directory
    information, in particular file sizes, in zipcopy() while reading
    entries.  Use global in_file instead of f for input file and set to NULL
    when not a valid file so finish() only tries to close it if needed.
    Check to make sure the End Of Central Directory record found is infact
    the last one in case a stored archive is in the last 64 KB.  Refuse
    to update a split archive but recommend using -O instead.  zipfile.c (Ed)
28. Change readable check in readzipfile() to require input archive to exist
    if using -O out_archive.  zipfile.c (Ed)
29. Change putlocal() to not create a Zip64 extra field unless needed and
    on rewriting the local header to remove Zip64 extra field if was created
    but not needed.  Add check if assumed entry does not need Zip64 but does,
    meaning probably the uncompressed size is less than 4 GB but the
    compressed size is over 4 GB.  zipfile.c (Ed)
30. Change zipcopy() to use the global in_file and y files and to open and
    close read splits as needed.  Checks the local header against the
    central directory header to verify same file, which should be as using
    the disk and offset values from the central directory.  Update disk and
    offset in central directory.  zipfile.c (Ed)
31. Change out_path and out_len to base_path and base_len in
    get_split_path().  fileio.c (SMS)
32. Update command line options for VMS to include verbose splitting.
    vms/zip_cli.cmd, vms/cmdline.c (SMS)
33. Handle HP.  unix/unix.c (SMS)
34. Add adler16() checksum function.  util.c (Cosmin)
35. Use FILE_FLAG_BACKUP_SEMANTICS and a less demanding access mode
    in CreateFile() when retrieving file attributes.  Fixes a problem
    when adding a directory entry from an NTFS or a CDFS partition
    (i.e. one that stores timestamps using universal time), and the
    directory timestamp is not the same daylight savings time setting.
    The effect is an offset in the timestamp by one hour, if zip is
    built using NT_TZBUG_WORKAROUND. The problem is not exposed,
    however, if NO_W32TIMES_IZFIX is defined.  win32/win32.c (Cosmin)
---------------------- March 19th 2006 version 3.0f09 ----------------------
 1. Fix encryption problem where a large file with uncompressable data
    can cause deflate to store bad data.  See crypt.c for details.
    Thanks to the nice people at WinZip for finding and providing the
    details of this problem.  crypt.c (Ed)
 2. Add note at top of Extended Help to refer to the Zip Manual.  zip.c
    (Ed)
 3. Update extended help for delete.  zip.c (Ed)
 4. Change crypthead() to use buffer and bfwrite() which is split aware.
    crypt.c (Ed)
 5. Create SPLIT_SUPPORT version of zipcloak() and zipbare() and read
    local header rather than assume data using central header.  crypt.c (Ed)
 6. Change zfwrite() to use global output file y.  crypt.c (Ed)
 7. Remove in and out parameters from zipcloak() and zipbare() for
    splits.  crypt.h, zipcloak.c (Ed)
 8. Change get_split_path() to get_in_split_path() and get_out_split_path().
    zipfile.c, fileio.c, zip.h (Ed)
 9. Change crc32f() to crc32u().  fileio.c, zip.h (Ed)
10. Add encryption overwrite fix to copy_block() and remove from zfwrite().
    crypt.c, tree.c (Ed, Christian)
11. Add note on bug fix.  WhatsNew (Ed)
12. Add copy_only mode.  zip.c (Ed)
13. Make SPLIT_SUPPORT the default.  zip.h (Ed)
14. Add set_filetype(), rename_split(), and zipmessage().  zipcloak.c,
    zipnote.c, zipsplit.c (Ed)
15. Add long option support.  zipcloak.c (Ed)
16. Set in_path.  zipcloak.c, zipnote.c, zipsplit.c (Ed)
17. Use SPLIT_SUPPORT calls.  zipcloak.c, zipnote.c, zipsplit.c (Ed)
18. Set current_disk, cd_start_disk, and cd_entries_this_disk for use
    by putend() and bytes_this_split for putcentral().  zipsplit.c (Ed)
19. Include ctype.h for toupper().  zipfile.c (Ed)
20. Add readlocal() for utilities to read local header.  zipfile.c (Ed)
21. Put Zip64 variables and code in ZIP64_SUPPORT ifdef in scanzipf_regnew().
    zipfile.c (Ed, SMS)
22. Use zip_fzofft() for converting offset.  zipfile.c (Ed, SMS)
23. Add casts to many append to memory calls.  zipfile.c (Ed)
24. Move handling of .zip split to get_in_split_path() and
    get_out_split_path().  zipfile.c (Ed)
25. Handle fix = 3 case for ZipNote that renames entries in zipcopy().
    zipfile.c (Ed)
26. Restore clearing of extended local header bit when not encrypting.  When
    encrypting need to output extended local header using putextended() in
    zipcopy().  zipfile.c (Ed)
27. Add notes on using file time for encrypting.  zipup.c (Ed)
28. Remove extended local header bit separately for z->lflg (local flags)
    and z->flg (central directory flags).  These should be the same but
    could be different.  zipup.c (Ed)
29. Suppress command line globbing for MINGW.  win32/win32.c (Christian)
30. Add EF UT time fix for delete.  zip.c (Christian)
---------------------- April 28th 2006 version 3.0f10 ----------------------
 1. Add note to extended help to escape [ as [[] or use -nw.  zip.c (Ed)
 2. Remove local declaration of tempfile as now global.  zipnote.c,
    zipcloak.c (SMS)
 3. Add zip_fzofft() for outputting uzoff_t bin size c.  zipsplit.c (SMS)
 4. Add only_archive_set and clear_archive_bits to do Window archive bit
    selection and clearing.  Add -AS option to require DOS Archive bit
    be set and -AC to clear archive bits of included files.  Add
    ClearArchiveBit() to clear archive bits after archive created.
    Only Win32.  globals.c, zip.h, zip.c, win32zip.c, win32.c (Ed)
 5. Change procname_win32() and readd() to check archive bit.
    win32/win32zip.c (Ed)
 6. Update copyright.  win32/win32zip.h (Ed)
 7. Add mesg_line_started = 0 to stats to remove blank line when clearing
    archive bits.  zipup.c (Ed)
 8. Add zip_fzofft() to format split size.  zipsplit.c (SMS)
 9. Update help for splits and archive bit and add note on escaping [.
    zip.c (Ed)
10. Add -M option and bad_open_is_error to exit with error if any input
    file unreadable.  Also error if -M and would get "name not matched"
    warning.  zip.c (Ed)
11. Copy Zip 2.32 csharp example, though it is designed for zip32.dll and
    not zip32z64.dll from Zip 3.0.  Updated note.  windll/csharp (Ed)
12. Change -M to -MM and define -mm to avoid accidental use of -m.
    zip.c (Ed)
13. Define split_method -1 to not allow splitting, mainly used when reading
    a split archive to stop automatic splitting of output with same
    split size.  Now -s=0 or -s- disables splitting.  zip.h, globals.c,
    zip.c (Ed)
14. Add fflush() after dots displayed.  deflate.c, fileio.c, zipup.c (Ed)
15. Instead of assuming buffer size as 32 KB for dots, use WSIZE for
    compressing and SBSZ for storing and calculate as dots are counted.
    Now dot_count and dot_size are bytes instead of buffers.  Add dots
    to Delete and Archive modes.  zip.c, zipup.c, deflate.c, fileio.c (Ed)
16. If reading a split archive and split size has not been given, get
    size of first split read by zipcopy(), which should be the first
    split, and set split size to that, making the output archive the same
    split size as the input archive.  Delay -sv split size message
    if split size is 0 at first but then changed.  zipfile.c (Ed)
17. Add proc_archive_name() for new archive mode to process names in old
    archive only and skip looking on the file system.  Easier than modifying
    the various port codes.  fileio.c (Ed)
18. Fix cd_start_offset bug.  fileio.c (Ed)
19. Create new action ARCHIVE that looks for matches only in old archive
    for Copy Mode.  If no input paths and there is an output archive,
    Copy Mode is assumed even without ARCHIVE.  Old default Copy Mode
    when no input files updated to work like -U mode and allow filters.
    New global copy_only currently only used to control global dots.
    zip.c, fileio.c, globals.c, zip.h (Ed)
20. Update help.  Change extended help to more help.  Update more help
    to include internal modes delete and new Archive.  Update help for
    formatting options.  Update help for wildcards.  Remove streaming
    examples from top basic section.  Indent examples.  Help for new
    --out and Copy Mode.  Add warnings that output using data descriptors
    may not be compatible with some unzips.  Update dots help and add
    warning that dot size is approximate.  Add help for new DOS archive
    bit options.  More help for -b and -MM.  zip.c (Ed)
21. Add support for Unix FIFO (named pipe).  Add set_extra_field() stat
    name ending in '/' fix found in Zip 2.32.  unix/unix.c (Ed)
22. Add check to not allow setting -U (internal copy) in similar cases to
    -d (delete).  zip.c (Ed)
23. Add counts for internal modes Delete and Archive.  Byte counts for -db
    remain uncompressed size for external modes, but internal modes Delete
    and Archive now use compressed sizes as these copy that many bytes.
    zip.c (Ed)
24. Add check for when ftell() wraps. zipup.c (Ed)
25. Add mesg_line_started = 0 to result percentage message.  zipup.c (Ed)
26. Update contact information.  unix/packaging/preinstall.in (SMS, Ed)
27. A few Zip64 fixes to set Zip64 correctly and fix disk and offset of
    Zip64 End Of Central Directory.  zipsplit.c (Ed)
28. Update comments for get_option().  fileio.c (Ed)
29. Update DLL version.  windll/windll.rc (SMS, Ed)
30. New option -sf shows files that would be operated on.  zip.c (Ed)
---------------------- May 5th 2006 version 3.0f11 ----------------------
 1. Use C prototypes for Unicode functions.  fileio.c (SMS)
 2. Change constant for mask in set_file_type from unsigned to signed.
    trees.c (SMS)
 3. Use C prototypes for zip_fzofft() and zip_fuzofft() signed and
    unsigned zoff_t formatting functions.  util.c (SMS)
 4. Remove U from constants in Adler16 code.  util.c, zip.h (SMS)
 5. Add spaces to VMS usage to avoid misinterpretation.  zip.c (SMS)
 6. Add OF() to at_signature().  zipfile.c (SMS)
 7. Use zip_zofft() for entries error.  zipfile.c (SMS)
 8. Remove U in constants in percent().  zipup.c (SMS)
 9. VMS command line updates.  vms/cmdline.c, vms/descrip_deps.mms,
    vms/vms_zip.rnh, zip_cli.cld, vms/zip_cli.help (SMS)
10. Update to VMS help.  vms/zip_cli.help (Ed)
11. Check for memmove() and strerror().  Remove specific 64-bit support
    for SunOS, as large file support now does.  unix/configure (SMS)
12. Add emergency replacements for memmove() and strerror().
    unix/unix.c (SMS)
13. Remove old not SPLIT_SUPPORT code.  globals.c, zipnote.c, fileio.c,
    crypt.h, crypt.c, zipcloak.c, zip.h, zip.c, zipup.c, zipsplit.c,
    zipfile.c (Ed)
---------------------- May 12th 2006 version 3.0f12 ----------------------
 1. Add UNICODE_SUPPORT ifdef around uname in zipup().  zip.c (SMS)
 2. Change size from uzoff_t to zoff_t in zipcopy().  zipfile.c (SMS, Ed)
 3. Fix a bug where filetime() returns -1 for device but not handled in
    byte counts.  zip.c (Ed)
 4. Add check for UnZip version and exit if not 6.00 or later if
    a Zip64 archive.  Define popen() and pclose() in Win32 to native
    _popen() and _pclose().  ziperr.h, zip.c, win32/osdep.h (Ed)
 5. Add -sb option to ring bell when pause to change disk.  Use new
    global split_bell.  global.c, zip.h, zip.c, fileio.c (Ed)
 6. Enable crc32u() and use for Unicode extra field.  fileio.c (Ed)
 7. Add -dv to display volume being written to.  zip.c, zip.h,
    globals.c (Ed)
 8. Update WhatsNew.  WhatsNew (Ed)
 9. Help updates.  zip.c (Ed)
10. Create option -X- (negated -X) to keep old extra fields and remove
    -XX which is now -X.  Make get_extra_field() global.  Add
    copy_nondup_extra_fields()to copy old extra fields not already
    in new extra fields.  zipup.c, zip.c, zipfile.c (Ed)
11. Use output name oname for -sf option to show files that would be
    worked on.  zip.c (Ed)
12. When updating or freshening old entries, read the old local header
    with readlocal() to get local flags and extra fields.  zip.c (Ed)
13. Add UNICODE_SUPPORT ifdefs around uname code.  zip.c (SMS, Ed)
14. If WIN32_OEM set then on WIN32 store OEM name in archive.  As read
    DOS or WIN32 archives convert assumed OEM paths to ANSI.  Remove old
    WIN32_OEM code.  Make oem_to_local_string() global for WIN32_OEM and
    local_to_oem_string() global for WIN32_OEM and UNICODE_SUPPORT.
    zip.h, zipfile.c, zipup.c, win32/win32.c, win32/win32zip.c (Ed)
15. Update error 8 to include wrong unzip.  ziperr.h (Ed)
16. Change checksum for Unicode extra field to standard crc32 using
    C version crc32u().  Add crctab.c.  win32/vc6/zipnote.dsp,
    win32/vc6/zipsplit.dsp, zipfile.c
17. Update readlocal() to handle multi-disk archives if not UTIL.
    zipfile.c (Ed)
18. Convert size to signed zoff_t in zipcopy().  Update note.
    zipfile.c (Ed)
19. Update Readme.  Readme (Ed)
20. Add crctab.o to zipsplit and zipnote.  unix/Makefile (Ed)
21. Proposed update to license.  License (Ed)
---------------------- May 20th 2006 version 3.0f13 ----------------------
 1. Reformat License file.  License (Cosmin)
 2. Change %d to %lu for disk number and add cast.  zip.c (Cosmin, Ed)
 3. Display Scanning files message after delay at start based on
    suggestion from Greg.  Currently the time is checked every 100
    entries processed.  After 100 entries the start time is saved.
    After 5 seconds or 100 entries after that, whichever takes
    longer, the Scanning files message is displayed and every 2 seconds
    or 100 entries, whichever takes longer, after that a dot is displayed.
    fileio.c, zip.c, globals.c, zip.h (Greg, Ed)
 4. Add Unicode mismatch flag and option -UN.  Default is now a Unicode
    mismatch is an error.  -UN=warn outputs warnings and continues,
    -UN=ignore disables warnings, and -UN=no ignores the Unicode extra
    fields.  globals.c, zip.h, zipfile.c (Ed)
 5. Add options for VMS.  vms/cmdline.c, vms/zip_cld.cld (SMS)
 6. Add casts to percent().  zipup.c (Ed)
 7. Minor changes to logfile formatting.  zip.c (Ed)
 8. Update help.  zip.c (Ed)
 9. Add -Z=compression-method option.  zip.c (Ed)
10. Add sd: to -sd status messages.  zip.c (Ed)
11. Instead of original argv[] use args[] for -sc show command line
    to show final command line.  zip.c (Ed)
12. Change argv[] to args[] for logfile.  zip.c (Ed)
13. Put results of -sf show files in log file if open.  zip.c (Ed)
14. Add Johnny's bzip2 patch but not tested.  win32/makefile, zip.c,
    zip.h, zipup.c (Johnny)
15. Minor tweeks to bzip2 to work with latest beta.  zip.c, zipup.c (Ed)
16. Add -sf- to list files that would be included only in log file
    and not on stdout as list can be long.  Only list totals on stdout.
    zip.c (Ed)
17. Create check_unzip_version().  Fix Unix check.  Zip still creates
    the temporary archive then does the check, and if it fails
    the archive is deleted, even if the check fails because of the wrong
    verion of UnZip.  On Unix only 'unzip' the system version of UnZip
    is checked, not './unzip' which would allow putting a local more
    up to date version of UnZip in the current directory for the check.
    There should be a way to override the system version of UnZip for
    the -T test.  zip.c (Ed)
---------------------- July 12th 2006 version 3.0f14 ----------------------
 1. Change crypt version from 2.10 to 2.91 to match Zip 2.32 and avoid
    confusion.  crypt.h (Cosmin)
 2. Add abbrevmatch() to handle option values that can be abbreviated
    like compression method.  util.c, zip.h, zip.c (Ed)
 3. Change USE_BZIP2 to BZIP2_SUPPORT as USE_BZIP2 implies it replaces
    deflation maybe.  zip.c, zip.h, zipup.c (Ed)
 4. Update man page.  man/zip.1, zip.txt (Ed)
 5. Add bzip2 to VMS.  vms/build_zip.com, vms/bzlib.h, vms/cmdline.c,
    vms/descrip.mms, vms/descrip_src.mms, vms/find_bzip2_lib.com,
    vms/install_vms.txt, vms/zip_cli.cld (SMS)
 6. Remove zipfile parameter from bzfilecompress().  Add unsigned
    cast for EOF in bzip2 code.  Add bzip2 version information.
    zipup.c, zip.c (SMS)
 7. Add bzip2 to Unix.  unix/configure (SMS)
 8. Add and update bzip2 descriptions.  INSTALL, README, WhatsNew,
    bzip2/install.txt (SMS, Ed)
 9. Add vc6bz2 projects for compiling bzip2 code into zip (not the
    best approach perhaps).  win32/vc6/readmevc.txt,
    win32/vc6bz2/readvcbz.txt, win32/vc6bz2/zip.dsp, win32/vc6bz2/zip.dsw,
    win32/vc6bz2/zipcloak.dsp, win32/vc6bz2/zipnote.dsp,
    win32/vc6bz2/zipsplit.dsp (Ed)
10. Add support for VC++ 2005 by disabling deprecation.  win32/osdep.h
    (Cosmin)
11. Update instructions for makefile.  unix/Makefile (Ed)
12. Update todo list.  todo30.txt (Ed)
13. Reduce #if 0 block to now allow extra data message.  zipfile.c (Ed)
14. Add note that readlocal() reads local headers.  zipfile.c (Ed)
15. Archive comment was not being read by new scanzipf_regew().  Added.
    zipfile.c (Ed)
16. Handle reading and writing OEM comments.  zipfile.c (Ed)
17. Update Zip64 data descriptor note.  zipfile.c (Ed)
18. Format filetypes() check.  zipup.c (Ed)
19. Update note to remember to force deflation for descriptors by
    release.  zipup.c (Ed)
20. In compression code using libraries, enable dots for noisy also.
    zipup.c (Ed)
21. Update extended help to add more of the basic options and
    compression method.  zip.c (Ed)
22. Add additional lines bz_opt_ver2 and bz_opt_ver3 to bzip2
    version to give credit to bzip2.  zip.c (Ed)
23. Add descriptions to version information for USE_EF_UT_TIME,
    NTSD_EAS, WILD_STOP_AT_DIR, WIN32_OEM, LARGE_FILE_SUPPORT,
    ZIP64_SUPPORT, and UNICODE_SUPPORT similar to how UnZip does.
    zip.c (Ed)
24. Add note that crypt is modified in Zip 3.  zip.c (Ed)
25. Use abbrevmatch() and update warnings for compression
    method selection.  zip.c (Ed)
26. Update config to handle either using IZ_BZIP2 to define
    the location of the bzip2 files or the bzip2 directory.
    unix/configure, zipup.c, zip.c (SMS, Ed)
---------------------- July 14th 2006 version 3.0f15 ----------------------
 1. Change USE_BZIP2 to BZIP2_SUPPORT in VMS.  vms/descrip_src.mms,
    vms/build_zip.com (SMS)
 2. Add SYS$DISK:.  vms/descrip.mms, vms/build_zip.com (SMS)
 3. Change vms/install.txt to [.vms]install.txt.  bzip2/install.txt (SMS)
 4. Change VMS files to lower case.  vms/mod_dep.com, vms/install_vms.txt,
    vms/zip.opt, vms/hlp_lib_next.com, vms/notes.txt, vms/unixlib_gcc.h,
    vms/unixio_gcc.h (SMS)
 5. Remove old VMS files.  vms/descrip-old.mms (removed),
    vms/link_zip.com (removed), vms/make_zip.com (removed),
    vms/makefile.vms (removed) (SMS)
---------------------- July 24th 2006 version 3.0f16 ----------------------
 1. Fix global dots so can set with dot size.  deflate.c, fileio.c (Ed)
 2. Update License top line to refer only to license.  License (Cosmin)
 3. Update License.  License (Ed)
 4. Implement zero length UTF-8 path length as flag standard path is UTF-8
    and should use that.  This allows Zip to use the standard path as
    UTF-8 when the local character set is UTF-8.  zipfile.c (Ed)
 5. Update WhatsNew.  WhatsNew (Ed)
 6. Change case of bzip2/install.txt.  INSTALL (Ed)
 7. Change MANUAL.txt to ZIP.txt and update ftp site.  README (Ed)
 8. Update announcement.  zip30f.ann (Ed)
 9. Now also check if OS has bzip2 library and can use that.
    unix/configure, zip.c (Mark Adler, Ed)
10. Add fix from akt@m5.dion.ne.jp in Japan to recurse on doublebyte
    characters without processing in recmatch().  This should not be needed
    unless the rest of the code in there is broke for Japanese character
    sets in some way.  Need to test.  util.c (Ed)
11. Add note for bzip2.  zip.c (Ed)
12. Do not do seek wrap test if ftell() returns -1 as from a pipe.  Add
    output of last ftell() and current ftell() for zipfile too big seek
    error.  zipup.c (Ed)
13. Add version to the options table.  Remove the check to display version
    before the command line is processed.  Add to option -v a check to
    display the version if that is the only argument.  Can still enable
    verbose with piping by using zip -v - - format.  zip.c (Ed)
14. Add abbrevmatch() for -UN option.  zip.c (Ed)
---------------------- August 7th 2006 version 3.0f17 ----------------------
 1. Change license modifications to retain intent of copyright holders, as
    any major change in license conditions would require contacting all
    copyright holders.  LICENSE (Greg, Ed)
 2. Move debugging statement after zipstdout() where mesg is set to stderr.
    Add mesg and fflush() to sd messages where needed so that messages go
    to stderr when piping.  zip.c (Ed)
 3. Update encryption comment.  zipup.c (Ed)
 4. Do not use data descriptors for directories.  zipup.c (Mark, Ed)
 5. Update Q & A to match license.  README (Ed)
 6. Update WhatsNew.  WHATSNEW (Ed)
 7. Add ifndef around version_info() for dll.  zip.c (Ed)
 8. Add -TT (--unzip-path) to allow setting the unzip command to use with
    -T to test the archive.  zip.c (Ed)
 9. Add -DF (--difference-archive) which requires --out and turns off
    copying unchanged entries to the new archive creating an archive with
    just the changes and additions since the original archive was created.
    zip.c, globals.c, zip.h (Ed)
10. Update help.  zip.c (Ed)
---------------------- September 7th 2006 version 3.0f18 ----------------------
 1. Split -t and -tt options and remove limitation that only one can be
    used to allow setting a date range.  zip.c, WhatsNew (Ed)
 2. Minor changes in comments.  zipfile.c (Ed)
 3. Add entries for format of Unicode Path and Unicode Comment extra fields.
    proginfo/extrafld.txt (Ed)
 4. Change note at top of infozip.who, but needs to be updated with all new
    contributors.  proginfo/infozip.who (Ed)
 5. Note Zip 3 and UnZip 6 now support Zip64.  proginfo/ziplimit.txt (Ed)
 6. Add note on Unicode.  README (Ed)
 7. Update WHATSNEW.  WHATSNEW (Ed)
 8. Update help.  zip.c (Ed)
 9. Add {} support to -TT option, allowing insertion of temp archive path
    into the command string to -TT similar to Unix find does.  zip.c (Ed)
10. Start changes for -F fix option.  Add checks when reading input archive
    and skip bad central directory entries and bad local entries.  Currently
    -F requires the central directory to be intact (except for bad CD entries
    that will be skipped) and local entries and data to be where the
    central directory say they are.  This allows all recovered entries to
    be complete with all central directory information.  Calculate CRC of
    input entry and compare to CRC from central directory.  Allow skipping
    split disks the user may not have.  Store state of output archive
    before each local entry and data are read, allowing seeking back and
    restoring state to skip bad entries.  fileio.c, global.c, zipfile.c,
    zip.h (Ed)
11. Started changes for fixfix.  fileio.c (Ed)
12. Update help on -t and -tt.  zip.c (Ed)
13. Add note on Unicode support, but may change if add handling of names
    with characters not supported in current character set.  README (Ed)
14. Combined ToDo30.txt and ToDo but more to be done.  TODO (Ed)
15. Update ToDo list.  ToDo30.txt (Ed)
16. Add -F and -FF to help.  zip.c (Ed)
17. Run fix mode in copy mode, as it is copying from one archive to
    another, and use those checks.  zip.c (Ed)
18. Add Try -F and Try -FF warnings in places.  zipfile.c (Ed)
19. Allow reading version 4.6 (bzip2) archives.  zipfile.c (Ed)
20. Add Unicode Path and Unicode Comment extra field descriptions.
    proginfo/extrafld.txt (Ed)
21. First attempt at updating the Who file.  proginfo/infozip.who (Ed)
22. Add note to top of ziplimit.txt.  proginfo/ziplimit.txt (Ed)
23. Add possible fix for paths returned by the Win32 directory scan with
    '?' in the name.  These are characters in the Unicode name stored on
    disk but not represented in the multi-byte character set used by zip
    for the scan.  In this case, return the short name in 8.3 format so
    directory scan can continue.  Could put the Unicode name in the Unicode
    extra field, but not done.  Add warning when long name is replaced
    by short name.  Not fully tested.  win32/win32zip.c, zip.h, zip.c,
    fileio.c (Ed)
24. If archive name and -sf are the only parameters, list archive contents.
    zip.c (Ed)
---------------------- September 8th 2006 version 3.0f19 ----------------------
 1. Fix error message.  zipfile.c (SMS, Ed)
 2. Put crc32() in ifndef UTIL as only needed for fix.  fileio.c (SMS, Ed)
---------------------- November 3rd 2006 version 3.0f20 -----------------------
 1. Fix comment.  vms/vmszip.c (SMS)
 2. Include oem_to_local_string() if UNICODE_SUPPORT.  win32/win32.c,
    zip.h (Ed)
 3. Modify procname_win32() to flag a path not supported by the local
    character set so can get Unicode for it.  Check Unicode names.
    win32/win32zip.c (Ed)
 4. Add matching of escaped Unicode names to proc_archive_name() that
    reads entries from an archive.  Add sorted zlist zusort.
    globals.c, fileio.c, zip.h, zipfile.c (Ed)
 5. Add support for non-local character set names and paths for WIN32,
    getting and storing the UTF-8 path when needed.  Use 8.3 name
    when normal name has characters not supported in current local
    character set.  Note when short name used.  zip.c, fileio.c (Ed)
 6. Add support for fix = 2 which reads local headers first to
    bfcopy().  fileio.c, zip.h (Ed)
 7. Allow selection of .zip split in ask_for_split_read_path() when
    reading a split archive that has no end records giving the total
    split count.  fileio.c (Ed)
 8. Add zoff_t casts to dot counts.  fileio.c (Ed)
 9. Comment changes for Unicode.  fileio.c (Ed)
10. Call wide_to_local_string() separately in utf8_to_local_string()
    to free up temp value.  fileio.c (Ed)
11. Support new AppNote bit 11 for forcing UTF-8, but needs finishing.
    globals.c (Ed)
12. Add to zlist struct zuname for the escaped version of the UTF-8
    name in uname and add ouname for the display version of zuname.
    zip.c, zip.h, zipfile.c (Ed)
13. Add zipmessage_nl() that can output to the screen and to the log
    file like zipmessage(), but can write lines without a newline.
    zip.c, zip.h, zipcloak.c, zipnote.c, zipsplit.c (Ed)
14. Update help for -FF and Unicode.  zip.c (Ed)
15. Change > to >= for byte message check to avoid -0 (negative zero).
    zip.c (Ed)
16. Add -su show unicode option which adds escaped unicode paths to
    -sf.  Also uses show_files = 3.  zip.c (Ed)
17. Update comments for -UN and -X.  zip.c (Ed)
18. Add support for new AppNote bit 11 that says standard path and
    comment have UTF-8 when -UN=f is used.  zip.c (Ed)
19. Fix zipfile name message by replacing value with zipfile.
    zip.c (Ed)
20. Add new code for -FF, which processes archives by trying to read
    the EOCDR to get split count, then starting with the local
    entries.  This option does not use the standard code but does
    everything itself.  Add scanzipf_fixnew(), which tries to read
    the EOCDR, then the local entries, then the central directory.
    zip.c, zipfile.c (Ed)
21. Update note for ZIP64_CENTRAL_DIR_TAIL_SIZE.  zipfile.c (Ed)
22. Put read_Unicode_Path_entry() and read_Unicode_Path_local_entry()
    into UNICODE_SUPPORT ifdef.  zipfile.c (Ed)
23. Add zuqcmp() and zubcmp() to support Unicode sorted list of
    paths.  zipfile.c (Ed)
24. Update zsearch() to also search unicode paths.  zipfile.c (Ed)
25. Split out iname in read_Unicode_Path_entry() for debugging.
    Should put it back.  Update Unicode mismatch warning.
    zipfile.c (Ed)
26. Update Unicode in readlocal().  zipfile.c (Ed)
27. Add more Unicode support to scanzipf_regnew().  zipfile.c (Ed)
28. Add support for fix = 2 to zipcopy().  Add checks and warnings,
    but allow scan to continue when can.  Use local data to fill
    in central directory fields in case no central directory entry
    for local entry.  zipfile.c (Ed)
29. Add get_win32_utf8path() to get UTF-8 from Windows if can.
    zipfile.c (Ed)
---------------------- November 7th 2006 version 3.0f21 -----------------------
 1. Add crude data descriptor support to -FF in bfcopy() that should be
    updated by release.  fileio.c (Ed)
 2. Change %d to %s and use zip_fzofft() to format zoff_t byte count.
    zipfile.c (SMS, Ed)
 3. Call local_to_oem_string() for only WIN32 in zipcopy().  zipfile.c
    (SMS, Ed)
---------------------- November 29th 2006 version 3.0f22 -----------------------
 1. Change ' to " in extended help.  zip.c (Ed)
 2. Change -dv disk number display to indisk>outdisk.  zip.c (Ed)
 3. Finish -FF fix option.  Move detailed output to require -v.  zip.c (Ed)
 4. Add note to help to use -v with -FF to see details.  zip.c (Ed)
 5. Add -sU option to view only Unicode names when exist.  zip.c (Ed)
 6. Change default dot size in verbose from every buffer to 10 MB.  zip.c (Ed)
 7. Exit if --out and in path same as out path.  zip.c (Ed)
 8. Remove verbose information when fixing archive.  zip.c (Ed)
 9. Initialize in disk to 0, but still problem with disk number of first entry
    for each disk lagging by 1.  zip.c (Ed)
10. Consistently use ZE error codes for exit from ask_for_split_read_path.
    zipfile.c, zip.c (Ed)
11. Seek back when fix finds bad entries.  Also skip last entry of split
    if next split is missing.  Should check if entry completed.  zip.c (Ed)
12. Add messages to -sd for writing the central directory, replacing the old
    zip file, and setting file type.  zip.c (Ed)
13. Don't set file type on stdout.  zip.c (Ed)
14. Increase errbuf from FNMAX + 81 to FNMAX + 4081.  zip.h (Ed)
15. Add skip_this_disk, des_good, des_crc, des_csize, and des_usize globals
    for -FF and reading data descriptors.  Change note on display_volume.
    Add global skip_current_disk.  zip.h, globals.c (Ed)
16. BFWRITE_HEADER define now also does data descriptor.  zip.h (Ed)
17. Skip zipoddities() if fix.  Maybe can later add back.  zipfile.c (Ed)
18. Update fix messages.  zipfile.c (Ed)
19. Allow user to end archive early using ZE_EOF.  zipfile.c, fileio.c (Ed)
20. Only show split numbers and offsets for -FF if verbose.  zipfile.c (Ed)
21. Handle spanning signature at top of split archive.  zipfile.c (Ed)
22. Only close in_file if open.  zipfile.c (Ed)
23. Add note if no .zip and only splits suggest use -FF.  zipfile.c (Ed)
24. In putlocal() and putcentral() only convert to OEM if z->vem == 20.
    zipfile.c (Ed)
25. Do not OEM convert archive comment as PKWare says this should
    be ASCII.  zipfile.c (Ed)
26. Fix swap of siz and len and LOCSIZ and LOCLEN.  zipfile.c (Ed)
27. Call read_Unicode_Path_local_entry() before OEM conversion so Unicode
    checksum checks iname before conversion.  zipfile.c (Ed)
28. Only check if local and central crc match if not stream entry.
    zipfile.c (Ed)
29. Keep data descriptors if fix == 2, but need to look at this.
    zipfile.c (Ed)
30. Fix bug adding up header bytes in n by adding 4 for signature.
    zipfile.c (Ed)
31. If fix == 2 use local crc for central, otherwise use central crc
    for local.  zipfile.c (Ed)
32. In zipcopy(), check data descriptor and skip if not correct one.
    zipfile.c (Ed)
33. Add SH, LG, and LLG macros from zipfile.c to allow reading the data in
    the data descriptor.  fileio.c (Ed)
34. In bfcopy(), read and check the data descriptor if n == -2.  If
    run out of bytes before find descriptor, return error.  fileio.c (Ed)
35. In ask_for_split_read_path(), increase buf to SPLIT_MAX_PATH + 100,
    fix bug by adding "- 1", set split_dir = "" if current directory,
    and update prompts to add skip and end choices.  Add skip and end
    choices.  fileio.c (Ed)
36. Increase buffer for fgets to SPLIT_MAXPATH.  fileio.c (Ed)
37. Update WhatsNew.  WhatsNew (Ed)
---------------------- December 10th 2006 version 3.0f23 -----------------------
 1. Handle additional ODS5 issues by upper casing many symbols and file names.
    vms/build_zip.com, vms/collect_deps.com, vms/descrip.mms,
    vms/descrip_mkdeps.mms, vms/descrip_src.mms, vms/find_bzip2_lib.com (SMS)
 2. Update VMS Find Help Library code.  vms/hlp_lib_next.com (SMS)
 3. Instead of tempname use temp_name as parameter to avoid function
    tempname().  zipsplit.c, zipnote.c, zipcloak.c, zip.c (Ed)
 4. If fixing archive with -FF and no EOCDR to get disk count, see if top of
    archive has spanning signature or local header and guess if it is
    single-disk archive, then ask user to confirm.  zipfile.c (Ed)
 5. For Unix where NO_MKSTEMP is not defined, replace mktemp() with mkstemp()
    that avoids a race condition.  zip.c, zipcloak.c, zipnote.c, fileio.c (Ed)
 6. Eliminate mkstemp() warning by using mkstemp() instead of mktemp() for
    Unix.  Only for UNIX and if NO_MKSTEMP is not defined.  Many OS do not
    have mkstemp().  zipcloak.c, zipnote.c, zip.c, fileio.c (Ed)
 7. If UNICODE_SUPPORT and UNIX then try to switch to UTF-8 locale to allow
    displaying of Unicode, otherwise just get escapes.  This results in some
    characters displaying as whitespace if needed fonts, such as East Asian,
    are not installed.  zip.c (Ed)
 8. If new global unicode_escape_all is set, then escape all non-ASCII
    characters when converting Unicode file path.  This allows viewing paths
    as escapes on Unix that would otherwise be white space.  If not set, any
    characters that map to the current locale are returned as is.  Can only
    display if either supported as base by the OS or fonts installed.  Set
    using -UN=escape option.  zip.c, fileio.c, zip.h, globals.c (Ed)
 9. Update extended help for Unicode.  zip.c (Ed)
10. All variables used by Win32 in global.c should now be initialized at
    start so dll is initialized each call.  zip.c (Ed)
---------------------- January 1st 2007 version 3.0f24 -----------------------
 1. Fix a problem when building with (old, obsolete) IM attribute encoding
    combined with bzip2 support.  vms/descrip_src.mms (SMS)
 2. Update WHATSNEW.  WhatsNew (Ed)
 3. Update README.  ReadMe (Ed)
 4. Remove in_crc code.  Too involved to implement but may look at later.
    fileio.c, globals.c, zip.c (Ed)
 5. Use 0x50 and 0x4b for 'P' and 'K' in signatures to handle EBCDIC case.
    zipfile.c, fileio.c (Ed)
 6. Implement new -FS file sync option that deletes entries missing on the
    file system from an archive being updated.  globals.c, zip.c (?, Ed)
 7. Update help.  zip.h, zip.c (Ed)
 8. Include scanning files dots when update small but new file scan long.
    zip.c (Ed)
 9. Ask if single-file archive when using -FF and can't tell.  zipfile.c (Ed)
10. Display message when entry would be truncated.  zipfile.c (Ed)
11. Check for VMS_IM_EXTRA.  Update bzip2 support for VMS.  Change
    destination directory if large-file enabled.  vms/build_zip.com,
    vms/descrip_src.mms (SMS)
12. Change parameters for VMS bzip2 search.  vms/find_bzip2_lib.com (SMS)
---------------------- January 12th 2007 version 3.0f25 -----------------------
 1. Incorporate faster crc32.c including the Rodney Brown changes (originally
    implemented in the zlib project) from UnZip, which includes the
    IZ_CRC_BE_OPTIMIZ and IZ_CRC_LE_OPTIMIZ optimizations when those symbols
    are defined.  These modifications include:
     - enlarge unrolling of loops to do 16 bytes per turn
     - use offsets to access each item
     - add support for "unfolded tables" optimization variant
    crc32.c  (Christian)
 2. As the crc32.c module now includes crc table generation, remove crctab.c.
    crctab.c (remove) (Christian)
 3. Update crc i386 assembler code from UnZip (details see above).
    win32/crc_lcc.asm, win32/crc_i386.asm, win32/crc_i386.c, crc_i386.S
    (Christian)
 4. Guard against redefinition of symbols @CodeSize and @DataSize in memory
    model setup section to work around Open Watcom (version 1.6) wasm
    assembler problem.  msdos/crc_i86.asm (Christian)
 5. Change type of keys[] array for new crc, add IZ_CRC_BE_OPTIMIZ, and
    use new crypt crc table.  Use header buffer instead of buf for header.
    crypt.c, crypt.h (Christian)
 6. Update version and remove crc table.  crypt.h (Christian)
 7. Add crc32.h, change sprintf() format for disk number from d to lu as
    can go over 16-bit, remove crc32u().  fileio.c (Christian)
 8. Update to use new crc.  msdos/makefile.bor, msdos/makefile.dj1,
    msdos/makefile.dj2, msdos/makefile.emx, msdos/makefile.msc,
    msdos/makefile.tc, msdos/makefile.wat, unix/Makefile,
    vms/build_zip.com, vms/descrip_deps.mms, vms/descrip_src.mms,
    vms/osdep.h, win32/makefile.bor, win32/makefile.dj, win32/makefile.emx,
    win32/makefile.gcc, win32/makefile.ibm, win32/makefile.lcc,
    win32/makefile.w10, win32/makefile.w32, win32/makefile.wat,
    win32/makenoas.w32, win32/vc6/zip.dsp,
    win32/vc6/zipcloak.dsp, win32/vc6/zipnote.dsp, win32/vc6/zipsplit.dsp,
    win32/vc6bz2/zip.dsp, win32/vc6bz2/zipcloak.dsp, win32/vc6bz2/zipnote.dsp,
    win32/vc6bz2/zipsplit.dsp, windll/visualc/dll/zip32.dsp,
    windll/visualc/dll/zip32.mak, windll/visualc/lib/zip32.dsp,
    win32/visualc/lib/zip32.mak (Christian)
 9. Include crc32.h.  Make variable uname local in proc_archive_name().
    Remove unused num and new_base_path.  Change %02d to %02l2 for
    disk number in print format.  Remove crc32u() as now use crc32().
    Add parentheses around conditions in loops.  Use 0 instead of NULL
    for zwchar.  fileio.c (Christian)
10. Add z_uint4 defines from crypt.c to tailor.h.  Move uch, ush, and ulg
    typedefs before tailor.h include which needs them.  tailor.h, zip.h (SMS)
11. Include crc32.h.  change add_name() to return not int but long
    since number of command line arguments can exceed 16 bits.  Cast
    variable option to (int) for subtraction.  Change 0x400 to 0x400L.
    Add braces to show_files print block.  zip.c (Christian)
12. Add warning if use -F or -FF without --out.  Change defined(NO_MKSTEMP)
    to !defined(NO_MKSTEMP).  zip.c (Ed)
13. Define EC64LOC and EC64REC for size of Zip64 EOCD Locator and Zip64
    EOCD Record.  Add extern for crc_32_tab.  Move crc32() to crc32.h.
    zip.h (Christian)
14. Add crc.h.  zipcloak.c (Christian)
15. Include crc32.h.  Comment out scanzipf_reg() and scanzipf_fix() as
    no longer used, which are left in for now for comparison.  Cast
    blocksize to extent for malloc().  Instead of 0x10000 malloc 0xFFFF for
    extra field block so fits in 16 bits.  Instead of crc32u() use crc32().
    Only do lflg != flg check for fix == 2.  Add comments to various #endif.
    Indent comment.  Comment out copy_sig() which is not used.  Reduce size
    of SCAN_BUFSIZE to EC64REC for MEMORY16.  Use ENDHEAD for EOCDR size.
    Change %u to %lu in print formats for disk count.  Use EC64LOC for size
    of Zip64 EOCD Locator.  Use EC64REC for size of Zip64 EOCD Record.
    Add streaming and was_zip64 to ZIP64_SUPPORT.  Remove lflg != flg check
    in zipcopy().  zipfile.c (Christian)
16. Add note that z-flg & ~0xf check will fail if new bit 12 for UTF-8 paths
    and comments is set.  Update -FF warning.  zipfile.c (Ed)
17. Include crc32.h.  Modify tempzn update.  Fix comment.  Set
    z->lflg = z->flg after deflate as deflate may have set bits in z->flg
    [Ed, Christian].  Include BZIP2_SUPPORT block in !UTIL block.  zipup.c
    (Christian)
18. Changes to use crc32.c.  acorn/gmakefile, acorn/makefile, amiga/lmkfile,
    amiga/makefile.azt, amiga/smakefile, aosvs/make.cli, atari/makefile,
    atheos/makefile, beos/makefile, cmsmvs/cczip.exec, cmsmvs/mvs.mki,
    cmsmvs/zip.makefile, cmsmvs/zipmvsc.job, cmsmvs/zipvmc.exec,
    human68k/makefile, human68k/makefile.gcc, novell/makefile, novell/zip.lnk,
    os2/makefile.os2, qdos/makefile.qdos, qdos/makefile.qlzip, tandem/history,
    tandem/macros, tandem/tandem.h, theos/makefile, tops20/make.mic,
    unix/configure, unix/makefile, win32/makefile.a64 (Christian)
19. Add note to use BZ_NO_STDIO.  bzip2/install.txt (Ed)
20. Remove crctab.  cmsmvs/zipvmc.exec (Ed)
21. Update comment.  macos/source/pathname.c (Christian)
22. Start of manual update.  Zip.1 (Ed)
23. Changes to use crc32.c.  vms/descrip.mms, vms/descrip_deps.mms,
    vms/descrip_mkdeps.mms, vms/descrip_src.mms, vms/vms.c (SMS)
---------------------- January 17th 2007 version 3.0f26 -----------------------
 1. Add note for UnZip.  crypt.c (Christian)
 2. Change current_disk and disk_number from int to ulg.  Change num from int
    to unsigned int.  [Even though a 16-bit system likely won't see more than
    64k disks, it probably should be ulg - Ed]  Remove unused mbsize.  Change
    match from long to int as the number of possible options should always fit
    in that.  fileio.c, globals.c (Christian)
 3. Use -Gt to force some data into separate data segments so all data fits.
    msdos/makefile.msc (Christian)
 4. Move some copyright constants to far to save near space.
    revision.h (Christian)
 5. Change u for character from int to unsigned int.  util.c (Christian)
 6. Move include of crc32.h from vms/vms.c to vms/vms_pk.c.  vms/vms.c,
    vms/vms_pk.c (Christian)
 7. Update crci386_.o.  win32/makefile.gcc (Christian)
 8. Use NOASM=1 to disable assembler and clear variables when do not.
    win32/makefile.w32 (Christian)
 9. Remove unused totalslashes and returnslashes from get_win32_utf8path().
    win32/win32zip.c (Christian)
10. Remove local versions of tempzip and tempzf.
    zip.c (Christian)
11. Make options[] far.  Change cd_start_disk from int to ulg.  Cast -1 to
    (ulg) for cd_start_disk.  Put here = zftello() in DEBUG defines.
    zip.h, zip.c (Christian)
12. Change length of zipfile comment parameter from ush to extent.  Change
    disk numbers from int to ulg in close_split(), ask_for_split_read_path(),
    ask_for_split_write_path(), get_in_split_path(), find_in_split_path(),
    get_out_split_path().  Add Far to longopt and name strings in
    option_struct.  zip.h (Christian)
13. Add far to options[].  zipcloak.c (Christian, Ed)
14. Define write_string_to_mem() only for UNICODE_SUPPORT.  Change ulg to
    extent for append to mem memory offset and blocksize parameters.  Make
    at_signature() local.  Cast usValue to char.  Remove unused oname in
    read_Unicode_Path_local_entry().  Remove local definitions of zip64_entry
    as Zip is always processing one entry at a time and this is a global
    flag for the current entry.  Make find_next_signature() and
    find_signature() local.  Add ZCONST to signature parameter.  Make
    is_signature() and at_signature() local.  Change m, result of fread(),
    from int to extent.  Reduce SCAN_BUFSIZE from 0x40000 to the size of the
    largest header being read.  As find_next_signature() is used to scan for
    the next signature and that reads a byte at a time, the scan buf is only
    used to read in the found headers.  Since we skip the extra parts of the
    Zip64 EOCDR, all headers are a fixed size.  Remove unused variables from
    scanzipf_fixnew().  Use ENDCOM for end comment offset.  Instead of 64 KB
    seek back 128 KB to find EOCDR.  Use ENDOFF and ENDTOT for offsets in
    EOCDR.  Remove tabs.  Merge versions of putend().  Update Amiga SFX.
    Remove unused offset in zipcopy().  Make size local in zipcopy().
    zipfile.c (Christian)
15. Update putend() comment.  zipfile.c (Ed)
16. Add far to options[].  zipnote.c, zipsplit.c (Christian)
17. Add NO_ASM versions of Win32 zipnote, zipsplit, and zipcloak projects.
    Add crc32.h and crc32.c to zipsplit and zipnote projects.
    win32/vc6/zipsplit.dsp, win32/vc6/zipnote.dsp, win32/vc6/zipcloak.dsp (Ed)
18. Add NO_ASM versions of Win32 bzip2 zipnote, zipsplit, and Zipcloak
    projects.  Add crc32.h and crc32.c.  win32/vc6bz2/zipsplit.dsp,
    win32/vc6bz2/zipnote.dsp, win32/vc6bz2/zipcloak.dsp (Ed)
19. Update Win32 dll and lib projects and make files.
    windll/visualc/lib/zip32.dsp, windll/visualc/lib/zip32.mak,
    windll/visualc/dll/zip32.dsp, windll/visualc/dll/zip32.mak (Ed)
20. Remove space in front of #ifdef and other conditionals that slipped in.
    zipfile.c, zipup.c (SMS)
21. Updates for bzip2.  vms/bzlib.h, vms/install_vms.txt (SMS)
22. Updates.  vms/notes.txt (SMS)
23. Update copyrights.  crc32.c, deflate.c, globals.c, revision.h, ziperr.h,
    trees.c, win32/nt.c, win32/win32.c, win32/win32i64.c, win32/win32zip.h,
    win32/zipup.h (Ed)
24. Update WhatsNew.  WHATSNEW (Ed)
---------------------- February 4th 2007 version 3.0f27 -----------------------
 1. Fix array sizes and loop lengths in wide_to_escape_string().  fileio.c
    (Johnny, Ed)
 2. Fix escape_string_to_wide() to handle hex strings, then comment out as
    not used.  zip.h, fileio.c (Ed)
 3. Use ZIPERRORS() macro instead of ziperrors[] array.  zip.c, zipcloak.c,
    zipnote.c, zipsplit.c (SMS)
 4. Add VMS-compatible "severity" values, add new ZE_SEV_PERR define to
    set when perror() needs to be called, add ZIPERRORS() macro, change
    PERR() to use ZE_SEV_PERR, change ziperrors[] to new structure array
    to hold error strings, add new VMS facility names and severity codes
    assigned by HP to ziperrors[] array, and add new official
    VMS_MSG_IDENT.  ziperr.h (SMS)
 5. Change ZE_SEV defines to ZE_S to save space and reformat ziperrors[].
    ziperr.h (Ed)
 6. Update install.txt to include generic Unix case.  bzip2/install.txt (Ed)
 7. Add creation of message file and add NOMSG message.  vms/build_zip.com,
    vms/descrip.mms, vms/install_vms.txt (SMS)
 8. Update notes.txt to add changes to program exit status values and changes
    to messages.  vms/notes.txt (SMS)
 9. Include crc32.h, include ssdef.h, instead of FAB_OR_NAM use FAB_OR_NAML,
    add status code summary note detailing old versus new error codes, and if
    CTL_FAC_IZ_ZIP is 0x7FFF and OLD_STATUS is defined use old VMS error codes.
    vms/vms.c (SMS)
10. Change FAB_OR_NAM to FAB_OR_NAML and remove NAME_DNA, NAME_DNS, NAME_FNA,
    and NAME_FNS.  vms/vms.h (SMS)
11. Change FAB_OR_NAM to FAB_OR_NAML.  vms/vms_im.c, vms/vms_pk.c,
    vms/vmszip.c (SMS)
12. Fix compile warning on VC 2005.  win32/makefile.w32 (Johnny)
13. Update readmevb.txt and readvb64.txt.  windll/vb/readmevb.txt,
    windll/vbz64/readvb64.txt (Ed)
14. Change tch from int to ulg in utf8_from_ucs4_char().  Move comments to keep
    line lengths to 80 characters.  fileio.c (Christian)
15. Update comment for total_cd_entries.  global.c, zip.c, zip.h (Christian)
16. Comment out unused Adler-16 code.  util.c, zip.h (Christian)
17. Add InterlockedExchangePointer() macro if not defined.  Update Initialize()
    to use macro.  nt.c (Christian)
18. Move zip64 eocd disk and offset variables next to input archive variables.
    zip.c (Ed)
19. Remove zipbegset from scanzipf_fixnew() as offsets are ignored when this
    is fixing archives.  Add comment to cd_total_entries.  Remove local
    cd_start_disk and cd_start_offset as these are already global.  Use
    ZIP_UWORD16_MAX when disk number exceeds this to flag use of Zip64.
    zipfile.c (Christian)
20. Some comment changes.  zipfile.c (Ed)
21. Fix indentation in places.  zipsplit.c (Christian)
22. Remove unused variable zfile.  zipup.c (Christian)
23. Update manual.  zip.1, zip.txt, zipsplit.txt (Ed)
---------------------- February 22nd 2007 version 3.0f28 ----------------------
 1. Update notes.  vms/notes.txt (SMS)
 2. Add stream_lf.fdl to specify carriage control.  vms/stream_lf.fdl (SMS)
 3. Update License to also refer to www.info-zip.org and to hopefully provide
    an example of misrepresentative use.  LICENSE (Ed)
 4. Update Readme.  README (Ed)
 5. Update WhatsNew.  WHATSNEW (Ed)
 6. Change output archive cd_start_disk and cd_start_offset to input archive
    local in_cd_start_disk and in_cd_start_offset in scanzipf_fixnew() and
    scanzipf_regnew() to avoid mixing in and out.  zipfile.c (Ed)
 7. Update copyright.  Remove crc32.h include.  vms/vms.c (Christian)
 8. Changes for new crc32.  Remove CRC32.  Add CRCA_0 and CRCAUO.  Add
    compiling of crc_i386.S.  win32/makefile.emx. (Christian)
 9. Add handlers for better RSXNT and Windows OEM conversions.  Add detailed
    comments on conversions.  win32/osdef.h (Christian)
10. Define CP_UTF8.  win32/rsxntwin.h (Christian)
11. Define WIN32_LEAN_AND_MEAN to reduce size of Windows includes.
    win32/win32.c, win32/win32zip.c, zip.c (Christian)
12. Use only standard FAT attributes if OEM.  win32/win32zip.c (Christian)
13. Add use of INTERN_TO_OEM() and related OEM changes.  Add console comment.
    zip.c (Christian)
14. Change severity from char to int.  Update macros.  ziperror.h. (Christian)
15. Update Visual Basic project to clarify some of the code.
    windll/vbz64/vbzip.vbp, windll/vbz64/vbzipbas.bas,
    windll/vbz64/vbzipfrm.frm (Ed)
16. Update copyright.  api.c (Ed)
17. Update format for duplicate entry warning.  fileio.c (Ed)
18. Instead of ifdef __RSXNT__ use ifdef WIN32.  Define WIN32_LEAN_AND_MEAN.
    Use WIN32_CRT_OEM.  Change OEM check from vem == 20 to vem & 0xff00 == 0
    and instead of local_to_oem_string() use _INTERN_OEM().  Remove unused
    first_CD in scanzipf_fixnew().  Instead of oem_to_local_string() use
    Ext_ASCII_TO_Native().  Instead of local_to_oem_string() use
    INTERN_TO_OEM().  zipfile.c (Christian)
19. Replace escape from zipsplit man page with '.  zipsplit.txt (Christian)
20. Instead of using 20 every time, account for dosify when setting vem.
    Update FAT comment.  zipup.c (Christian)
------------------------ March 3rd 2007 version 3.0f29 -------------------------
 1. Remove crctab.c.  vms/build_zip.com (SMS)
 2. Add LFLAGS_ARCH.  vms/descrip.mms (SMS)
 3. Remove redundant includes descrip.h, rms.h, and atrdef.h.
    vms/vmsmunch.c (SMS)
 4. Remove includes descrip.h and rms.h.  vms/vmszip.c (SMS)
 5. Only define NO_UNISTD_H if __VAX defined or __CRTL_VER is
    less than 70301000, allowing support of the new symbolic
    links in VMS.  Also use unlink instead of delete if version
    above 70000000.  vms/osdep.h (SMS)
 6. Formatting changes.  vms/notes.txt, vms/install_vms.txt (Christian)
 7. Remove spaces before tabs.  win32/makefile.emx (Christian)
 8. Formatting change.  win32/osdep.h (Christian)
 9. If -y on VMS open the link not the target file.  vms/vms_im.c (SMS)
10. If -y on VMS search for the link, not the target file.  vms/vms_pk.c (SMS)
11. Change default for Unicode path mismatch from error to warning, so
    processing will continue.  zip.c, globals.c (Ed)
------------------------ March 12th 2007 version 3.0f30 ------------------------
 1. Add bzip2 support for the reduced no stdio bzip2 library for VMS and Unix.
    Use libbz2_ns_.olb for VMS bzip2 library which is compiled from the VMS
    version of bzip2 with the BZ_NO_STDIO flag set.  This flag removes most
    standard bzip2 stdio support and enables using a callback routine for
    errors.  zbz2err.c, unix/Makefile, vms/build_zip.com, vms/descrip.mms,
    vms/descrip_deps.mms, vms/descrip_src.mms (SMS)
 2. Add zbz2err.c to Win32 vc6bz2 project for support of BZ_NO_STDIO for bzip2.
    Modify zbz2err.c to handle different ports.  zbz2err.c (Ed)
 3. Update license.  zip.h (Ed)
 4. Update copyright.  zip.c, zipfile.c, zipup.c, zbz2err.c, revision.h (Ed)
 5. Fix bug where directories got set to ver 4.6 in local headers instead of
    ver 1.0 when using bzip2.  zipfile.c, zipup.c (Ed)
 6. Minor updates to INSTALL.  INSTALL (Ed)
 7. Minor updates to README.  README (Ed)
 8. Add BZ_NO_STDIO to vc6bz2 projects.  Error routine seems to work.
    win32/vc6bz2 (Ed)
 9. Set bit FAB$M_BIO (.fab$v_bio) in the FAB when using sys$open() on a
    symlink.  vms/vms_im.c (SMS)
10. Change sys$disk to SYS$DISK.  vms/build_zip.com (SMS)
11. Update extended help.  zip.c (Ed)
12. Update bzip2 install.  bzip2/install.txt (Ed)
------------------------ March 19th 2007 version 3.0f31 ------------------------
 1. Define bz2_olb as LIBBZ2_NS.OLB.  Change LIBBZ2.OLB to bz2_olb.  Use
    ZZBZ2ERR.C error callback for bzip2.  vms/build_zip.com (SMS)
 2. Change NO_SYMLINK to NO_SYMLINKS to be consistent with UnZip.  tailor.h,
    acorn/osdep.h, macos/osdep.h, tops20/osdep.h, vms/osdep.h (SMS)
 3. Minor note changes.  Add section on Symbolic Links.  vms/notes.txt (SMS)
 4. Update copyright.  globals.c (Ed)
 5. Update License with official copy.  LICENSE (Greg, Ed)
 6. Update Readme.  README (Ed)
 7. Add support for NO_BZIP2_SUPPORT.  tailor.h (Ed)
 8. Add common compiler flags to Install.  INSTALL (Ed)
 9. Remove SPLIT_FILE define.  zip.c (Ed)
10. Minor updates to extended help.  zip.c (Ed)
11. Modify Makefile to also build bzip2 library if found.  Split $MAKE
    ("make -f unix/Makefile") into $MAKE and $MAKEF, leaving $MAKE as defined by
    Make and defining $MAKEF to "-f unix/Makefile".  Add clean_bzip2 target.
    unix/Makefile (SMS)
12. Modify configure to handle compiling bzip2.  unix/configure (SMS)
13. Remove linking bzip2 with utilities.  Other changes.  unix/Makefile (Ed)
14. Change bzip2 wrong library errors to warnings.  Put back OS bzip2 library
    check.  Only compile bzip2 if in bzip2 directory.  unix/configure (Ed)
15. More modifications to Makefile and configure to only allow compiling in
    the bzip2 directory.  unix/Makefile, unix/configure (Ed)
------------------------ March 27th 2007 version 3.0f32 ------------------------
 1. Modify configure and Makefile to only allow compiling bzip2 in the Zip bzip2
    source directory.  unix/Makefile, unix/configure (SMS, Ed)
 2. Update bzip2 installation instructions.  bzip2/install.txt (SMS, Ed)
 3. Remove need for BZIP2_USEBZIP2DIR define by using an appropiate include dir
    specification (-I ../../bzip2) when needed.  zip.c, win32/vc6bz2/zip.dsp,
    unix/configure (SMS, Ed, Christian)
 4. Update VC6 readme.  win32/readmeVC.txt (Christian, Ed)
 5. Add crc32.h to VC projects.  Add assembler group to zipcloak, zipnote, and
    zipsplit projects.  Add BZ_NO_STDIO to all configurations with bzip2 so
    reduced bzip2 code is used.  win32/vc6/zip.dsp, win32/vc6/zipcloak.dsp,
    win32/vc6/zipnote.dsp, win32/vc6/zipsplit.dsp (Christian)
 6. Update VC6bz2 readme.  win32/readVCBZ.txt (Christian, Ed)
 7. Modify bzip2 VC6 workspace to use standard zipcloak, zipnote, and zipsplit
    projects as they don't need bzip2.  win32/vc6bz2/zip.dsw (Christian)
 8. Fix zlib flag problem by properly setting and clearing deflInit flag to
    initialize and release resources.  zipup.c (Bill Brinzer, Christian)
 9. Update copyright.  crypt.h, api.c, tailor.h, fileio.c, ziperr.h,
    zipsplit.c, zipnote.c, zipcloak.c, util.c (Ed)
------------------------ April 25th 2007 version 3.0f33 ------------------------
 1. Fix -dd display_dots option for VMS.  Fix adding value for -ds to command
    line.  Fix /NAMES = AS_IS for older header files.  cmdline.c (SMS)
 2. Add Win32 wide scan support.  In fileio.c add Win32 wide functions lastw(),
    msnamew(), newnamew(), wchar_to_wide_string(), is_ascii_stringw(),
    wchar_to_local_string(), and wchar_to_utf8_string().  In globals.c
    add no_win32_wide that is true if the wide versions of calls like
    GetFileAttributesW() do not work as on Win9x without the Unicode kit.
    In tailor.h define zwstat for stats that use wchar_t strings and
    defines SSTATW and LSSTATW.  In util.c add isshexpw() and recmatchw()
    and dosmatchw() for matching using wchar_t strings.  In win32.c add
    FSusesLocalTimeW(), IsFileSystemOldFATW(), GetFileModeW(), GetLongPathEAW(),
    and zstat_zipwin32w().  In win32zip.c add zdirscanw structure,
    GetDirAttribsW(), zDIRSCANW, readdw(), wild_recursew(), procname_win32w(),
    OpenDirScanW(), GetNextDirEntryW(), CloseDirScanW(), procnamew(),
    local_to_wchar_string(), wchar_to_utf8_string(), in wild() code to
    check if W versions are supported and send zip down byte or wide path,
    ex2inw(), in2exw(), and filetimew().  In zipup.h define zwopen to use
    wide paths.  In zipup.c if supported use filetimew() and zwopen().
    In zip.h add namew, inamew, and znamew to zlist and flist.  In zip.c
    remove duplicate initialization of use_wide_to_mb_default, force_zip64,
    zip64_entry, and zip64_archive.  Use filetimew() if UNICODE_SUPPORT and
    using wide paths for directory scan.  Remove old 8.3 path Unicode fix as
    now use wide paths and get all where the 8.3 kluge missed paths where
    characters in path needed multiple code pages.  Changes to bit 11 Unicode
    but still not ready.  fileio.c, globals.c, tailor.h, util.c, zipup.h,
    win32/win32.c, win32/win32zip.c, win32/win32.h, zipup.c, zip.c (Ed)
 3. Update copyright.  Don't define UNICODE_SUPPORT if already defined.
    Define MATCHW and zstat_zipwin32w().  win32/osdep.h (Ed)
------------------------ April 29th 2007 version 3.0f34 ------------------------
 1. Add temporary option -sC to test Unicode file creation enabled with
    UNICODE_TEST define.  zip.c, fileio.c (Ed)
 2. On Unix display control characters as ^X as UnZip.  (SMS) fileio.c
 3. Update extended help.  zip.c (Ed)
 4. Fix bugs in Unicode changes.  zip.c, fileio.c (SMS, Ed)
 5. Add NAMES AS_IS support.  Handle root dir [000000].  zip.h,
    vms/install_vms.txt, vms/vmszip.c, vms/vmsmunch.c (SMS)
 6. Add global zipfile_exists to handle missing zipfile errors better.  zip.h,
    globals.c, zip.c (Ed)
 7. Add functions utf8_to_escape_string(), wide_to_escape_string(),
    local_to_escape_string(), utf8_to_wchar_string(), and
    rename wide_to_escape_string() to wide_char_to_escape_string().  fileio.c,
    win32/win32zip.c, zip.h (Ed)
 9. Free f->inamew in fexpel().  Use zuname for matching.  fileio.c (Ed)
10. Fix memory bug by setting z->namew, z->inamew, and z->znamew to NULL.
    Set f->namew, f->inamew, and f->znamew to NULL for new file in newname().
    Free wide_string in local_to_utf8().  Other Unicode fixes.  Add namew,
    inamew, and znamew to freeup().  fileio.c, win32/win32zip.c, zip.h (Ed)
11. Move wchar functions only used by Windows to win32zip.c.  fileio.c,
    zip.h (Ed)
12. Fix spelling in manual.  zip.1 (SMS, Ed)
13. Add zuebcmp() for Unicode.  zipfile.c
14. Open files to read using wide name as input path.  zipup.c (Ed)
15. Update help.  zip.c (Ed)
16. Change -TT long option from --unzip-path to --unzip-command.  zip.c (Ed)
17. Update Manual to include section on Unicode, add -TT option, make some
    changes to Unicode in other sections, update copyright at bottom, and
    some small changes to wording and examples.  man/zip.1, zip.txt (Ed)
18. Put #ifdef WIN32 around WIN32 blocks.  zipfile.c (Ed)
------------------------- May 14th 2007 version 3.0f35 -------------------------
 1. Update VMS to include new options.  vms/cmdline.c, vms/zip_cli.cld (SMS)
 2. Update VMS help.  vms/vms_zip.rnh (SMS)
 3. Minor updates to VMS help.  vms/vms_zip.rnh (Ed)
 4. Create global filter_match_case that defaults to 1 (case-sensitive).  zip.c
    zip.h, globals.c (Ed)
 5. Add option -fc to fold case for case-insensitive matching in filter().
    Currently enabled only for WIN32.  zip.c, win32/osdep.h (Ed)
 6. Change (action == DELETE || action == FRESHEN) to filter_match_case in
    PROCNAME() define.  I just couldn't figure out what was going on here and
    why the case flag was controlled by this.  zip.c (Ed)
 7. Update WhatsNew.  WHATSNEW (Ed)
------------------------- May 17th 2007 version 3.0f36 -------------------------
 1. Touch date on generated file.  vms/ZIP_MSG.MSG (SMS, Ed)
 2. Update Betas readme to include Release Candidates.  Betas_Readme.txt (Ed)
 3. Update Zip 3.0f announcement.  zip30f.ann (Ed)
 4. Minor updates to VMS help.  vms/cvthelp.tpu, vms/vms_zip.rnh (SMS)
 5. Major changes to VMS CLI help.  vms/zip_cli.help (SMS, Ed)
 6. Update license.  revision.h (Ed)
------------------------- May 21st 2007 version 3.0f37 -------------------------
 1. Rename -fc (fold case) to -ic (ignore case) which may be more intuitive.
    zip.c (Ed)
 2. VMS CLI updates for new options.  vms/cmdline.c, vms/vms_zip.rnh,
    vms/zip_cli.cld, vms/zip_cli.help (SMS)
 3. Updates to support Watcom C, mingw, djgppv2 and msc-16-bit, including
    supporting wide stat and compare calls and work-around for problem with
    "no symlink support" detection.  tailor.h, util.c, zip.c, win32/osdep.h,
    win32/win32.c, win32/win32/zipup.h (Christian)
------------------------- May 29th 2007 version 3.0f38 -------------------------
 1. Update description.  file_id.diz (Ed)
 2. Handle better when not splitting and run out of disk space.  Also, for split
    method 1 (automatically write all splits to same place) exit if run out of
    space instead of filling available space with near empty splits.  For split
    method 2 require splits to be at least 64K bytes (the minimum split size).
    fileio.c (Ed)
 3. Add line break in ziperr() if message line has been started.  zip.c (Ed)
 4. In ziperr() don't close output handle y if same as current_local_file handle
    and just closed that.  zip.c (Ed)
 5. Change default definition of PROCNAME() to handle new filter_match_case flag
    and restore backward compatibility.  zip.c (Christian, Ed)
 6. Add note detailing definition of PROCNAME().  zip.c (Ed)
 7. Remove nonlocalpath parameter from procname_win32() and procname_win32w()
    and variables nonlocal_path and nonlocal_name as this is not used now that
    unicode is implemented in WIN32 using the wide calls.
 8. Enable ignore case option for VMS.  zip.c (SMS)
 9. Update -v and other updates in manual.  man/zip.1 (Christian, Ed)
10. Updates for Watcom C and Win32 symlinks.  win32/osdep.h (Christian)
11.  Fix historic problem with VAX seeking.  zipfile.c (SMS)
12. Add NAM_M_EXP_DEV.  Add determination if device is in file specification.
    If device name in file specification do ODS2 and ODS5 down-casing.
    Define explicite_dev().  vms/vms.h, vms/vmszip.c (SMS)
------------------------- June 4th 2007 version 3.0f39 -------------------------
 1. Update osdep.h to use new filter_match_case flag.  vms/osdep.h (SMS)
 2. Fix unterminated string bug and trim extra allocated space in
    local_to_display_string().  fileio.c (Ed)
 3. Updated extended help for -u and -ic options.  zip.c (Ed)
 4. Update Manual.  man/zip.1, zip.txt (Ed)
------------------------- June 15th 2007 version 3.0f40 -------------------------
 1. Update Unicode Path and Unicode Comment descriptions based on suggestions
    from WinZip.  proginfo/extrafld.txt (Steve Gross, Ed)
 2. Update descriptions for Add, Update, and Freshen in the manual.  man/zip.1
    (Christian)
 3. Update default definition of PROCNAME() to use filter_case_match flag to
    turn off case matching in filter().  zip.c (Christian)
 4. Update WhatsNew.  WHATSNEW (Ed)
 5. Update announcement.  zip30f.ann (Ed)
 6. Update manual.  man/zip.1, zip.txt (Ed)
------------------------- July 7th 2007 version 3.0f41 -------------------------
 1. Use File Name as Unicode path if UTF-8 flag is set in header.  zip.c,
    globals.c, zipfile.c, zip.h (Ed)
 2. Update ToDo.  TODO (Ed)
 3. Update WhatsNew.  WHATSNEW (Ed)
 4. Update ReadMe.  README (Ed)
 5. Fix problems with incompatible stat types on Win32.  fileio.c, tailor.h,
    zip.h, win32/win32.c, win32/win32zip.c, win32/osdep.h (Ed)
 6. Define NO_STREAMING_STORE to turn off storing while streaming.
    INSTALL, zipup.c (Ed)
 7. Define UNICODE_ALLOW_FORCE to enable -UN=force option which is now
    disabled and would need work.  globals.c, zip.h (Ed)
 8. Add global using_utf8 to flag when OS current character set is UTF-8.
    If an existing entry has the UTF-8 flag set the flag is kept.  If a new
    entry needs Unicode and on a UTF-8 system assume the strings are UTF-8
    and set the UTF-8 flag.  globals.c, zip.h (Ed)
 9. Update Unicode extra field descriptions.  proginfo/extrafld.txt (Ed)
10. Add include directory so can find bzip2 header file when using bzip2
    directory.  unix/configure (Ed)
11. Fix wide character wild(), wild_recursew() and OpenDirScanW() for Win32 so
    work like the regular versions.  win32/win32zip.c (Ed)
12. Update Unicode in manual.  Update -W description in manual  zip.1
13. Flush logfile writing.  zip.c (Ed)
14. Update extended help for -UN option.  Update help for Update to note it
    updates files where the OS has a later date.  Chance -UN=Exit to -UN=Quit
    so can abbreviate to first letter.  zip.c (Ed)
15. Fix a bug in readzipfile() when zip used in pipe.  Other pipe fixes.  zip.c,
    zipfile.c (Ed)
------------------------ August 10th 2007 version 3.0f42 -----------------------
 1. Update error message for -DF.  zip.c (Ed)
 2. Add bzipped message to write to log file.  zipup.c (Ed)
 3. Update bzip2 install instructions.  bzip2/install.txt (Ed)
 4. Move local.h include to tailor.h to fix compiler multiple define.  tailor.h,
    zip.c (SMS)
 5. Add additional C compiler checks for GNU and HP.  unix/configure (SMS)
 6. Fix to build libbz2.a.  unix/Makefile (SMS)
 7. Update copyright.  acorn/osdep.h, macos/osdep.h, tops20/osdep.h,
    vms/vmszip.c, vms/vmsmunch.c, vms/vms_pk.c, vms/vms_im.c, vms/vms.h,
    vms/vms.c, vms/osdep.h, win32/rsxntwin.h, win32/osdep.h, win32/nt.c (Ed)
 8. Change zfeeko(file, 0, SEEK_SET) to rewind(file) in ffile_size() so
    EOF is always reset.  This was creating problems in WIN32 when
    NO_ZIP64_SUPPORT was set but LARGE_FILE_SUPPORT was set.  zipfile.c (Ed)
 9. Update compile -v descriptions for LARGE_FILE_SUPPORT and ZIP64_SUPPORT to
    be more specific as to what each does.  zip.c (Ed)
10. Fix bug that added the local header size to the next entry compressed size
    giving a wrong compressed size error if splitting and the split occurs when
    writing a local header.  fileio.c (Ed)
11. Remove UNICODE_TEST define from VC 6 projects.  win32/vc6/zip.dsp,
    win32/vc6/zipcloak.dsp, win32/vc6/zipnote.dsp, win32/vc6/zipsplit.dsp (Ed)
12. Update extended help.  zip.c (Ed)
13. Only output -FF central directory messages in verbose mode.  zipfile.c (Ed)
14. Add note about possible bug when copying entries from a split archive.
    WHATSNEW (Ed)
------------------------ August 11th 2007 version 3.0f43 -----------------------
 1. Display locale inside check to avoid NULL locale.  zip.c (SMS, Ed)
 2. Add include wchar.h to tailor.h.  tailor.h (SMS)
------------------------ August 21st 2007 version 3.0f44 -----------------------
 1. Remove verbose messages when setting locale as verbose flag is not set yet.
    zip.c (SMS, Ed)
 2. Change reading splits message "abort archive" to "abort archive - quit" and
    change selection letter from a to q so q quits consistently.  For quit,
    don't confirm as more annoying than helpful.  fileio.c (Ed)
 3. In bfwrite() handle case where a split ends at the end of one entry and
    trying to write the next local header forces opening next split.  This
    caused copying entries from one archive to another to fail if this came up.
    Also handle case where a new split is needed while writing central directory
    entries.  Now close last split and update pointers to point to the new
    split.  fileio.c (Ed)
 4. Update use of mesg_line_started and add new logfile_line_started to account
    for line ends in logfile.  fflush() output.  zip.c, zip.h, globals.c (Ed)
 5. Move setting split size if input archive is split and split_size not set
    to after archive is read.  zipfile.c, zip.c (Ed)
 6. Update Manual to describe Unicode as implemented and note that old splits
    are not automatically excluded.  man/zip.1, zip.txt (Ed)
 7. Update WhatsNew to remove note that creating and copying split archives
    is broke as it seems fully working now.  WHATSNEW (Ed)
 8. Update announcement.  zip30f.ann (Ed)
------------------------ August 31st 2007 version 3.0f45 -----------------------
 1. Unicode fix for VMS.  tailor.h (SMS)
 2. Add member current to zlist structure to flag when an archive entry is
    current with the matching OS file using file time and size.  This is used by
    File Sync to copy current entries from archive.  zip.h, zip.c (Ed)
 3. Comment out zip info verbose extra data message as this message does not
    seem to add much.  zipfile.c (Ed)
 4. Add local and central directory Version Needed To Extract to mismatch
    warning.  Update warning text.  zipfile.c (Ed)
 5. Add function BlankRunningStats() to output blanks for the running stats
    part of the line to use when displaying stats for entries not on the mark
    list so all output lines up.  zip.c
 6. Add -FS to extended help as new mode.  zip.c (Ed)
 7. Update description of -FF to remove Assume Worst.  zip.c (Ed)
 8. Add all_current flag that is set if all entries in archive are current and
    skip updating archive if -FS and all entries are current.  zip.c (Ed)
 9. Change argv[] to args[] for "try: zip" error message as message depends on
    new argument order in args where options are now at beginning.  zip.c (Ed)
10. For File Sync, copy entries to new archive if file time and size are the
    same.  If verbose, output ok when copying current entries, otherwise no
    message when current_entry.  Set all_current to 0 if an entry not marked or
    a file not on OS as need to avoid the All Current message in these cases to
    catch only deletions.  zip.c (Ed)
11. Initialize variables excluding zipstate and setjmp() if USE_ZIPMAIN defined
    to fix bug when recall zipmain().  zip.c (Ed)
12. Update Manual.  zip.1, zip.txt (Ed)
13. Update WhatsNew.  WHATSNEW (Ed)
14. Update announcement.  zip30f.ann (Ed)
----------------------- September 5th 2007 version 3.0f46 ----------------------
 1. Move write of local header after when GPB11 UTF-8 bit set in putlocal().
    zipfile.c (Ed)
 2. Change to uppercase for compatibility.  vms/install_vms.txt (SMS)
 3. Set cenbeg and bytes_this_split to fix grow.  Check if grow split archive.
    zipfile.c, zip.c (Ed)
----------------------- September 14th 2007 version 3.0f47 --------------------
 1. Include address for new Info-ZIP forum.  Add note on 16-bit OS support.
    Add note about text file line ends.  README (Ed)
 2. Update WhatsNew to include latest on Unicode.  Add section on plans for
    Zip 3.1.  WHATSNEW (Ed)
 3. Minor change in note for Unicode in extended help.  zip.c (Ed)
 4. Modify definitions of Unicode extra fields based on discussions with PKWare
    and WinZip.  proginfo/extrafld.txt (Ed)
 5. Add note on UTF-8 flag.  INSTALL (Ed)
 6. Minor updates to ToDo list.  Needs more work.  TODO (Ed)
 7. Update announcement.  zip30f.ann (Ed)
 8. Change definition of IZ_OUR_BZIP2_DIR to be compatible with Configure and
    to work with HP-UX.  unix/Makefile (SMS)
------------------------ September 24th 2007 version 3.0f ---------------------
 1. Update extended help Unicode description.  zip.c (Ed)
 2. Update Readme.  README (Ed)
 3. Fix case of define identifying IA64.  vms/vms.c (SMS)
 4. Update announcement date.  zip30f.ann (Ed)
 5. Update Unicode extra field definitions based on changes proposed for
    AppNote.  extrafld.txt (Ed)
------------------------ October 17th 2007 version 3.0g01 ---------------------
 1. Can get stuck on open Unix FIFO so default to skip and add option -FI to
    enable reading FIFO.  Add global allow_fifo.  zip.c, zip.h, globals.c
    (Willus 0, Ed)
 2. As problems with MinGW with wide-character paths, disable wide-character
    Unicode support.  zip.c, unix/unix.c (Willus 0, Ed)
 3. Update manual installs to include zipcloak.1, zipnote.1, and zipsplit.1
    pages.  unix/Makefile (Ed)
 4. Update Solaris packages.  unix/Packaging/pkginfo.in,
    unix/Packaging/postinstall, unix/Packaging/preinstall.in,
    unix/Packaging/prototype (SMS)
------------------------ October 30th 2007 version 3.0g02 ---------------------
 1. Fix bug in get_in_split_path() where look for .zip split when attempting
    to open archives without a .zip extension, even when a single file archive
    like jar file.  fileio.c (Gabriele (balducci@units.it), Ed)
 2. Fix bug where temp file got created in current working directory on Unix
    by giving entire archive path to mkstemp() as template.  fileio.c, zip.c
    (Willus, Ed)
 3. Use 64-bit output functions for bits_sent.  trees.c (SMS)
 4. Add -FF to fixfix -sd messages to make different from identical main
    messages. zip.c (SMS, Ed)
 5. If quiet do not ask for splits and all splits must be in same location.
    zipfile.c (Ed)
 6. Clean up making zip manuals.  unix/Makefile (Ed, SMS)
 7. Add clean_exe to make.  unix/Makefile (SMS)
 8. Update to VMS Notes, including adding details on symlinks, -V, and UTC
    dates times.  vms/notes.txt (SMS)
 9. Fix bug in wild() when calling wile_recursew() where qw should be
    pointing inside pw.  win32/win32zip.c (Willus, Ed)
10. Fix bug where is_ascii_string() fails when passed a NULL string.  This
    may fix problem where the CentOS mbstowcs() function is returning -1 when
    trying to convert a file name with a bad character (0xe6), causing
    local_to_wide_string() and then local_to_utf8_string() to return NULL, so
    f->uname gets NULL and so is_ascii_string() fails with SIGSEGV.  fileio.c
    (Willus, Ed)
------------------------ October 31st 2007 version 3.0g03 ---------------------
 1. Add handling of -b temp directory when opening splits in bfwrite() using
    mkstemp().  fileio.c (SMS, Ed)
------------------------ November 3rd 2007 version 3.0g04 ---------------------
 1. Move show_files to global so can avoid split warning for -sf.  zip.c,
    globals.c, zip.h, zipfile.c (Ed)
 2. Account for -b tempath when opening temp file.  zip.c, zipnote.c,
    zipcloak.c (SMS, Ed)
------------------------ November 4th 2007 version 3.0g05 ---------------------
 1. Minor fixes to fdopen calls.  zipcloak.c, zipnote.c (SMS, Ed)
------------------------ November 4th 2007 version 3.0g06 ---------------------
 1. Add negation to -db, -dc, -dd, -dg, -du, -dv display options.  zip.c (Ed)
 2. Put back UNICODE_SUPPORT no_win32_wide code left out in previous fix.
    win32/win32zip.c (Willus, Ed)
------------------------ November 21st 2007 version 3.0g07 ---------------------
 1. Fix bug preventing newline in some cases in zipmessage().  zip.c (Ed)
 2. Update Unicode help.  zip.c (Ed)
 3. Update -sd messages.  zip.c (Ed)
 4. Add filetimew() for Unicode case.  zip.c (Ed)
 5. Add ClearArchiveBitW() for Win32 wide.  zip.c, zip.h, win32/win32.c (Ed)
 6. Only ask for .zip split if path ends in .znn or .znnn where n 0 to 9.  This
    allows -FF to work on .exe sfx files without adding .zip.  zipfile.c (Ed)
 7. Fix bug where only backed up 20 bytes to find Z64 EOCD Locator.  Now back
    up 24 bytes to include size of Z64 EOCD Locator signature.  This prevented
    reading and updating archives greater than 4 GB.  zipfile.c (Ed)
 8. If -FF on Win32 initialize wide strings namew, inamew, and znamew to NULL.
    zipfile.c (Ed)
 9. Add #include <wctype.h> to support towupper().  tailor.h (SMS)
------------------------ December 4th 2007 version 3.0g08 ---------------------
 1. Update dot_size comment.  globals.c (Ed)
 2. Update Compression in extended help.  zip.c (Ed)
 3. Add extended help on self extractor -A and -J.  zip.c (Ed)
 4. Update VMS SYMLINK version information.  zip.c (SMS)
 5. Remove not final from Unicode version information as final now.  zip.c (Ed)
 6. Remove apparently not needed WINDLL variable retcode.  zip.c (Ed)
 7. Fix -A to calculate sfx offset and adjust offsets as it should.  zip.c (Ed)
 8. Split -F and -FF used with -A warning to separate warnings.  zip.c (Ed)
 9. Add adjusting to can't to that to split archive error.  zip.c (Ed)
10. Fix bug for -A that tries to open split by asking for disk 0 instead of
    disk 1.  Add adjust_offset and cd_total_size variables.  Calculate
    sfx offset by determining offset of start of central directory.  Archives
    larger than 4 GB are not supported as sfx archives but these don't seem
    to work anyway.  Add adjust_offset to Zip64 EOCDR offset and central
    directory offsets.  zip.c, zipfile.c (Ed)
11. Comment out here debug variable in find_next_signature().  zipfile.c (Ed)
12. Change %2x to %02x as format for parts of a signature in error messages.
    zipfile.c (SMS)
13. Add warning adjusting split archives not yet supported.  zipfile.c (Ed)
14. Add period to central directory comment.  zipfile.c (Ed)
15. Update readme for vb Zip64 project.  windll/vbz64/readvb64.txt (Ed)
16. Update comments of VB for Zip64 example.  Add SplitSize to VB Zip64
    example.  windll/vbz64/vbzipbas.bas, windll/vbz64/vbzipfrm.frm  (Ed)
17. Add SourceForge to comment noting where can get the source code.
    windll/vbz64/vbzipfrm.frm (Ed)
18. Update WhatsNew.  WHATSNEW (Ed)
------------------------ December 12th 2007 version 3.0g09 --------------------
 1. A few minor changes to extended help.  zip.c (Ed)
 2. Uppercase beginning of most -sd messages.  zip.c (Ed)
 3. Add spaces between options in some error messages.  zip.c (Ed)
 4. Update comments in scanzipf_regnew().  zipfile.c (Ed)
 5. Update scanzipf_regnew() to figure out sfx offset. (Ed)
 6. Uppercase VMS RUNOFF file as apparently needed.  VMS_ZIP.RNH (SMS)
 7. Add comments to zipmessage().  zip.c (Ed)
 8. Update extended help and option descriptions.  zip.c (Ed)
------------------------ December 20th 2007 version 3.0g10 --------------------
 1. Fix -F to include -A adjustment check.  zipfile.c (Ed)
 2. Change -FF message when find EOCDR.  zipfile.c (Ed)
 3. For -FF, reset first CD entry flag in_central_directory when a local entry
    is found after CD entries so that another CD entry forces sorting of all
    local entries to that point.  This allows files with multiple archives in
    them to be processed.  zipfile.c (Ed)
 4. Add message when a local entry is found after a central directory.
    zipfile.c (Ed)
 5. Remove word offset from disk offset location messages.  zipfile.c (Ed)
 6. Make Adjust offset message more descriptive.  zipfile.c (SMS, Ed)
 7. In scanzipf_regnew(), if adjustment to offsets, add it to
    in_cd_start_offset.  zipfile.c (Ed)
 8. Allocate cextra only if localz->ext not 0 in zipcopy().  zipfile.c (Ed)
------------------------ December 28th 2007 version 3.0g11 --------------------
 1. Include definitions of zip64_eocdr_start and z64eocdl_offset in
    ZIP64_SUPPORT ifdef block.  Add comments for End Of CD Record (EOCDR).
    Update comments for adjust offset detection.  zipfile.c (Ed)
 2. Change ((uzoff_t)1 << 32) to 0xFFFFFFFF.  zipfile.c (SMS, Ed)
 3. Leave off local header detection as not useful when searching for start
    of central directory to get adjust offset.  Looks like all expected cases
    are now covered as long as archive is intact.  zipfile.c (Ed)
 4. Update some warning messages.  Simplify adjust offset information message.
    zipfile.c (Ed)
 5. Add braces to unicode_mismatch if block.  zipfile.c (Christian)
 6. Add (void *) cast in InterlockedExchangePointer() mutex calls to fix
    compile warnings in MinGW (GCC 3.4.4).  win32/nt.c (Christian)
 7. Remove unused nonlocalpath variable.  win32/win32zip.c (Christian)
 8. Update betas readme file.  betas_readme.txt (Ed)
 9. Partial update to Who list of contributors.  proginfo/infozip.who (Ed)
10. Update ReadMe.  Create Announcement.  README, zip30g.ann (Ed)
11. Update WhatsNew.  WHATSNEW (Ed)
------------------------ January 7th 2008 version 3.0g12 --------------------
 1. Convert Scanning files message to use standard zipmessage_nl() so line
    ends are generated when needed.  fileio.c (Ed)
 2. Add line ends in DisplayRunningStats() if a display line has been
    started.  zip.c (Ed)
 3. For the command line listed at the top of the log file, add double
    quotes around any arguments that have spaces in them.
    zip.c (Ed)
 4. Instead of stdout use standard mesg output stream for show files.
    Output new line for show files for display and log file if there was
    output on the current line.  zip.c (Ed)
 5. Comment out new line output code after zipup() and replace with
    call to zipmessage_nl("", 1) to output new line if needed.
    zip.c (Ed)
 6. In GetFileMode() and GetFileModeW() when get attributes fails
    instead of fprintf(mesg, ...) use zipwarn() so error goes in
    log file and new lines are displayed when needed.  win32/win32.c (Ed)
 7. In GetSD(), change cbytes from long to ulg.  Check cbytes (the
    compressed size of the security descriptor) and issue warning if
    the compressed security descriptor is greater than 0x7FFF (32k)
    as the entire header this extra field is in needs to fit in the
    64k header.  Should be a check on the running size of the header
    so the actual space remaining is tracked.  Maybe in Zip 3.1.  If
    cbytes OK cast to ush and store.  win32/win32zip.c (Ed)
 8. Use zipmessage_nl() for bytes security message so new lines are
    handled and message goes in log file.  win32/win32zip.c (Ed)
 9. Add new option -RE to enable [list] (regex) matching in DOS and
    WIN32 but disable [list] matching otherwise.  Default behavior
    is restored if ALLOW_REGEX is defined.  globals.c, util.c,
    zip.h, zip.c (Ed)
------------------------ January 20th 2008 version 3.0g13 --------------------
 1. Update copyrights to 2008.  zip.c, zipcloak.c, zipfile.c, zipnote.c,
    zipsplit.c, zipup.c, README (Ed)
 2. Update Who.  proginfo/infozip.who (Ed)
------------------------ January 30th 2008 version 3.0g14 --------------------
 1. Update copyrights.  fileio.c, globals.c, revision.h, util.c, zip.h,
    win32/win32.c, win32/win32zip.c (Ed)
 2. Updates.  README, proginfo/infozip.who (Ed)
 3. Update announcement and WhatsNew.  zip30g.ann, WHATSNEW (Ed)
 4. Add ALLOW_REGEX to INSTALL define list.  INSTALL (Ed)
 5. Change -sd message.  zip.c (Ed)
 6. For bzip2 check for binary and set binary/text flag.  Handle -l and -ll
    line end conversions for bzip2.  zipup.c (Ed)
------------------------ February 3rd 2008 version 3.0g --------------------
 1. Change && to || to fix logic bug in show files.  zip.c (Johnny)
 2. Add CLEAN and CLEAN_ALL VMS targets.  vms/descrip_mkdeps.mms (SMS)
----------------------- February 22nd 2008 version 3.0h01 --------------------
 1. Update some echo statements to use CFLAGS_OPT.  Add GNUC check.
    unix/configure (SMS)
 2. Only store UID and GID if 16 bit.  unix/unix.c (Ed)
----------------------- March 21st 2008 version 3.0h02 --------------------
 1. Change long Unicode escapes from 8 characters to 6 characters based on
    change in UnZip 6.0.  fileio.c (Ed)
 2. Put zuebcmp() declaration in #if 0 block as definition already is.  This
    function would be used to allow Unicode escapes on the command line
    without using the -UN=escape option, but the utility of this is still
    being determined.  zipfile.c (SMS, Ed)
 3. Remove declaration for unused bz_deflate_init().  zipup.c (SMS, Ed)
 4. Add release announcement file, anticipating the long-awaited release.
    zip30.ann (Ed)
 5. Update WhatsNew.  WHATSNEW (Ed)
----------------------- March 24th 2008 version 3.0h03 --------------------
 1. Update Unix configure script to better test for modern HP-UX compiler.
    unix/configure (SMS)
 2. Updated Beta Readme.  betas_readme.txt (Ed)
 3. Update Install.  INSTALL (Ed)
 4. Update ReadMe.  README (Ed)
 5. Small change to main help screen.  zip.c (Ed)
 6. Small update to top of ToDo list.  Actual updating of items still
    needs to be done.  TODO (Ed)
----------------------- April 2nd 2008 version 3.0h04 --------------------
 1. Update copyright.  crc32.h (Christian)
 2. Remove zip.h include.  crc32.h (Christian)
 3. Add local prototypes for Unicode functions.  Add cast for split size
    check.  Make many Unicode functions local.  #if 0 out currently unused
    utf8_chars().  Fix memory leak in wide_to_local_string() by adding
    free() for buffer on error return.  Fix memory leak in copy_args() on
    error return by adding free-args().  Add ZCONST to arg in
    insert_arg().  Shorten some lines to less than 80 characters.  Add
    free() to get_longopt() to fix memory leak.  fileio.c (Christian)
 4. Create Win32 versions of wide_to_local_string() and
    local_to_wide_string() so can use Win32 conversion functions.
    fileio.c, win32/win32.c (Christian)
 5. Update comments for get_option().  fileio.c (Ed)
 6. Update encryption code readme.  README.cr (Ed)
 7. Add prototype for recmatchw().  util.c (Christian)
 8. Change count_args() from static to local.  util.c (Christian)
 9. Change ifdefs for includes for prototypes for version_info(),
    zipstdout(), and check_zipfile() for WINDLL and MACOS and add
    check_unzip_version().  zip.c (Christian)
10. Change ifndef NO_SYMLINKS to ifdef S_IFLNK for determining compiler
    information.  zip.c (Christian)
11. Change UTF-8 locale from en_GB.UTF-8 to .UTF-8.  zip.c (Christian)
12. Change cast of -1 for dot_size from uzoff_t to zoff_t.
    zip.c (Christian)
13. Change prototype for set_filetype to include parameter char *.
    Change prototype of has_win32_wide to include parameter void.
    zip.h (Christian)
14. Add prototypes for find_next_signature(), find_signature(),
    and is_signature().  Change duplicate prototype scanzipf_regnew()
    to missing prototype scanzipf_fixnew().  Change comment for Adler-16
    checksum to CRC-32 checksum as that is being used at that point in
    the code.  Move multiple uname assignments to common assignment.
    Add inameLocal for WIN32_OEM and use define for inameLocal if not
    to save memory allocation when not not using WIN32_OEM.  Also
    change _INTERN_OEM(str1) to INTERN_TO_OEM(src, dst) for OEM
    conversion.  Format comment for vem to fit in 80 character lines.
    zipfile.c (Christian)
15. Change variable a from buffer to a pointer and add abf as the
    buffer for zgetline() to handle NULL case.  zipnote.c (Christian)
16. Change comments to zipentry comments and zipfile comment in
    messages.  zipnote.c (Ed)
17. Use uidgid_16bit as flag variable instead of uid_size.  Modify
    size check that prevents saving Unix UIDs and GIDs in the old
    Unix extra field if they are not 16 bits.  Change memory
    allocation based on uidgid_16bit.  Delete unused code for memory
    copy for extra field.  unix/unix.c (Christian, Ed)
18. Change compiler flag from -zp8 to -Zp8 for LCC Win32.
    win32/makefile.lcc (Christian)
19. Add ifndef debug.  Add bzip2 support.  Add additional compiler
    flags.  win32/makenoas.w32 (Christian)
----------------------- April 10th 2008 version 3.0h05 --------------------
 1. Fix bug found by forum poster where Zip stops recursing down a tree
    when option -AS is set and a directory without the Windows archive
    bit is reached.  Now Zip continues down the tree to include files with
    the bit set.  win32/win32zip.c (forum poster, Ed)
 2. Update comments.  win32/osdep.h (Ed)
 3. Update VMS notes to better organize and add information about file
    name case.  Additional small updates.  vms/notes.txt (SMS)
 4. Fix bugs from previous changes to unix.  unix/unix.c (SMS, Christian,
    Ed)
 5. Add unix IBM support.  unix/unix.c (SMS)
 6. Update INSTALL to account for new distribution structure and other
    changes. INSTALL (SMS, Ed)
 7. Update bzip2 install readme.  bzip2/install.txt (SMS, Ed)
 8. Fix bug noted in forum where -@ and -x generated a "nothing to
    select from error" by also checking filelist variable populated by
    -@ for entries.  zip.c (forum poster, Ed)
----------------------- April 20th 2008 version 3.0h06 --------------------
 1. Start announcement for Zip 3.0h public beta.  zip30h.ann (Ed)
 2. Update beta readme.  betas_readme.txt (Ed)
 3. Update case of README.CR.  INSTALL (Ed)
 4. Change -W to -ws for option to stop wildcards from scanning directory
    boundaries in path.  This frees up -W for later use, maybe as extendted
    option introducer.  zip.c, man/zip.1 (Ed)
 5. Updated date in announcement to May 4th.  zip30.ann (Ed)
 6. Added announcement for public beta Zip 3.0h.  zip30h.ann (Ed)
 7. Fix large file support for MinGW by checking for compiler environments
    before the check for (generic) gcc.  zipup.c, win32/osdep.h
    (Will, Christian)
 8. Fix large file support for bzip2.  Additionally, the "dot printout"
    code has also been adapted for LARGE_FILE support.  zipup.c
    (Will, Christian)
 9. Add comments to top of configure.  unix/configure (Ed)
10. Move comment and comment out value size check for UID/GID extra field.
    unix/unix.c (Ed)
11. Change case of file ToDo to TODO for consistency and to work with Unix
    package.  TODO (SMS, Ed)
----------------------- April 26th 2008 version 3.0h07 --------------------
 1. For -AS, which for Windows only includes files with the archive bit
    set, exclude directory entries (by setting -D) as some directories may
    not have any files with the archive bit set and so the directory would
    be empty.  zip.c (Ed)
 2. Fix UID/GID size detection to use byte sizes and remove data fit test.
    unix/unix.c (Ed)
 3. Update announcement.  zip30h.ann (Ed)
 4. Add new unix extra field with tag 'ux' that stores UIDs/GIDs of 1 to 4
    bytes (8 to 32 bits).  unix/unix.c (Ed)
 5. Update VB readme.  windll/vbz64/readVB64.txt (Ed)
 6. For Unicode escaped output also show escape for ASCII 7-bit if
    isprintable() is false.  fileio.c (Ed)
 7. Use locale "en_US.UTF-8" for Unix.  zip.c (Ed)
 8. Also show escaped Unicode for new files in found list.  zip.c (Ed)
 9. Update manual.  man/zip.1, zip.txt (Ed)
------------------------ May 4th 2008 version 3.0h08 -----------------------
 1. Handle when a bad Unicode string in archive forces
    utf8_to_wide_string() to return a NULL string.  Give warning if UTF-8
    in existing archive is bad.  Put WIN32 wide local header initializations
    in UNICODE_SUPPORT block.  fileio.c, zipfile.c (Ed)
 2. Leave out Unicode escape code if not Unicode enabled.  zip.c (Ed)
 3. Enable oem_to_local_string() and local_to_oem_string() for WIN32
    even if no Unicode.  zip.h, win32/win32.c (Christian, Ed)
 4. Update comment about encryption code.  zipcloak.c (Ed)
 4. Update zipmessage_nl() and zipmessage() from zip.c.  zipcloak.c,
    zipnote.c, zipsplit.c (Ed)
 5. Add Mac OS X library check.  unix/configure (SMS)
 6. Add 16-bit UID/GID check.  unix/configure (Christian, Ed)
 7. Format echo and comment statements a bit.  unix/configure (Ed)
 8. Only compile in old 16-bit UID/GID code if new define UIDGID_NOT_16BIT
    from unix configure script is not defined.  unix/unix.c (Christian)
 9. A couple changes to updated 16-bit UID/GID code.  Add 64-bit
    UID/GID support to new Unix extra field.  unix/unix.c (Ed)
10. Remove redundant "license" from options table.  zipcloak.c (Ed)
11. Remove old unix build files.  unix/configure-orig, unix/Makefile-orig
    (Christian)
12. Add -O (--output-file) option to ZipCloak.  Fix bug by setting
    out_path.  zipcloak.c (Ed)
------------------------ May 8th 2008 version 3.0h09 -----------------------
 1. Update copyright.  Add check for NO_UNICODE_SUPPORT.  tailor.h (Ed)
 2. Fix bug where Unicode General Purpose Bit Flag 11 should force keeping
    the old name field but it was being overwritten by the escaped name
    in the central directory header.  Fixed some ZIPERR() calls in
    putcentral() that referred to putlocal().  zipfile.c (Ed)
 3. Add comment about OCRCU8 and OCRCTB.  unix/configure (Ed)
 4. Change line in instructions to note that manuals should be made after
    Zip is made.  Change OCRTB to OCRCTB.  Add $(OCRCTB) to rule for
    zipcloak$E so crc32_.o is linked in.  Add comment for NO_UNICODE_SUPPORT
    flag.  unix/makefile (Ed)
 5. Update WhatsNew.  Add additional items to the Zip 3.1 list.  Add note
    about Zip 2.4.  WHATSNEW (Ed)
 6. Update Zip 3.0h announcement.  zip30h.ann (Ed)
 7. Update manual pages.  man/zip.1, man/zipsplit.1, man/zipnote.1,
    man/zipcloak.1 (Ed)
 8. Add noted for UTF-8 locale.  zip.c (Ed)
 9. Set UTF-8 locale for Unix in utilities if UNICODE_SUPPORT enabled
    so can display and process paths in archives correctly.  zipsplit.c,
    zipcloak.c, zipnote.c (Ed)
------------------------ May 12th 2008 version 3.0h10 ----------------------
 1. Add use of new Unix UID/GID extra field and of old Unix 16-bit UID/GID
    extra field when system uses 16-bit UIDs/GIDs to version information.
    zip.c (SMS, Ed)
 2. Add Unicode Path and Unicode Comment extra fields to extra fields list.
    Update new Unix extra field revision date.  proginfo/extrafld.txt (Ed)
 3. Add Mac hardware platform to version information.  unix/unix.c (SMS)
------------------------ May 19th 2008 version 3.0h11 ----------------------
 1. Initialize f->namew when streaming stdin to fix bug.  fileio.c (Ed)
 2. Change force_zip64 to start as -1 as unset, then use 1 for forcing use
    of Zip64 and 0 for disabling use of Zip64.  Add negation of -fz to
    prevent use of Zip64 during streaming from stdin to a non-seekable
    output where data descriptors will be used, which allows creating
    archives with the old stream format but will fail if a large file is
    streamed.  Default is still to force Zip64 data descriptors when
    streaming, which covers all cases but requires a Zip64 compatible
    unzip.  zip.c, globals.c, zipfile.c (Ed)
 3. Handle case of bad Unicode in archive.  zipfile.c (Ed)
------------------------ May 22nd 2008 version 3.0h12 ----------------------
 1. Fix bug introduced last beta that prevented streaming large files.  Use
    separate error message depending on if -fz- was used.  zipfile.c (Ed)
 2. Change non existent to nonexistent.  unix/configure (SMS)
 3. Don't output blank line when zipmessage_nl() gets passed an empty
    string.  This removes blank lines for skipped entries when -FS used.
    zip.c (Ed)
------------------------ May 27th 2008 version 3.0h13 ----------------------
 1. Change UNICODE_ALLOW_FORCE to UNICODE_SUPPORT, -UN=force to -UN=UTF8,
    and unicode_force to utf8_force.  This option now standard with Unicode
    support and forces Zip to save UTF-8 paths and comments, when not ASCII,
    as if UTF-8 were the native character set.  globals.c, zip.c, zip.h (Ed)
 2. Add note to Todo that it's out of date.  TODO (Ed)
 3. Update WhatsNew.  WHATSNEW (Ed)
 4. Update Unicode help in extended help.  zip.c (Ed)
 5. Update announcements.  zip30h.ann, zip30.ann (Ed)
 6. Fix bug with -UN=UTF8.  zip.c, zipfile.c (Ed)
 7. Update Zip manual.  man/zip.1, zip.txt (Ed)
 8. Attempt an update to zip limits document.  proginfo/ziplimit.txt (Ed)
 9. Update README regarding forum postings.  README (Ed)
10. Remove duplicate initialization lines for found and fnxt.  zip.c (SMS)
------------------------ May 28th 2008 version 3.0h14 ----------------------
 1. Remove >= 0 check from wide character check as value is unsigned.
    fileio.c (SMS)
 2. In putlocal(), move nam and use_uname to UNICODE_SUPPORT block.  If
    no UNICODE_SUPPORT use z->nam instead of nam.  zipfile.c (SMS, Ed)
 3. Update announcement date for beta.  zip30h.ann (Ed)
------------------------ May 31st 2008 version 3.0h ------------------------
 1. In putlocal() if using UTF-8 bit then also set UTF-8 bit in z->lflg so
    is set in local header for streaming.  zipfile.c (Ed)
 2. Update announcement date for beta.  zip30h.ann (Ed)
 3. Rename lib and dll projects to zip32z64 and update project files so
    project name is same as lib and dll libraries.  Export make files.
    windll/visualc/dll/zip32z64.dsp, windll/visualc/dll/zip32z64.dsw,
    windll/visualc/dll/zip32z64.mak, windll/visualc/libzip32z64.dsp,
    windll/visualc/libzip32z64.dsw, windll/visualc/libzip32z64.mak (Ed)
------------------------ June 7th 2008 version 3.0i01 ----------------------
 1. Update Mac ReadMe to note Mac OS X uses Unix port.  macos/readme.1st (Ed)
 2. Change UNIX to Unix in manual.  Update dates in manual and add note
    about Mac OS X. Change switch to switches.  zip.1 (SMS, Ed)
 3. Add version information under Windows by adding a version resource.
    win32/vc6/zip.dsp, win32/vc6bz2/zip.dsp, win32/zip.rc (Ed)
------------------------ June 15th 2008 version 3.0i02 ----------------------
 1. Update Install instructions.  INSTALL (Ed)
 2. Update ReadMe.  README (Ed)
 3. Update ToDo list.  TODO (Ed)
 4. Update WhatsNew.  WHATSNEW (Ed)
 5. Add note to WHERE.  WHERE (Ed)
 6. Update announcement.  zip30.ann (Ed)
 7. Review man pages and update Zip man page.  Compile text files from man
    pages.  man/zip.1, zip.txt, zipnote.txt, zipsplit.txt, zipcloak.txt (Ed)
 8. Update extended help.  zip.c (Ed)
------------------------ June 17th 2008 version 3.0i03 ----------------------
 1. Fix bug where UTF-8 flag was not being set when using_utf8 was set as
    result of UTF-8 being current character set.  zipfile.c (Ed)
 2. Update man page globbing description.  man/zip.1, zip.txt (SMS, Ed)
 3. Update web address to bzip2 package for VMS.  vms/install_vms.txt (SMS)
------------------------ June 21st 2008 version 3.0i04 ----------------------
 1. Update comments.  zbz2err.c (Christian)
 2. Put use_uname in UNICODE_SUPPORT block.  zipfile.c (Christian)
 3. Increase st to 0x1400.  msdos/makefile.msc (Christian)
 4. Update copyright and put @CodeSize and @DataSize into ifndef blocks for
    Huge, Large, Compact, Medium, and Small.  msdos/match.asm (Christian)
 5. Add check to disable symbolic links.  msdos/osdep.h (Christian)
 6. Put Mac OS X compiler check into if Mac OS X block to avoid problems on
    some other Unix ports with the check.  unix/configure (SMS)
 7. Move set_extra_field() to fix compile problem.  unix/unix.c (SMS)
 8. Update USEBZIP2 to USEBZ2 and -DUSE_BZIP2 to -DBZIP2_SUPPORT.  Drop
    -DMSDOS compile flag.  win32/makefile.w32 (Christian)
 9. Change BZIP2_SUPPORT to USEBZ2.  win32/makenoas.w32 (Christian)
------------------------ June 23rd 2008 version 3.0i05 ----------------------
 1. Update and unify resources.  Remove any MFC dependencies from the resource
    files zip.rc and windll.rc.  win32/zip.rc and windll/windll.rc now read
    the version info from revision.h.  windll.rc internal flags modified to
    "32-bit dll".  zip.rc internal flags liberated from "winnt 32-bit"
    to "generic 32-bit windows".  Win32 zip.exe also supported on Win9x
    (32-bit).  Update makefiles for Borland, MSC, GCC(mingw32), Watcom
    to support inclusion of zip.rc version resources into zip.exe binary.
    revision.h, msdos/osdep.h, win32/makefile.bor, win32/makefile.gcc,
    win32/makefile.w10, win32/makefile.w32, win32/makefile.wat,
    win32/makenoas.w32, win32/zip.rc, windll/windll.rc (Christian)
 2. Remove unused files.  win32/resource.h, windll/resource.h,
    windll/windll.aps, windll/zipver.h, windll/visualc/dll/zip32z64.mak,
    windll/visualc/lib/zip32z64.mak (Christian)
 3. Update VMS.  vms/descrip_deps.mms (SMS)
------------------------ June 26th 2008 version 3.0i06 ----------------------
 1. Update Install and Readme in preparation for release.  Update WhatsNew.
    INSTALL, README, WHATSNEW (Ed)
 2. Update announcement.  zip30.ann (Ed)
 3. Update original Visual Basic project comments and documentation.
    windll/vb/readmevb.txt, windll/vb/vbzip.vbp, windll/vb/vbzip.vbw,
    windll/vb/vbzipbas.bas, windll/vb/vbzipfrm.frm (Ed)
 4. Add bzip2 version of djgpp 2.x makefile thanks to Robert.  Assumes a
    standard djgpp installation.  msdos/makebz2.dj2 (Robert Riebisch, Ed)
------------------------ June 27th 2008 version 3.0i07 ----------------------
 1. Add DJGPP to bzip2 install instructions.  bzip2/install.txt,
    msdos/makebz2.dj2 (Robert, Ed)
------------------------- July 5th 2008 version 3.0 -------------------------
 1. Add -sd to extended help.  zip.c (Will, Ed)
 2. Fix memory bug when rebuilding Zip64 central directory extra field which
    can crash MinGW and other ports when processing large files.  zipfile.c
    (Will)
 3. Fix -v bug preventing display of version information when options in
    environment variables.  zip.c (Ed)
 4. Update WhatsNew.  WHATSNEW (Ed)
 5. Update announcement.  zip30.ann (Ed)
---------------------- August 16th 2008 version 3.1a01 ----------------------
 1. Add support for -UN=N (no Unicode) and -UN=U (store Unicode as native
    UTF-8) options to dll interface as fUTF8_No and fUTF8_Native in ZPOPT.
    api.c, api.h (Ed)
 2. Add support for Mac OS X file resource data to Unix port used for Mac OS
    X with changes in #if defined(UNIX) && defined(__APPLE__) blocks.
    Change parameter in newname() from isdir to flags.  Define isdir as
    (flags & FLAGS_DIR).  Define archive name and file system name pointers
    for AppleDouble.  Change ex2in() to use name_archv.  Add data_fork_only
    global.  Add check of f->flags and store f->flags in z->flags for UNIX
    APPLE.  Add FLAGS_DIR and FLAGS_APLDBL constants for AppleDouble.
    fileio.c, globals.c, zip.c, zip.h (SMS)
 3. Remove \t escapes for tabs from messages.  fileio.c, zip.c, zipcloak.c,
    zipfile.c, zipnote.c, zipsplit.c, zipup.c (SMS)
 4. Define ZIP_DLL_VERSION as VERSION.  revision.h (Christian)
 5. Add -FF bug to ToDo list.  TODO (Ed)
 6. Only include bzlib.h header file for VMS.  Provide prototype
    bz_internal_error() to avoid potential compiler warnings.  Change
    parameter for bz_internal_error() from errcode to bzerrcode to
    avoid conflict.  zbz2err.c (Christian)
 7. Add -df to help for UNIX APPLE.  Update -df option description.
    zip.c (SMS)
 8. Uncomment WINDLL retcode.  Use setjmp() only for WINDLL.
    zip.c (Christian)
 9. Fix bug where using native UTF-8 setting created a wrong central
    directory size in the End Of Central Directory record because
    tempzn was not updated when the standard name is replaced by
    the UTF-8 name.  zipfile.c (Ed)
10. Remove extra errbuf[] buffer to save 5000 bytes and help low
    memory ports.  zipsplit.c (Christian)
11. Include unix/macosx.h for UNIX APPLE.  Add buffer for
    AppleDouble header.  Define TRANSLATE_EOL that is defined as
    translate_eol_lcl for UNIX APPLE and translate_eol otherwise.
    Add AppleDouble header size to Appledouble resource fork file
    size.  Data for header and resource stored in "._" file.
    Always set AppleDouble files as binary.  Never translate
    AppleDouble files.  Use getattrlist() to get resource data.
    For file_read() supply fake file buffer data for AppleDouble
    to real buffer.  zipup.c (SMS)
12. Change filesize64 from _int64 to uzoff_t for WINDLL.  Set zipfile
    to y for ZLIB.  Delete unused unsigned u.  Add cast to zstrm.next_in
    and EOF.  zipup.c (Christian)
13. Update Acorn port.  Change 31 and 32 to MAXFILENAMELEN.  Update and
    fix gmakefile.  Update compilation instructions for gcc.  Remove
    instructions and add note referring to acorn/ReadMe to
    readme.gmakefile.  Remove MAXEXT.  Use MAXFILENAMELEN in setting
    dimension of canon and size.  In setfiletype() use MAXFILENAMELEN
    + 32 as dimension.  Initialize pref.  acorn/acornzip.c,
    acorn/gmakefile, acorn/readme, acorn/readme.gmakefile,
    acorn/riscos.c (Jeffrey Lee)
14. Define MAXFILENAMELEN as 1024.  Define DIR_BUFSIZE as MAXFILENAMELEN.
    Remove riscos_direntry structure.  acorn/riscos.h (Jeffrey Lee)
15. Update Obey file that sets up compilation.  acorn/runme1st (Jeffrey
    Lee)
16. Replace srcrename file with readable version.  acorn/srcrename
    (Jeffrey Lee)
17. Add support for no assembler and for tuning.  Add clean target.  Add
    zbz2err.o.  msdos/makebz2.dj2 (Christian)
18. Add support for no assembler and for tuning.  Add clean target.  Add
    zbz2err.o.  Update bzip2 support.  Use $<.  msdos/makefile.dj2
    (Christian)
19. Add support for no assembler and for tuning.  Add clean target.  Add
    zbz2err.o.  Update bzip2 support.  Use $<.  win32/makefile.dj
    (Christian)
20. Add support for no assembler and for tuning.  Add zbz2err.o.  Update
    bzip2 support.  Use $<.  Add targets for zipl.o, zipfilel.o,
    zipupl.o, fileiol.o, utill.o, globalsl.o, deflatel.o, treesl.o,
    crc32l.o, cryptl.o, ttyiol.o, zbz2errl.o, win32zpl.o, win32l.o,
    win32i64l.o, ntl.o, crci386l.o, matchl.o, api.o, windll.o,
    windllrc.o, example.o, and zip.exe.  Add compilation of example.c.
    Add compiling bzip2.  win32/makefile.gcc (Christian)
21. Add control of MATCH and CRC assembly.  Apply unfolding optimization
    as default.  win32/makefile.wat (Christian)
22. Add dependency on unix/macosx.h.  unix/makefile (SMS)
23. Include unix/macosx.h.  Add get_apl_dbl_info() for getting APPLE
    resource fork.  Process AppleDouble Finder info and resource fork.
    Use uname() for APPLE if available.  unix/unix.c (SMS)
24. Add note for ZLIB.  Add support for ZLIB for VMS.  Define IZ_ZLIB.
    Update say message.  Add code to find the ZLIB library.  Change cc
    from using /include to using /object.  Move logical name removal
    section.  vms/build_zip.com (SMS)
25. Instead of errcode use bzerrcode to avoid conflict.
    vms/bzlib.h (SMS)
26. Add note for ZLIB.  Add support for ZLIB.  vms/descrip.mms (SMS)
27. Update SEEK_BZ.  Update bzip2 and add zlib processing.
    vms/descrip_src.mms (SMS)
28. Better handle VMS dots.  vms/vmszip.c (SMS)
29. Update WINDLL C example.  Instead of including zipver.h include
    revision.h.  Change DLL name from ZIP32.DLL to ZIP32Z64.DLL.
    Remove ZIPSETOPTIONS as ZipSetOptions is no longer used.  Add
    usage message if less than 3 arguments.  Change COMPANY_NAME to
    IZ_COMPANY_NAME.  Remove check of ZipSetOptions.  Add memset for
    ZpOpt.  Set default compression level to 6.  Add ZpOpt as
    parameter to ZipArchive.  Drop BOOL cast from dwPlatformId.
    windll/example.c (Christian)
--------------------- September 7th 2008 version 3.1a02 ---------------------
 1. Debian patch 844_003 to fix spelling in manual.  man/zip.1, zip.txt
    (sanvila)
 2. Debian patch 5988_006 to change INSTALL_PROGRAM define to INSTALL for
    manuals.  unix/Makefile (sanvila)
 3. Unix Apple changes for Mac OS X to support Apple Double format including
    sequestered format.  Default is to save data fork and resources.  Add
    support for -df option to Unix Apple (as in Mac OS port) to only save
    data fork.  Allow -df to be negated.  Add new option -as to save in
    Apple sequestered format.  Add warning if use -df and -as together.  Add
    define for APL_DBL_PFX_SQR for sequester directory __MACOSX/.  fileio.c,
    globals.c, zip.c, zip.h, unix/macosx.h (SMS)
 4. Add note in manual that Mac OS X features are referred to as UNIX APPLE
    features.  Update -df and add -as.    man/zip.1 (EG)
--------------------- September 21st 2008 version 3.1a -----------------------
 1. Update README.  README (Ed)
 2. Update INSTALL.  INSTALL (Ed)
 3. Add Zip 3.1a announcement.  zip31a.ann (Ed)
 4. Update WHATSNEW.  WHATSNEW (Ed)
--------------------- February 5th 2009 version 3.1b01 -----------------------
 1. Move __EBCDIC define earlier to avoid problem in includes.  zip.h (Lutz)
 2. Move definition of isatty() to within ifndef MVS block as MVS seems to
    have a good isatty().  cmsmvs/cmsmvs.h (Lutz)
 3. Add error message when file open fails.  cmsmvs/mvs.c (Lutz)
 4. Fix bug in zipnote where undefined file x was being closed instead of
    in_file.  zipnote.c (Christian)
 5. Modify zip32z64 dll Options structure in backward-compatible way to permit
    additional encryption methods later.  Replace unused fSuffix in dll Options
    with fMisc, remove fUTF8_No and fUTF8_Native from the structure as they
    are not backward compatible, and add bits for suffices, no UTF8, and native
    UTF8 to fMisc.  Update fEncryption comment to note it means that encryption
    is compiled in.  api.c, api.h (Ed)
 6. Update to new 2009-Jan-02 license.  LICENSE, zip.h, revision.h (Ed)
 7. Add special character exceptions in is_text_buf() for binary for EBCDIC.
    util.c (Lutz)
 8. Add new -Y option for encryption method.  Not yet implemented.  zip.c (Ed)
 9. Update VBz64 example to use new fMisc.  windll/vbz64/vbzipbas.bas (Ed)
10. If USE_STATIC_LIB, avoid double defining of printf, fprintf, and perror.
    Change zfseeko and zftello to Win32 internal versions (though these are
    commented out currently because they are not compatible with older
    Win32 compilers).  Check if WinDLL functions lpZipUserFunctions->comment
    and lpZipUserFunctions->print are not NULL before using.  api.h, tailor.h,
    windll/windll.c (107E5eng)
11. New Unicode character set check that enables local character support first
    and then uses nl_langinfo() to see if already using UTF-8 as the character
    set.  Also added alternate fix for MAEMO OS.  zip.c (Danny Milosavljevic)
12. Numerous additional fixes for Acorn.  See
    http://www.riscos.info/cgi-bin/bugzilla3/show_bug.cgi?id=164.  Changes
    noted separately below. (John Tytgat)
13. Simplified rules (a bit modeled after the unix/Makefile).  Again use
    assembler files in acorn/match.s and acorn/sendbits.s like acorn/makefile
    and which results in a small speed improvement.  acorn/GMakefile (John
    Tytgat)
14. Select APCS-32 instead of APCS-R build.  Use C swiven version instead of
    assembler version.  Couple of cleanups.  acorn/makefile (John Tytgat)
15. Add GAS versions for GCCSDK 4 usage (ELF instead of AOF).  Simplified
    indirect variable loading.  Strict APCS-32 conformance instead of APCS-R.
    acorn/match.s, acorn/sendbits.s (John Tytgat)
16. Update ReadMe.  acorn/ReadMe (John Tytgat)
17. No longer use own typdef os_error but use kernel.h's _kernel_oserror.
    Cleanups.  Constify parameter pointers in swiven where it makes sense.
    Remove SWI_OS_FSControl_54() as it wasn't used.  Couple of register bits
    for _swiv() were wrong or could be better specified.  acorn/riscos.c,
    acorn/riscos.h, acorn/swiven.c, acorn/swiven.h (John Tytgat)
18. Comment out unused "argument files not enabled" message (which removes
    a compiler warning).  fileio.c (John Tytgat)
19. In ziptyp(), add q = q for RISCOS to avoid compiler warning on unused
    parameter.  zipfile.c (John Tytgat)
20. Delete assembler version of file.  This assembler version is obsolete
    and replaced by the C version acorn/swiven.c (without any noticable
    performance impact).  acorn/swiven.s (John Tytgat)
21. Delete binary file as this is superceeded by Jeffrey Lee's BASIC
    detokenized version acorn/srcrename.  acorn/srcrenameold (John Tytgat)
--------------------- February 19th 2009 version 3.1b02 -----------------------
 1. Change mbstowcs size parameter to use wide character count from
    previous call to fix bug that caused illegal memory access Win32 crashes
    when apparently illegal multi-byte strings were passed in.  fileio.c
    (kellner from forum)
 2. Update copyright date.  revision.h (Ed)
 3. Add items to TODO list.  TODO (Ed)
 4. Define ESCAPE_CHR for setting default escape character \ to ^ for
    VMS.  Use ESCAPE_CHR in isshexp() instead of \.  util.c (SMS)
 5. Add nl_langinfo() check that sets NO_NL_LANGINFO if it doesn't exist.
    In Unicode check, don't call nl_langinfo() if NO_NL_LANGINFO is set.
    unix/configure, zip.c (Ed)
 6. Change z->name to z->iname in check for directory, as z->name
    directories may not end in / on some OS.  Compare iname instead
    of zname in zqcmp() and zuqcmp().  zip.c, zipfile.c (SMS)
 7. Add cma$tis_vmserrno_get_addr define.  zip.h (SMS)
 8. Add comment to rqcmp() that this compare is used by trash().  Add
    note to zsearch() that 3 is unicode_mismatch which means ignore
    Unicode and that Unicode is not trusted yet for -FF.  zipfile.c (Ed)
 9. Add 4th parameter for IZ_ZLIB and 5th parameter for PROD (directory
    for production output).  Add check for valid C compiler.  Add
    support for zlib in IZ_ZLIB directory.  Add support for PROD
    directory.  unix/configure, unix/makefile (SMS)
10. Updates to VMS build procedure to add NOCOMPILE and NOEXE command
    line options and allow chosing of directory for output files.
    vms/build_zip.com (SMS)
11. For VMS add support for PROD=subdir and add CLEAN to CLEAN_ALL.
    vms/descript.mms  (SMS)
12. Add support for PROD and DEST_STD.  vms/descript_src.mms (SMS)
13. In vms_open(), reset ACL context before reading file ACL list.
    Change error handling to set appropriate errno and vaxc$errno
    values.  Change ACL reading from getting all and storing in
    buffer of 512 bytes that can be overrun in some cases to using
    allocated buffer and reading each ACL separately.  vms/vms_pc.c
    (SMS)
14. Update VMS command descriptions, including adding note about
    directories and adding note about ACL storage using -V and -VV
    or /VMS[=ALL].  Add note for /TRANSLATE_EOL.  vms/vms_zip.rnh,
    vms/zip_cli.help (SMS)
15. Add ", :, \, and | to char_prop table.  Update eat_carets() to
    better escape dots in names.  vms/vmszip.c (SMS)
16. Move main zip header include (api.h for api.c) in front of all
    system header includes, so that the system-specific config
    settings are applied before reading any system headers.
    api.h, windll/windll.c (Christian)
17. Synchronize scope specifier at def of ucs4_char_from_utf8()
    with scope specifier used in declaration to get rid of a compiler
    warning.  fileio.c (Christian)
18. Use Windows fseeki64() and ftelli64() beginning with Visual
    Studio 2005 (VC 8.0), the first version they are publicly defined.
    tailor.h (Christian)
19. Add some missing "const" modifiers to read-only string arguments
    of helper functions.  util.c, zip.h (Christian)
20. Add (char *) cast to isshexp() return.  Add (wchar_t *) cast
    to isshexpw() return.  Remove cast of isshexpw() parameter.
    Remove cast from isshexp() parameter.  util.c (Christian)
21. Add dll section accidentally left out in last beta.
    win32/makefile.gcc (Christian)
22. Adapt to Zip 3 (however, lcc-win32 does not (yet) work because
    of a K&R C misinterpretation).  win32/makefile.lcc (Christian)
23. Update comments.  win32/makefile.w10 (Christian)
24. Correct wrong positioned merges of previous updates.
    win32/makefile.wat (Christian)
25. Remove unsupported configuration option NOWIN98.  Add "out:"
    specification to dll link command.  Update clean target.
    win32/makefile.w32 (Christian)
26. Do not force NO_ASM for dll to allow build scripts to handle
    this setting.  win32/osdep.h (Christian)
27. Deactivate ftello/fseeko code when these functions are mapped
    to system-supplied calls.  Revise fseeko code to reset error
    flags correctly.  win32/win32i64.c (Christian)
28. Add comment regarding fseeki64() and ftelli64().
    win32/win32i64.c (Ed)
29. Add missing CP_UTF8 symbol definition for lcc-win32 compiler
    win32/win32zip.c (Christian)
30. Add compatibility defines for VC++ 8 and newer.  Add workaround
    for "printf" bug resulting in unresolved symbol at link time.
    Comment out fSuffix option struct member which is not yet
    implemented.  windll/example.c (Christian)
31. Add missing win32i64.c to list of source files.  Change settings
    to compile LIB library for multithreading projects (same
    configuration as the dll compilation).
    windll/visualc/lib/zip32z64.dsp (Christian)
32. Remove unused local variable zipfile.  zipup.c (Christian)
33. Create examples directory under windll to put all DLL and LIB
    examples.  Move example files to examples directory.  Create
    vb6 and vc8 directories under examples.  windll/examples,
    windll/examples/vc6, windll/examples/vc8, windll/examples/VB,
    windll/examples/VBz64 (Ed)
34. Create projects for vc6 DLL and LIB.  windll/examples/vc6/c_dll_ex,
    windll/examples/vc6/c_lib_ex,
    windll/examples/vc6/c_dll_ex/c_dll_ex.dsp,
    windll/examples/vc6/c_dll_ex/c_dll_ex.dsw,
    windll/examples/vc6/c_lib_ex/c_lib_ex.dsp,
    windll/examples/vc6/c_lib_ex/c_lib_ex.dsw (Ed)
35. Add vc8 LIB example.  windll/examples/vc8/c_lib_ex/,
    windll/examples/vc8/c_lib_ex/example.c,
    windll/examples/vc8/c_lib_ex/example.h,
    windll/examples/vc8/c_lib_ex/TestZip.sln,
    windll/examples/vc8/c_lib_ex/TestZip.vcproj (107E5eng from forum)
--------------------- February 27th 2009 version 3.1b03 -----------------------
 1. Add option -pp to specify a path prefix, but not implemented yet.  Add
    global variable path_prefix.  zip.c, globals.c, zip.h (Ed)
 2. Restore notice date.  revision.h (Christian)
 3. Add include <langinfo.h> for nl_langinfo().  tailor.h (SMS)
 4. Add check for UTF-8 locale when nl_langinfo() is not available to check
    for UTF-8 character set.  zip.c (Ed)
 5. Fix ODS5 Unicode comment.  vms/vmszip.c (SMS)
 6. Fix optional bzip2 support for dll build.  Add api.h to dll compile.
    win32/makefile.gcc (Christian)
 7. Fix example.exe build rules.  win32/makefile.gcc, win32/makefile.w32
    (Christian)
 8. Add missing "delete resource binaries" (*.res) command to clean
    target.  win32/makefile.wat, win32/makefile.w10 (Christian)
 9. Update description files.  zip.aps, ziprc (Ed)
10. Update windll/contents to document the current directory structure.
    windll/contents (Christian, Ed)
11. Change Visual C++ directory from visualc to vc6 to be consistent
    with adding vc8 projects.  windll/vc6 (Ed)
12. Remove duplicate structs.h from windll/examples subdirectory.
    windll/examples/struct.h (Christian)
13. Correct include directive for structs.h to point to the existing
    file.  windll/examples/example.h (Christian)
14. Correct target output directory and "structs.h" location in VC6
    example project files.  windll/examples/vc6/c_dll_ex/c_dll_ex.dsp,
    windll/examples/vc6/c_lib_ex/c_lib_ex.dsp (Christian)
15. Add lib_here.txt file to note where lib file goes.
    windll/examples/vc6/c_lib_ex/lib_here.txt (Ed)
16. Correct additional include dir specifications to relative path
    to remove references to specific directories.
    windll/examples/vc8/c_lib_ex/TestZip.vcproj (Christian)
17. Rename VC8 lib example TestZip project to c_lib_ex to match new
    structure of examples directory.  Instead of local example.h and
    example.c use common ones in windll/examples.  For now keep old
    ones as renamed files.
    windll/examples/vc8/c_lib_ex/c_lib_ex.sln,
    windll/examples/vc8/c_lib_ex/c_lib_ex.vcproj,
    windll/examples/vc8/c_lib_ex/example_old.h,
    windll/examples/vc8/c_lib_ex/example_old.c (Ed)
18. Add VC8 project for dll example.
    windll/examples/vc8/c_dll_ex/c_dll_ex.sln,
    windll/examples/vc8/c_dll_ex/c_dll_ex.vcproj (Christian)
19. Update VC8 readme.  win32/vc8/ReadmeVC.txt (Ed)
20. Add readme for WinDLL examples.  windll/examples/readmeex.txt (Ed)
21. Copy C-Sharp project from Zip 2.32.  Has not been updated for Zip 3.0
    yet.  windll/examples/csharp, windll/examples/csharp/readmecs.txt,
    windll/examples/csharp/zip, windll/examples/csharp/zip/,
    windll/examples/csharp/zip/app.ico, windll/examples/csharp/zip/zip.cs,
    windll/examples/csharp/zip/assemblyinfo.cs,
    windll/examples/csharp/zip/csharpinfozip_zipsample.csproj,
    windll/examples/csharp/zip/form1.cs,
    windll/examples/csharp/zip/form1.resx,
    windll/examples/csharp/zip/zipdllprintmessageeventargs.cs,
    windll/examples/csharp/zip/zipdllservicemessageeventargs.cs (Ed)
22. Add readme files for VC6 and VC8 projects.
    windll/examples/vc6/readmev6.txt, windll/examples/vc8/readmev8.txt,
    windll/vc6/readmev6.txt, windll/v8/readmev8.txt (Ed)
---------------------- March 17th 2009 version 3.1b04 ------------------------
 1. Add new -cd option as placeholder for a change directory command that
    changes the root directory for the zipping operation.  There could be
    complications, especially for split archives.  zip.c (Ed)
 2. Remove free() from option -pp command case.  zip.c (Ed)
 3. Implement -pp option.  In putlocal() and putcentral(), store path to
    write to header in new iname variable and length in nam.  If path_prefix
    not NULL, prepend to path.  zipfile.c (Ed)
 4. Add SYS$DISK: to link commands.  vms/build_zip.com,
    vms/descrip.mms (SMS)
 5. Update link commands to use /library.  vms/descrip.mms (SMS)
 6. Remove INCL_BIP2_M.  vms/descrip_src.mms (SMS)
 7. Remove references to [.VMS]00README.TXT and [.VMS]00BINARY.VMS.
    vms/install_vms.txt (SMS)
 8. Update note on determining symlink support to remove instructions
    for searching UnZip binary for symlink and instead note -v option
    for UnZip, as was already done for Zip.  vms/notes.txt (SMS)
 9. Remove stray ! from comment.  win32/makefile.gcc (Christian)
10. Remove old borland dll and lib from contents.  Note that
    16-bit Windows 3.x no longer supported.  windll/contents (Christian)
---------------------- March 28th 2009 version 3.1b05 ------------------------
 1. Make the args variable global so arguments can be freed by freeup() and
    when no longer needed, fixing memory leak.  globals.c, zip.h, zip.c
    (Polo from forum, Ed)
 2. Update comment in freeup().  Move freeing of allocated globals from
    finish() and ziperr() to freeup().  After tempzip is freed, set to
    NULL.  Initialize args to NULL.  zip.c (Ed)
 3. Free value after add_name() while processing command line to fix memory
    leak.  zip.c (Polo from forum)
 4. Move password key processing after log file opened so any errors get
    reported to log file if open.  zip.c (Ed)
 5. Add check for illegal characters in path prefix string.  Currently a path
    prefix must consist of alphanumeric characters (in the current character
    set, i.e. checked with isalnum()), with "!@#$%^&()-_=+/[]{}|" also
    allowed.  Also ".." is not allowed in the prefix string.  The filtering
    is to avoid security problems.  zip.c (Ed)
 6. Free args after last use.  zip.c (Polo from forum)
 7. Add option -MV to allow setting MVS file path translation and add new
    dots (no change) and slashes (convert all dots to slashes) modes.  Add
    new mvs_mode global.  globals.c, zip.h, zip.c, cmsmvs/cmsmvs.c  (wesclusa
    from forum, Ed)
 8. Pass Zip password (provided by -e or -P) to -T archive test option that
    calls unzip (or a user-provided command if -TT specified) so unzip can
    use same password to test archive.  Add {p} as placeholder for adding
    password to -TT string.  Update unzip_path note.  Update UnZip 6 note.
    zip.c (tkrueger from forum, Ed)
 9. Update description of patterns in extended help.  Update extended help
    for -T and -TT.  Add -pp (path prefix) and -MV (MVS path translation mode)
    to extended help.  zip.c (Ed)
10. Update note for multi-character option defines.  zip.c (Ed)
11. Add -aa (all-ascii) option for skipping binary check in is_text_buf(),
    forcing all files to be handled as ASCII text.  This is useful for EBCDIC
    translation (as for Z/OS), but made this global option in case there's
    some other use.  zip.c, zip.h, globals.c, util.c (Lutz from forum, Ed)
12. Add -HH option for extended help so help works even if there's case
    problems.  zip.c (Ed)
13. Update WhatsNew.  WHATSNEW  (Ed)
14. Update annoucement.  zip31b.ann  (Ed)
15. Drop new -cd option until details worked out.  zip.c (Ed)
----------------------- March 31st 2009 version 3.1b06 -------------------------
 1. Add missing local declaration for len in -T code.  zip.c (Ed)
 2. Update README.  README (Ed)
 3. Update tempzn byte count in putlocal() and putcentral() to fix path prefix
    bug.  zipfile.c (Ed)
 4. Add warning to -P option in extended help.  zip.c (Ed)
 5. Update INSTALL.  INSTALL (Ed)
 6. Update announcement.  zip31b.ann (Ed)
 7. Update TODO.  TODO (Ed)
------------------------ April 9th 2009 version 3.1b --------------------------
 1. Update manual to include new options -aa, -MV, and -pp.  Update
    descriptions of -T and -TT.  Update introduction section.  Updates for
    -w and -ww.  Additional minor updates.  man/zip.1, zip.txt (Ed, SMS)
 2. Update WhatsNew.  WHATSNEW (Ed)
 3. Update announcement.  zip31b.ann (Ed)
 4. Update TODO.  TODO (Ed)
------------------------ July 20th 2009 version 3.1c01 --------------------------
 1. Add -aa option to skip binary check.  Add global all_ascii. (Ed)
 2. Fixes to -aa and -MV options.  cmsmvs/cmsmvs.c, zip.c (Lutz)
 3. Use 64-bit zfseeko + zftello functions for large file support.
    cmsmvs/cmsmvs.c (RBW)
 4. Add missing } and fix mvs_mode 1 and 2.  cmsmvs/cmsmvs.c (Ed)
 5. Change file size parameter in filetime() from long to zoff_t
    to handle 64-bit values.  Add z/OS large file comment.  Add
    cast to -1 for file size.  Initial changes to support Zip
    64-bit calls, but some work still needs to be done.
    cmsmvs/cmsmvs.c (RBW)
 6. Prevent double define of EBCDIC.  cmsmvs/cmsmvs.h (RBW)
 7. Update MVS makefile to set compile options for large file support; change
    "$%" to "$@"; set maximum optimization option ("-O3").  Update compilation
    options to add large file support to z/OS.  Change infor.zip(zip) to
    infozip.load(zip).  cmsmvs/mvs.mki (RBW)
 8. Add comments.  cmsmvs/mvs.mki (Ed)
 9. Prevent display of garbage characters in filenames by skipping the attempt
    to render the low 32 unprintable characters as printable.  The technique
    does not work for EBCDIC.  Move display_string allocation to before use
    for EBCDIC.  fileio.c (RBW)
10. Set definitions needed for large file support under z/OS.  Add ifndef
    for _LARGE_FILES.  Enable 64-bit functions for z/OS.  tailor.h (RBW)
11. Create target for zos, which now works like the generic target; redirect
    the os390 target to the zos target.  unix/Makefile (RBW)
12. Detect z/OS or OS/390 system, and set appropriate flags; detect IBM C
    compiler and set maximum optimization level (this produced a 3-4x speedup
    in testing).  Add param.h to nonexistent include check.  Add SYSTEM check
    for OS/390.  unix/configure (RBW)
13. Guard against double define of _LARGE_FILES.  unix/osdep.h (RBW)
14. Fix compile error under z/OS.  zip.c (RBW)
15. Large file support fixes for z/OS.  zipfile.c (RBW)
16. Add README.zOS.  README.ZOS (RBW)
17. Add C++ EXPENTRY entries.  api.h.
18. Add free(z->oname) to newname() and newnamew() to fix memory leak.
    fileio.c
19. Add help for new -aa option for EBCDIC not CMS_MVS.  zip.c (RBW)
20. Add extended help for EBCDIC options -a and -aa.  zip.c (Ed)
21. Add temp debug output showing int sizes.  zip.c (RBW)
22. Add type cast to popen for ZOS.  zip.c (RBW)
23. Change add_filter() to always save the full path in ex2in() by
    setting pathput to 1 for just that call.  This should fix a
    problem where patterns are not matching stored paths when the
    -j option is used to strip the path.  zip.c (SMS)
24. Change -aa from global to only for EBCDIC as some problems on
    other ports and not needed except for EBCDIC.  (Lutz, Ed)
25. Finish implementing -aa option (after users reminded it wasn't).
    zip.c (Ed)
26. Change EBCDIC messages from using printf() to zipmessage() so
    message formats are standardized and logged (when logging
    enabled).  zip.c (Ed)
27. Add zoff_t cast to zfseeko() calls for z/OS (as it apparently
    needs them).  zipfile.c (RBW)
28. In readlocal(), initialize split_path to NULL and free it later
    if not NULL.  zipfile.c (Ed, Kamers)
29. Change warnings for "unable to seek in input file" errors to
    include a "(zf-0x) identifier so that the particular error can
    be determined.  zipfile.c (RBW)
30. In scanzipf_regnew(), add check for cd_total_entries rollover
    for archives from old zips that stored more entries than the old
    structure could hold without rollover.  This should fix problem
    where these archives were rejected as bad.  zipfile.c (Ed)
31. In zipcopy(), initialize split_path to NULL and free later if
    not NULL to fix memory leak.  zipfile.c (Ed, Kamers)
----------------------- August 15th 2009 version 3.1c02 -------------------------
 1. Update EXPENTRY entries for DLL to fix compiler problem in VC6.
    api.h (Ed)
 2. Add get_time_in_usec() to time zipping rate in microseconds.  Calls system
    function gettimeofday() to get usec time.  fileio.c, zip.h (Ed)
 3. Add globals display_time, display_est_to_go, display_rate, clocktime,
    start_zip_time, and current_time for new -dt, -de, and -dr options.  Create
    new define ENABLE_ENTRY_TIMING to enable usec timing if system supports it.
    zip.h, globals.c (Ed)
 4. Add -dt (--display_time), -de (--display_est_to_go), and -dr
    (--display_rate) options.  Add extended help for -dt, -de, and -dr.  Option
    -dt uses standard timing to second resolution, while -de and -dr use usec
    resolution to get better rate estimates.  zip.c (Ed)
 5. Update manual to include -dt, -de, and -dr options.  man/zip.1, zip.txt (Ed)
 6. In configure, if gettimeofday() and long long are supported, define
    ENABLE_ENTRY_TIMING to enable -de and -dr options.  unix/configure (Ed)
 7. Add sys/time.h include if ENABLE_ENTRY_TIMING is defined.  unix/unix.c (Ed)
 8. If LARGE_FILE_SUPPORT is enabled on Windows, define ENABLE_ENTRY_TIMING.
    Add replacement for missing gettimeofday() on Windows based on code from
    openasthra.com.  Define local version of get_time_in_usec() for Windows
    using local gettimeofday().  win32/osdep.h, win32/win32.c (Ed)
 9. Update formatting of VB example files.  Implement UTF8 options.  Comment
    out unimplemented fSuffix.  windll/examples/vbz64/vbzipbas.bas,
    windll/examples/vbz64/vbzip.vbw, windll/examples/vb/vbzip.vbw (Ed)
10. Add api.h and windll.h to dll project.  windll/vc6/dll/zip32z64.dsp (Ed)
----------------------- April 14th 2010 version 3.1c03 -------------------------
 1. Add Fedora stack markings patch (exec-shield.patch) to prevent stack from
    being executable, patch forwarded from Debian bug system.  See
    http://cvs.fedoraproject.org/viewvc//devel/zip/exec-shield.patch?view=markup.
    crc_i386.S, match.S (sanvila on forum, Kees Cook)
 2. Changed VMS wild() to avoid saving a user-specified version
    (";1") when the user-specified file is a directory.  vms/vmszip.c (SMS)
 3. Changed VMS deletedir() to use (complex) $QIOW code instead
    of (simple) system() with a "SET PROT" command, to eliminate annoying
    %SET-E-PRONOTCHG messages when SET PROT failed during "zip -m"
    directory deletions.  vms/vmszip.c (SMS)
 4. Add CRYPT defines around password code.  zip.c (SMS)
 5. Change instances of k used for comments to new comment_size with type
    extent.  zip.c (SMS, Ed)
 6. Remove extra comment introducer.  zipfile.c (SMS)
 7. Add wchar.h and wctype.h includes to wide character check code.
    unix/configure (SMS)
 8. Add checks for uname -m, uname -o, uname -p, uname -r, uname -s,
    and uname -v and pass back to main code for version information.
    unix/configure (SMS)
 9. Move __APPLE__ define.  Use UNAME defines.  unix.c (SMS)
10. Add include for incl_bzip2_m to link executable.  Include (GLOBALS).
    vms/build_zip.com, vms/descript.mms, vms/descript_src.mms (SMS)
11. Update handling of exit codes for VMS.  vms/notes.txt, vms/vms.c (SMS)
12. Define VAX Type-Cast to avoid compiler warnings.  vms/vmszip.c (SMS)
13. Comment out sys/time.h include because prevents compiling on Windows
    MSVS that does not have it.  fileio.c (Ed)
14. Update some copyrights to 2010.  revision.h (Ed)
----------------------- May 14th 2010 version 3.1c04 ---------------------------
 1. Format #if blocks to verify all blocks close in response to user question.
    zipfile.c (Ed)
 2. Update structure _ZpVer to include option structure ZPOPT size and a new
    string to provide a comma separated list of enabled features to the user,
    currently set to NULL.  Add comments.  Add DLL support for -Z compression
    method, by adding compression method name string to ZPOPT.  In ZPOPT change
    fMisc to fUnicode in ZPOPT structure, removing unused suffix flag.  Add 8
    long words of fluff at end of ZPOPT for future expansion.  All this makes
    this ZPOPT not backward compatible, but will allow backward compatible
    expansion in the future.  api.c, api.h (Ed)
 3. As Zip version is provided through Z_MAJORVER, Z_MINORVER, and Z_PATCHLEVEL,
    starting with Zip 3.1c, DW_MAJORVER, DW_MINORVER, and DW_PATCHLEVEL defines
    are frozen at 3, 1, and 0 (this version) unless the DLL interface changes
    in a way that is not backward compatible.  api.c, api.h, revision.h (Ed)
 3. If logfile is specified as "-", send log output to stdout.  Forces -q to
    avoid duplicate output to stdout.  Options -la (append to existing log)
    and -v (verbose) are not allowed, as output is determined by the logging
    code and the -li option.  Update -lf extended help.  zip.c (Ed)
 4. Update copyright date.  zip.h (Ed)
 5. If display_globaldots (-dg) is set, do not output a newline after each
    file in DisplayRunningStats().  This newline kept the dots from staying
    on the same line as intended.  zip.c (Ed)
 6. Clean up indentation of #if blocks.  zipfile.c
 7. Add Ignore_Export_Lib 0 for consistency.  win32/vc6bz2/zip.dsp (Ed)
 8. Add bzip2 enabled Windows DLL and LIB MSVS 6 projects.
    windll/vc6bz2/readmev6bz2.txt, windll/vc6bz2/dll/zip32z64.dsp,
    windll/vc6bz2/dll/zip32z64.dsw, windll/vc6bz2/lib/zip32z64.dsp,
    windll/vc6bz2/lib/zip32z64.dsw (Ed)
 9. Update install.txt to note added bzip2 DLL and LIB capability for
    Windows.  bzip2/install.txt (Ed)
----------------------- June 14th 2010 version 3.1c05 --------------------------
 1. Allow negating -j as replacement for -p.  Provide warning when -p used that
    it is deprecated.  Add note to extended help.  zip.c (SMS, Ed)
 2. Change | to & in UTF-8 option bit checks against fUnicode.  api.c (stu003
    from forum thread "Wrong interpreting the UTF-8 settings in api.c")
 3. Add ProgressReport callback to WinDLL, enabled by ENABLE_DLL_PROGRESS
    define.  Add szProgressSize to Options structure and use to set
    progress_chunk_size.  Add feature list string to pVersion callback.  Items
    in string are delimited by semicolons and have form ;xx; including first
    and last items.  Some items have lists of valid values, as with
    ";compmethods:store,deflate;" (compression method list when bzip2 not
    enabled).  Add globals bytes_read_this_entry, bytes_expected_this_entry,
    entry_name, progress_chunk_size, last_progress_chunk.  Progress report
    calculations in zipup(), file_read(), filecompress(), bzfilecompress().
    api.c, api.h, globals.c, zipup.c, win32/osdep.h (Ed) 
 4. Handle better bad compression level from DLL caller.  Add kluge around
    not being able to support compression level 0 directly from DLL call.
    Only allow fEncrypt flag to be 0 or 1.  Support separate ExcludeBeforeDate
    and IncludeBeforeDate.  Remove fTemp from Options structure and just check
    if szTempDir is NULL or empty instead.  Update comments.  api.c, api.h (Ed)
 5. Add comments.  crypt.c (Ed)
 6. Change vms_zip_command() to return unsigned int instead of ulg.  Related
    updates.  Add new file zip_cli.rnh.  vms/commandline.c, vms/zip_cli.cld,
    zip.h, vms/zip_cli.rnh (SMS)
 7. Update bzip2 install.txt to note WinDLL now supports.  bzip2/install.txt (Ed)
 8. Add note that readme file needs updating.  windll/windll.txt (Ed)
 9. Update WinDLL examples.  Resize VB example form.  Add ProgressReport
    callback to VB example and update to latest api structures.  Update VB
    form to display percent archive and entry completions in title bar.
    windll/examples/example.c, windll/examples/example.h,
    windll/examples/vb/readmevb.txt, windll/examples/vbz64/readvb64.txt,
    windll/examples/vbz64/vbzip.vbw, windll/examples/vbz64/vbzipbas.bas,
    windll/examples/vbz64/vbzipfrm.frm (Ed)
10. Copy old vbz64 to vbz54_30.  This will probably be deleted shortly.
    windll/examples/vbz64_30/readvbz64_30.txt,
    windll/examples/vbz64_30/vbzip.vpb, windll/examples/vbz64_30/vbzip.vbw,
    windll/examples/vbz64_30/vbzipbas.bas,
    windll/examples/vbz64_30/vbzipfrm.frm (Ed)
11. Add readcex.txt.  windll/examples/vc6/readcex.txt (Ed)
12. Update MSVS project.  windll/vcc6bz2/dll/zip32z64.dps (Ed)
----------------------- June 14th 2010 version 3.1c06 --------------------------
 1. Change incorrect bytes_read_so_far to bytes_so_far.  zipup.c (SMS, Ed)
 2. Delete zip_cli.rnh.  vms/zip_cli.rnh (SMS)
 3. Update Zip CLI help noting change from /JUNK to /NOFULL_PATH.  Add <NEXT>
    in many places.  vms/zip_cli.help (SMS)
----------------------- June 17th 2010 version 3.1c07 --------------------------
 1. Change incorrect bytes_read_so_far to bytes_so_far in filecompress() and
    bzfilecompress().  zipup.c (Ed)
 2. Change strftime() to sprintf() as older VMS does not support strftime().
    zip.c (SMS, Ed)
----------------------- June 21st 2010 version 3.1c08 --------------------------
 1. Add zero to day of display time -dt display.  zip.c (SMS, Ed)
 2. Add license version to license option output.  revision.h (Ed)
 3. Version ID file updated.  file_id.diz (Ed)
 4. Update Install information.  INSTALL (Ed)
 5. Update Readme.  README (Ed)
 6. Update TODO.  TODO (Ed)
 7. Update WhatsNew.  WHATSNEW (Ed)
 8. Add announcement file for Zip 3.1c.  zip31c.ann (Ed)
 9. Update WinDLL examples readme.  windll/examples/readmeex.txt (Ed)
10. Update C Sharp readme.  windll/examples/csharp/readmecs.txt (Ed)
11. Update C examples readme.  windll/examples/vc6/readcex.txt (Ed)
12. Update VC6 examples readme.  windll/examples/vc6/readmev6.txt (Ed)
----------------------- June 22nd 2010 version 3.1c --------------------------
 1. Include <sys/time.h> for Tru64 to define timeval.  fileio.c (SMS)
-------------------- September 14th 2010 version 3.1d01 -----------------------
 1. Add -lu option to store UTF-8 paths in the log.  Add global log_utf8.
    globals.c, zip.c, zip.h (Ed)
 2. Update extended help, adding -lu and updating -T and -UN options.  zip.c
    (Ed)
 3. Rename variable utf8_force to utf8_native, as this flag forces storage of
    UTF-8 in the main path field as happens when UTF-8 is native character set.
    globals.c, zip.c, zip.h (Ed)
 4. Instead of setting the UTF8_BIT for all entries needing Unicode when
    utf8_native is set, only set for new entries and keep setting of old
    entries.  Zero z->flg in zip.c and set UTF8_BIT there, instead of zeroing
    in zipup.c.  zip.c, zipfile.c, zipup.c (Ed)
 5. Move definition of UTF8_BIT from zipfile.c to zip.h to make global.  zip.h,
    zipfile.c (Ed)
-------------------- September 15th 2010 version 3.1d02 -----------------------
 1. Add missing UNICODE_SUPPORT ifdefs.  zip.c (SMS, Ed (EG))
-------------------- February 19th 2011 version 3.1d03 -----------------------
 1. Add clearerr() to clear EOF and error flags after initial checks looking
    for zip file end structures.  zipfile.c (Dennis LaBelle)
 2. Change stored folders to require Version Needed To Extract 2.0 as the
    AppNote requires instead of 1.0.  zipup.c (from Theo in forum thread
    "Compatibility - Folders Version Needed to Extract", EG)
 3. Add linker check to Unix configure script.  unix/configure (SMS)
 4. Add preliminary AES encryption (WinZip version).  Only AE-1 currently
    implemented, though AE-2 is a very simple addition (mainly involves
    how CRC is handled) and is planned for next beta.  Note that the
    function entropy_fun in crypt.c is currently only implemented for WIN32.
    Versions may be needed for each OS.  IZ_PWLEN increased from 80 to 256,
    allowing longer passwords to support stronger AES encryption.  Add
    globals encryption_method, aes_vendor_version, aes_strength,
    comp_method, force_ansi_key, key_size, zctx (encryption context),
    zpwd, zpwd_len, zsalt, zpwd_verifier, aes_rnp (random number pool),
    and auth_code.  Add AES Strong Encryption export control notice.
    Add CRYPT_AES to -v output.  Change -v standard encryption listing
    from "encryption" to "zip standard encryption".  Implement option
    -Y to set encryption method.  Add AES 128 and AES 256 methods.
    Though Gladman will also do AES 192, did not implement that at
    this time.  Force minimum of 16 characters for password when using
    AES encryption.  Add ZE_CRYPT error code.  All AES encryption in
    CRYPT_AES ifdef blocks.  Add CRYPT_AES_EF_TAG.  Add
    add_crypt_aes_local_extra_field() and add_crypt_aes_cen_extra_field().
    Make write_string_to_mem() global.  Save z->how in how so can update
    with AES compression method 99 later.  Small change to Version Needed
    To Extract warning.  Add expected_size for check to cover different
    encryption methods.  For AES encryption don't use extended header.
    crypt.c, crypt.h, globals.c, revision.h, zip.c, zip.h, ziperr.h,
    zipfile.c, zipup.c, win32/win32.c (EG)
 5. Add option -lF as shorthand for "-lf archive.log" where archive is the
    output archive name.  Add global use_outpath_for_log.  globals.c,
    zip.c (EG)
 6. Add option -pn to allow use of non-ANSI characters in password.  Default
    changed to only allow ANSI characters.  globals.c
 7. Update ToDo.  TODO (EG)
 8. Change GB to GiB and MB to MiB in extended help.  Add -Y, -lF, and -pn
    options to extended help.  zip.c (EG)
 9. Update entry timing to fix bug where timing is messed up after awhile.
    Not tested yet.  Types updated from int to uzoff_t.  Add check to
    keep bytes_to_go no smaller than 1.  Account for files_to_go when
    estimating time to go as listing files on console takes time.  Change
    how tmpres is assigned in gettimeofday(), though this function is no
    longer used.  Add new get_time_in_usec().  zip.c, win32/win32.c
10. Add to zipoddities() ver 45 to version check that complains when version
    is not supported.  zipfile.c (EG)
11. Add tradeoff comment for files that don't compress.  zipfile.c (EG)
12. Fix Win32 bytes security message so goes to console and log as requested.
    win32/win32zip.c (EG)
13. Added install readme to aes directory.  aes/installaes.txt (EG)
-------------------- April 20th 2011 version 3.1d04 -----------------------
 1. SunOS 4.x (like Tru64) needed <sys/time.h>.  New C macro HAVE_SYS_TIME_H
    replaces old Tru64 condition.  fileio.c, unix/configure (SMS)
 2. For operations with both input and output archives, temporary archive
    files could be created on the file system with the input archive instead
    of on that of the output archive, wasting time when the temporary archive
    needed to be copied (not renamed) to its destination, or causing I/O
    errors if the input archive was on a read-only file system.  Now instead
    of zipfile (input archive path) use out_path (output archive path) as
    base of temp path when out_path is different than zipfile.  New -sd
    diagnostic messages reveal more info on temporary files.  fileio.c,
    globals.c, zip.c, zip.h (SMS)
 3. GCC 2.8.1 on SunOS 4.1.4 wanted a declaration of strerror() when using
    our replacement strerror() function.  Changed UINT_MAX, ULONG_INT, and
    USHRT_MAX checks to drop UL on constants.  tailor.h (SMS)
 4. Use "uname" output for more system names.  unix/unix.c  (SMS)
 5. Expanded the VMS-specific errbuf[] buffer to accommodate longer messages
    or file names.  vms/cmdline.c (SMS).
 6. Add a ZCONST to the VMS-specific ziperr() declaration, to agree with
    the prototype in "zip.h".  vms/cmdline.c (SMS).
 7. VMS-specific tempname() improperly reused temporary archive names for
    split archives.  "ZI<process_id>.<serial>" replaces "ZI<process_id>.",
    providing multiple unique names when needed.  vms/vms.c (SMS)
 8. Replace stricmp() with strcasecmp().  zip.c (SMS)
 9. Change from NAM_STRUCT to NAMX_STRUCT.  Use NAMX_DNA_FNA_SET(fab).
    vms/vms.c, vms/vms.h, vms/vms_im.c, vms/vms_pk.c, vms/vmsmunch.c,
    vms/vmszip.c (SMS)
10. Disable the old "make some kind of mktemppath()" code, allowing temp path
    code later in file to do its job.  zip.c (SMS)
11. Move definition of variable how outside of ZIP64_SUPPORT block as needed
    by AES encryption even if not using ZIP64_SUPPORT.  zipfile.c (EG)
12. Define STRCASECMP() that resolves to stricmp() on Windows and strcasecmp()
    for other ports.  tailor.h, zip.c (EG)
-------------------- April 27th 2011 version 3.1d05 -----------------------
 1. Fix bug where standard encrypted entries were being marked as AES when
    AES entries were added.  Add encrypt_method to zlist structure.  zip.c,
    zip.h, zipfile.c, zipup.c (EG)
 2. Fix endian problems in AES source.  Need to report back the fixes to
    Gladman.  aes/aesopt.h, aes/sha1.c (SMS)
-------------------- May 5th 2011 version 3.1d06 -----------------------
 1. Make entropy_fun() in crypt.c (perhaps an example for other ports to
    reference) only applicable for WIN32 as some of the calls may only exist
    in WIN32, though similar calls exist on some other ports.  crypt.c (EG)
 2. Add PROTO and NO_PROTO support to aes_crypthead(),
    add_crypt_aes_local_extra_field(), add_crypt_aes_cen_extra_field().
    Split long prototypes on multiple lines.  crypt.c, zipfile.c (SMS)
 3. Fix spelling.  INSTALL, tailor.h, zip.c, macos/history.txt,
    msdos/osdep.h, novell/osdep.h, os2/osdep.h, proginfo/extrafld.txt,
    vms/vms.h (SMS)
 4. Remove #ifdefs from o_xx option definitions as it makes the list easier
    to read and they really don't do much.  zip.c (EG)
 5. Add -sd message after AES pool is initialized.  Keep track of how long
    AES random number pool takes to initialize and output time in message.
    zip.c (EG)
 6. Move VMS sys$ defines from zip.h to vms/osdep.h.  zip.h, vms/osdep.h (SMS)
 7. Change comp_method to z->how in AES extra field calls to fix bug where
    the wrong method was sometimes being stored in the extra field when the
    method changed from entry to entry.  Remove now unused comp_method.
    zipfile.c, globals.c, zip.h (EG)
 8. Comment out fflush(y) in zipup() as not sure why there.  zipup.c (EG)
 9. Update manual for Zip to list archive operation modes alphabetically.
    Clarify modes of operation.  Add --version option description.
    man/zip.1 (jaalto (from SourceForge Patch ID 3295707, et al.), EG)
10. Modify configure script to accept "var=value" parameters where var are
    CC, CFLAGS, AES, and so on in valid_vars list.  This replaces the
    positional parameters.  Add AES encryption support.  unix/configure (SMS)
11. Minor message wording changes.  unix/configure (EG)
12. Add compilation support for AES.  Add support for new configure
    parameters.  Remove generic_gcc target as now "generic CC=gcc" covers
    that.  unix/Makefile (SMS)
13. Add initial Unix version of entropy_fun() for AES encryption that tries
    to use the /dev/random or /dev/urandom devices or, failing that, uses
    a simple time and PID seed.  The random devices have not been tested
    for enough randomness on enough systems yet and the PID fallback
    should probably include some thread ID.  unix/unix.c (SMS)
14. Add VMS AES compile support.  vms/build_zip.com (SMS)
15. Add VMS AES options.  vms/cmdline.c, vms/zip_cli.cld (SMS)
16. Minor dependency updates.  vms/collect_deps.com (SMS)
17. Update for AES.  vms/descrip.mms, vms/descrip_deps.mms,
    vms/descrip_mkdeps.mms, vms/descrip_src.mms (SMS)
18. Add file to handle endian for AES.  vms/endian.h (SMS)
19. Add file to fix missing string.h include in AES source.
    vms/memory.h (SMS)
20. Add VMS version of entropy_fun(), with device_opcnt_bits()
    and device_opcnt_32().  vms.c (SMS)
21. Remove STRCASECMP code.  vms/vmszip.c (SMS)
22. Add VMS help for AES encryption.  vms/zip_cli.help (SMS)
-------------------- May 14th 2011 version 3.1d07 -----------------------
 1. Update encryption comments.  crypt.c (EG)
 2. Change CRYPT_AES define to CRYPT_AES_WG (AES WinZip/Gladman
    encryption.  crypt.c, globals.c, revision.h, zip.c, zip.h, zipfile.c
    zipup.c, unix/unix.cvms/build_zip.com, vms/vms.c (SMS, EG)
 3. Update note.  vms/descrip.mms (SMS)
 4. Isolate entropy_fun() for Win32 to just Zip (for now).  crypt.c (SMS)
 5. Update testp() and testkey() to be compatible with UnZip version.
    Add AES decryption.  crypt.c (SMS)
 6. Add some hex translations for GLOBAL keys.  crypt.c (SMS)
 7. Update decrypt() for UnZip to include AES.  crypt.c (SMS)
 8. Change RAND_HEAD_LEN constant to head_len variable to handle AES
    variable length header.  crypt.c (SMS)
 9. Change zoff_t to long in Trace() calls and remove fzofft formatting.
    crypt.c (SMS)
10. Change constant 2 to PWD_VER_LENGTH.  crypt.c (SMS)
11. Include aes/fileenc.h when USE_AES_WG set (for UnZip).  Add buffer
    size checks (for UnZip).  crypt.h (SMS)
12. Add new -pa (--prefix-added) option that works like -pp but only
    adds the prefix to new or updated entries.  Add global
    path_prefix_mode.  Add -pa to extended help.  globals.c, zip.c,
    zipfile.c (LynX, EG)
13. Remove aes/prng.h include and include aes/aes.h and aes/aesopt.h instead.
    zip.c (SMS)
14. Change version information standard encryption listing from "zip standard
    encryption" to CRYPT    (traditional (weak) encryption).  Drop crypt version
    date.  zip.c (SMS, EG)
15. Add new option -DI (--incremental-list) for a list of incremental archives
    that the entries of are to be skipped when creating a differential archive.
    Not yet implemented.  zip.c (EG)
16. Add AES Encryption endian check.  zip.c (SMS)
17. Add AES 256 minimum password length check.  zip.c (EG)
18. Add incompatible options check for AES and -X-.  Update -X and -V check
    warning to -X- and -V.
19. Update force_ansi_key comment.  zip.h (EG)
20. Update VMS_MSG_IDENT to V3.1-000.  Change COMPERR error message from
    "Not supported" to "Error in compilation options".  ziperr.h (SMS)
21. Change CRYPT_AES_EF_TAG to CRYPT_AES_WG_EF_TAG.  Don't set encryption
    method from read entries, just rely on copying AES extra field and
    header settings.  zipfile. (EG)
22. Always set z->encrypt_method for new entries.  zipup.c (SMS)
23. Add TRC flags.  vms/descrip_src.mms (SMS)
-------------------- June 8th 2011 version 3.1d08 -----------------------
 1. Re-sync crypt.c with UnZip.  See the UnZip 6.10c02 changes for
    crypt.c, but includes adding ef_scan_for_aes() and ef_strip_aes(),
    change USE_AES_WG to CRYPT_AES_WG, and updates to zipbare().
    crypt.c, crypt.h (SMS)
 2. Change CRYPT_AES_WG_EF_TAG to EF_AES_WG for UnZip-shared crypt.c.
    crypt.c, zipfile.c (SMS)
 3. Add AES encryption to ZipCloak.  Get and save local header offset for
    central directory.  crypt.c, zipcloak.c, unix/Makefile,
    vms/build_zip.com, vms/descrip_src.mms (SMS)
 4. Add line-length limit to password "line too long" error messages.
    ttyio.c (SMS)
 5. Add NO_EXCEPT_SIGNALS macro to allow easy disablement of the signal
    handler.  (Matches UnZip.)  zip.c (SMS).
 6. Change some explicit numeric constants for AES encryption to (named)
    macros.  Add AES192_OK to enable AES192 mode.  zip.c, zip.h, zipfile.c
    (SMS).
 7. Accurate password length check for all encryption methods.  ttyio.c,
    zip.c, qdos/qdos.c (SMS).
 8. Make UNIX- and VMS-specific entropy_fun() available for Zip and Zip
    utilities (for ZipCloak).  unix/unix.c, vms/vms.c (SMS)
 9. Move entropy_fun() for Win32 from crypt.c to win32/win32.c.  crypt.c,
    win32/win32.c (EG)
10. Changes to AES code.  aes/aes.h, aes/aescrypt.c, aes/aeskey.c,
    aes/aesopt.h, aes/aestab.c, aes/brg_endian.h (SMS)
-------------------- June 9th 2011 version 3.1d09 -----------------------
 1. Change encryption method constant to macros in note.  api.c (SMS)
 2. Additional encryption updates.  crypt.c (SMS)
 3. Set minimum AES 192 password size to 20 characters.  Define
    AES_MIN_ENCRYPTION and AES_MAX_ENCRYPTION for AES encryption checks.
    Change EF_AES to EF_AES_WG for consistency.  Change references to
    Standard encryption to Traditional encryption.  zip.c, zip.h,
    zipcloak.c (SMS)
 4. Define IZ_MIN() macro for implementing MIN.  Remove define from
    zipup.c.  zip.h, zipup.c (SMS)
 5. Include time.h for CRYPE_AES_WG.  Define IS_A_DIR macro that looks for
    an end "/".  Set default encryption method to TRADITIONAL_ENCRYPTION.
    Add AES random pool initialization.  *** there are (sometimes lame)
    reasons for why 32 or 1 are used ***  Set AES globals.  Exclude
    directories from encryption.  *** probably should also exclude soft
    links and maybe pipes too ***  zipcloak.c (SMS)
 6. Change CRYPT_AES_WG_EF_TAG to EF_AES_WG.  Use NO_ENCRYPTION.  zipfile.c
    (SMS)
 7. Change i < n to i <= n.  qdos/qdos.c (SMS)
 8. Update names of AES encryption methods to AES128, AES192, AES256 and
    TRAD.  Change AES to AES_WG.  Add AES192.  vms/cmdline.c,
    vms/descrip.mms, vms/descrip_src.mms, vms/zip_cli.cld,
    vms/zip_cli.help (SMS)
-------------------- June 12th 2011 version 3.1d10 -----------------------
 1. Clean up extraneous white space.  api.h (SMS)
 2. Fix bug in ef_strip_aes().  Minor ZipCloak fixes.  crypt.c (SMS)
 3. Enable AES192_OK by default if CRYPT_AES_WG is enabled.  zip.h (SMS)
 4. Change AES to AES_WG in list of valid vars user can set.  Include
    LOCAL_ZIP in CFLAGS.  Change use of AES to AES_WG.  unix/configure (SMS)
 5. Remove obsolete os390 target.  Add %_.o: %.c rule.  Change LIB_AES to
    LIB_AES_WG.  Update zipcloak$E changing OCRCTB to LIB_AES_WG.  Change
    AES to AES_WG.  Remove note regarding IBM OS/390 as well as os390: zos
    and zos: flags rules.  unix/Makefile (SMS)
 6. Change AES to AES_WG.  Update note to change AES to AES
    (WinZip/Gladman).  vms/build_zip.com (SMS)
-------------------- June 27th 2011 version 3.1d11 -----------------------
 1. Fix blanks.  api.h (SMS)
 2. Add start for using newer Gladman AES code.  New code sections in
    CRYPT_AES_WG_NEW ifdef blocks.  globals.c, zip.c, zip.h, zipup.c (EG)
 3. Fix "bug" where some zip file creator uses 0 in the total disks
    field of the End Of Central Directory Record to mean a total of 1
    disk.  This field has traditionally used 1 for 1 disk, where as
    disk numbers have started with 0.  The "fix" is to handle a 0 here as
    a 1.  If they put a 1 here for a 2 disk split archive, they're out of
    luck as we have no way to know if 1 is 1 or 2 without looking at the
    archive structure more closely.  It might be done by scanning through
    the central directory looking for what disk numbers are used, but that
    is a waste except for these misformed archives.  However, zip -F and
    zip -FF should account for the total disks count maybe being lower
    than it should be.  zipfile.c (EG)
-------------------- June 29th 2011 version 3.1d12 -----------------------
 1. Fix blanks.  Provided changes not applied to last beta correctly.
    api.h (SMS)
 2. Change include path from aes to aes_wg.  crypt.h (SMS)
 3. Updated traditional encryption readme for CRYPT 2.9.  README.CR (EG)
 4. Changes to INSTALL to add AES instructions.  INSTALL (SMS)
 5. Additional updates to INSTALL.  INSTALL (EG)
 6. Add AES encryption command line options and comments to ZipCloak.
    zipcloak.c (SMS)
 7. Update Zip manual page.  Minor changes for encryption, including AES
    encryption.  man/zip.1 (SMS)
 8. Add AES to ZipCloak manual page.  man/zipcloak.1 (SMS)
 9. Change aes directory name to aes_wg.  unix/configure, unix/Makefile
    (SMS)
10. Change #ifdef OS390 to $if defined(__MVS__) || defined(__VM__).
    unix/unix.c (Al Dunsmuir (AD))
11. Change aes to aes_wg.  Remove AES build restriction.  vms/build_zip.com,
    vms/descrip.mms, vms/descrip_deps.mms, vms/descrip_mkdeps.mms,
    vms/descrip_src.mms (SMS)
12. Update VMS install document to include AES.  vms/install_vms.txt (SMS)
13. Add support for p6 and p7 parameters.  vms/collect_deps.com (SMS)
14. Minor updates.  vms/osdep.h, vms/vms.c (SMS)
15. Update COMPERR error.  Add CRYPT error.  vms/zip_msg.msg (SMS)
-------------------- July 5th 2011 version 3.1d13 -----------------------
 1. Remove no longer needed files for AES from VMS.  vms/endian.h,
    vms/memory.h (SMS)
 2. Add new zos directory for z/OS and related ports.  Add scripts zcc and
    zld.  zos, zos/zcc, zos/zld (AD)
 3. "zip -z" mishandled comment input whose first line was blank.  Added
    first_line check to fix.  zip.c (SMS)
 4. Remove #ifdef AES192_OK and make 192 always available when AES_WG enabled.
    zip.c, zipcloak.c, vms/cmdline.c (SMS)
 5. Put aes_wg_opt_ver in CRYPT_AES_WG block.  Use aes_wg_opt_ver as version
    string.  Set aes_wg_opt_ver to include the IZ_AES_WG package version in
    "major.minor beta" form.  Also do endian check for new AES code.
    Consolidate code for current and new (not yet completed) AES versions.
    minor sd message updates.  zip.c (SMS)
 6. Remove globals aes_vendor_version and aes_strength.  Add defines for aes
    vendor version constants.  zip.h (SMS)
 7. Update AES to AES_WG.  Add support for WinZip AES AE-2, switching from
    AE-1 (with CRC) to AE-2 (without CRC, CRC set to 0) aes_vendor_version for
    small files under 20 bytes.  zipfile.c, zipup.c (SMS)
 8. Change references to original Zip encryption from "standard" encryption to
    "traditional" encryption.  In help, change compression method abbreviation
    from "mthd" to "cm" for consistency.  Update license.  vms/vms_zip.rnh,
    vms/zip_cli.cld, vms/zip_cli.help, vms/vms_zip.rnh, vms/zip_cli.cld,
    vms/zip_cli.help (SMS)
-------------------- August 5th 2011 version 3.1d14 -----------------------
 1. Fix whitespace.  api.h, fileio.c, acorn/swiven.c, acorn/swiven.h,
    novell/netware.c, novell/signal.c, vms/cmdline.c, vms/vms.c,
    vms/vmszip.c, win32/osdep.h, win32/win32.c (SMS)
 2. Minor comment updates.  Add int cast on IZ_MIN().  crypt.c (SMS)
 3. Update crypt version from 2.91 to 3.0.  crypt.h (SMS)
 4. Remove \t and replace with spaces.  revision.h (SMS)
 5. Fix zcrypt version check to handle version 3.0 and higher.  ttyio.c (SMS)
 6. Minor comment formatting.  zipfile.c (SMS)
 7. Add pragma pack(4) to 32-bit align attr_bufr_fndr and attr_bufr_rsrc for
    UNIX APPLE (Mac OS X) to fix bug reading resources.  zipup.c,
    unix/unix.c (SMS)
 8. Update IZ_AES_WG files to version 1.0 code.  aes_wg/iz_aes_wg.h,
    aes_wg/prng.c, aes_wg/pwd2key.c, aes_wg/readme_aes_wg.txt, aes_wg/sha1.c,
    aes_wg/usexport.msg, aes_wg/zip-comment.txt (SMS)
 9. Add new file cmsmvs.c.  cmsmvs/cmsmvs.c (AD)
10. Change VMS builders to generate module-ID link options file.
    vms/build_zip.com, vms/descrip.mms, vms/optgen.com (new),
    vms/zip.opt (removed) (SMS)
11. Change OS390 to ZOS_UNIX.  Change z/OS (and z/VM) UNIX control define from
    OS390 to ZOS_UNIX.  (Revision of change 3.1d12 #10, removing
    defined(__MVS___) || defined(__VM__).)  ebcdic.h, zip.c, zipup.c,
    unix/unix.c, unix/configure (AD)
12. Remove OS390 code cloned from unix.  atheos/atheos.c (AD)
13. Add z/OS UNIX README.  unix/README.zOS (AD)
14. Remove OS390 readme.  unix/README.OS390 (AD)
-------------------- August 10th 2011 version 3.1d15 -----------------------
 1. Add feature conditionality to optional keywords in the VMS command
    definition file.  Change the VMS builders to use CC /PREPROCESS_ONLY to
    process the new conditions.  vms/build_zip.com, vms/cppcld.com (new),
    vms/descrip.mms, vms/zip_cli.cld (SMS)
 2. Replaced bad-guess non-fix for the alignment/structure-packing problem
    which caused bad/spurious AppleDouble data to be archived on Intel
    Macintosh systems.  Moved the required #pragma directives from
    "unix/unix.c" to "unix/macosx.h".  unix/unix.c, unix/macosx.h (SMS)
 3. Add lzma/7zVersion.h include.  Add descriptions to version information
    items VMSCLI, VMS_IM_EXTRA, and VMS_PK_EXTRA.  Add LZMA_SUPPORT to
    version information.  Add Run "unzip" comments.  Add LZMA as compression
    option, though not yet implemented.  zip.c (SMS)
 4. Change printf(var) and putchar('\n') to printf("%s\n", var) to make some
    compilers happier.  Comment out CRYPT_AES_WG random number pool
    initialization timing.  zip.c (EG)
 5. Add LZMA compression support compilation code.  LZMA preparations.
    unix/configure, unix/Makefile, vms/descrip.mms, vms/descrip_deps.mms,
    vms/descrip_mkdeps.mms, vms/descrip_src.mms (SMS)
 6. Add and conditionally include keywords for BZIP2, LZMA, and CRYPT_AES_WG.
    vms/zip_cli.cld (SMS)
-------------------- August 11th 2011 version 3.1d16 -----------------------
 1. Remove bogus cmsmvs directory.  Redistribute files from cmsmvs to new zos
    and zvm ports and remove old cmsmvs directory.  Add initial versions of
    some zos and zvm files.  zos/cczip.job, zos/cmsmvs.job, zos/cmsmvs.h,
    zos/mvs.c, zos/mvs.h, zos/mki, zos/readme.mvs, zos/readme.mvs.le,
    zos/readme.zos, zos/zipname.zos, zos/zipup.h, zvm/cczip.exec, zvm/cms.c,
    zvm/cstat.h, zvm/mc.exec, zvm/pipzip.rexx, zvm/readme.cms, zvm/zip.exec,
    zvm/zip.makefile, zvm/zipcloak.exec, zvm/zipnote.exec, zvm/zipnote.exec,
    zvm/zipsplit.exec, zvm/zipvmc.exec (AD)
 2. Update white space formatting.  zip.c (SMS)
 3. Update README.  README (AD, EG)
-------------------- August 12th 2011 version 3.1d17 -----------------------
 1. Add LZMA compression.  cmdline.c (SMS)
 2. Remove old aes_wg_old directory.  aes_wg_old/* (EG)
 3. Rename aesnew directory to aes_wg_new.  aes_wg_new/* (EG)
 4. Add README to aes_wg_new.  aes_wg_new/README_aes_wg_new.txt (EG)
 5. Remove zip.opt as now generated.  vms/zip.opt (SMS)
 6. Initial update of README as start preparing for public beta release.
    README (EG, SMS)
-------------------- August 20th 2011 version 3.1d18 -----------------------
 1. Copy LZMA files to lzma directory from UnZip.  Implement LZMA compression
    in Zip.  Modify the LZMA files as needed to work with Zip.  lzma/Alloc.c,
    lzma/Alloc.h, lzma/LzFind.c, lzma/LzFind.h, lzma/LzHash.h,
    lzma/LzmaDec.c, lzma/LzmaDec.h, lzma/LzmaEnc.c, lzma/LzmaEnc.h,
    lzma/README_LZMA.txt, lzma/SzFile.c, lzma/SzFile.h, lzma/SzVersion.h,
    lzma/Types.h, lzma/orig/7zFile.c, lzma/orig/7zFile.h,
    lzma/orig/7zVersion.h, lzma/orig/LzFind.h, lzma/orig/LzmaEnc.c,
    lzma/orig/LzmaEnc.h, zip.c, zip.h, zipup.c (EG)
 2. Attempt to fix compiling issues with bzip2 in Win32.  Will pick up next
    beta.  zip.c (EG)
 3. Update extended help to add LZMA compression method and add comments on
    encryption.  zip.c (EG)
 4. Make file_read() global for LZMA.  Add NO_USE_WINDOWS_FILE to prevent
    use of Windows API in LZMA code and instead use generic calls and
    Zip file_read() and zfwrite().  zip.h (EG)
 5. Add new error code ZE_COMPRESS (22) for errors related to compression.
    ziperr.h (EG)
 6. Comment out local prototype for file_read().  Add header block for LZMA
    to top of file, with includes, error messages, and function definitions,
    though it maybe can be pruned a bit.  Set Version Needed To Extract to
    63 (6.3) for LZMA.  Add lzma_filecompress() for LZMA.  Add LZMAed
    percent message.  Comment updates for bzip2.  Add callback function
    lzma_progress_function() for LZMA to call each loop which is used to
    output progress dots for LZMA.  Add LZMA_Encode() as modified copy of
    LZMA version.  Set "LZMA level" = "Zip compression level" - 1.  Add
    compressed_size parameter to some LZMA calls to get compressed size out
    to Zip.  zipup.c (EG)
 7. Update LZMA README.  lzma/README_LZMA.txt (EG)
 8. Add vc6_bz2_lzma project for vc6, but doesn't work yet.  Only Windows
    project that compiles LZMA currently is the win32/vc6aes project.
    win32/vc6_bz2_lzma/*, win32/vc6aes/zip.dsp (EG)
-------------------- August 22nd 2011 version 3.1d19 -----------------------
 1. Add -sF option to add information to -sf listings.  Only option value
    implemented currently is usize to add uncompressed size of files from
    file system scan.  Add sf_usize global.  Update extended help for -sf.
    Update comment for DisplayNumString().  globals.c, zip.c, zip.h,
    util.c (EG)
 2. Change i and b in union used for endian check to unsigned.  zip.c (SMS)
 3. Update LAST_KNOWN_COMPMETHOD to account for LZMA.  Avoid defining
    _7ZIP_ST if defined.  zip.h (SMS)
 4. Rename file_read() to iz_file_read() to avoid conflict with LZMA
    File_Read() on ports where function names are not case sensitive.
    zip.h, zipup.h, zipup.c, lzma/SzFile.c (SMS)
 5. Change lzma_propertied_header from byte to unsigned char.  zipup.c (SMS)
 6. If INCLUDE_LZMA_AS_SOURCE defined then include zip.h as ../zip.h.  Add
    INCLUDE_LZMA_AS_SOURCE to VC 6 project file.  lzma/LzmaEnc.c,
    lzma/SzFile.c, lzma/SzFile.h (EG)
 7. Change compressed_size from UInt64 to zoff_t.  lzma/LzmaEnc.c (SMS)
 8. Formatting changes.  lzma/LzmaEnc.h (SMS)
 9. Change <> to "" for aes_wg/aes.h and lzma/LzmaEnc.h includes.  Add
    typedef int zoff_t to LZMA test.  unix/configure (SMS)
10. Change 7zFile to SzFile.  unix/Makefile (SMS)
11. VMS updates for LZMA and AEG_WG.  vms/build_zip.com,
    vms/descrip_deps.mms, vms/descrip_src.mms, vms/install_vms.txt (SMS)
12. Initial updates to VC 6 project for compiling LZMA.  win32/vc6aes (EG)
-------------------- September 18th 2011 version 3.1d20 -----------------------
 1. Add section on LZMA compression to installation procedures.  Minor
    formatting changes.  INSTALL (SMS)
 2. Change install_vms.txt to INSTALL_VMS.txt.  bzip2/install.txt (SMS)
 3. Move zip.h include before other includes so port settings are available.
    lzma/LzmaEnc.c (SMS)
 4. In the VMS CLI, /ZIP64 is now negatable (/[NO]ZIP64), like -fz, and
    the help is now less inaccurate.  Add VMS support for new -sF (-sf list
    output contents) option.  vms/cmdline.c, vms/zip_cli.cld,
    vms/zip_cli.help (SMS)
 5. Add section on LZMA compression.  vms/install_vms.txt (SMS)
 6. Minor change in LZMA description.  vms/zip_cli.help (EG)
 7. Include <mbstr.h> if HAVE_MBSTR_H is defined.  Only define MBSCHR()
    and MBSRCHR() if not already defined.  tailor.h (AD)
 8. Restructure unix build; restructure, document, reorganize; recognize IBM
    compilers (z/OS, z/VM, AIX, Linux. iSeries); recognize z/OS system (uname
    -I variant); add $PROD/flags_bz to support BZip2 compilation; support
    build with system zlib or zlib in zip source tree; support man page and
    doc (plain text versions of man pages) generation; redirect man page
    output to a new manl directory; extensively add symbols defining various
    build variables; generate BINDIR, BINPERMS, MANEXR, MANDIR, MANPERMS
    flags; generate -Tascii man page nroff option; rename flags like CFLAGS to
    CF to match how UnZip names them; add UnZip flags so that the same basic
    stripts can be used for UnZip as well with less modification; define
    OSDEP_xx flags for OS dependent source and object files; update assembler
    sections; add flags for extensions of executables (PGMEXT) and DLLs
    (DLLEXT); add flags for RANLIB, RM, LN, and AR (required by IBMLXC for AIX
    64-bit compiles); update library dependencies for AES_WG, LZMA, BZIP2, and
    ZLIB; add AF for assembler flags; support compiler listing options; make
    cleanup consistent between Zip and UnZip; make all targets explicit for
    portability; on z/OS and AIX (XL C) use CC=c89; change to UnZip
    nl_langinfo() test; add tests for sys/param.h, sys/time.h, sys/timeb.h,
    and utime.h; set z/OS linker flags; add PORT param to unix/configure; add
    -DBZ_NO_STUDIO to BZip2 build so BZip2 configured correctly for use; add
    -D_FILE_OFFSET_BITS=64 and -D_LARGE_FILES to BZip2 build if large files
    enabled; add -Wc,'target(zOSV1R10)' to support that oldest supported
    release; add -D_XOPEN_SOURCE and -D_XOPEN_SOURCE_EXTENDED=1; eliminate
    extraneous trailing white space; generate -DHAVE_WCHAR_H if check finds
    <wchar.h>; for flags_bz, AR value omits cq flag (in Makefile); and update
    Makefile "all", "help", and "list" targets.  unix/configure,
    unix/Makefile (AD)
 9. Correct z/OS build script options parsing.  zos/zcc, zos/zld (AD)
10. Add z/OS wrapper script for C preprocessor tests.  zos/zccp (AD)
11. #include <mbstr.h> if HAVE_MBSTR_H is defined.  tailor.h (AD)
12. Change manl to manout as the man output directory (as manl could be
    confused with man1); minor documentation updates; output plain text
    man pages to top directory for backward consistency; other minor changes.
    unix/configure; unix/Makefile (EG)
13. Add note about GETNAM_MAX.  Add GETNAM_MAX error if name too long.
    fileio.c (EG)
14. Add note about LZMA compression.  Rename install_vms.txt to
    INSTALL_VMS.txt. (SMS, EG)
15. Update readme for zcrypt 2.9 used to add traditional encryption to old
    releases.  readme.cr (EG)
16. Add initial attempt at incremental archive option -DI by adding new list
    apath_list and pointer last_apath, adding add_apath() to add a path to the
    linked list, add read_inc_file() to read in entries from an incremental
    archive.  This option is unfinished and should not be run.
    zip.c, zip.h, zipfile.c (EG)
17. Add additional clarification of use of two-character options to extended
    help.  zip.c (EG)
18. Add lzma_opt_ver and crypt_opt_ver for LZMA and CRYPT version information
    to be consistent.  zip.c (EG)
19. Add new option --show-parsed-command (no short option) to show the command
    line after get_option() parses it.  zip.c, zip.h (EG)
20. Add option -cd to change root zipping directory, but not yet implemented.
    zip.c (EG)
21. Add initial implementation of -@@ option that reads names the same as -@,
    but from the given file instead of stdin.  Define o_atat for the option
    and add names_from_file to flag if names are being added from a file using
    -@@.  Names are read in while the option is being processed, but names are
    not processed until the command line is processed.  Update extended help
    for -@ and -@@.  Modify command line check to allow --show-files to show
    names read in from -@@ files.  zip.c (EG)
22. Move some of the command line checks earlier where possible so Zip can
    exit sooner if there is a problem.  zip.c (EG)
23. Always define _7ZIP_ST to allow combining of projects in MS VC.
    zip.h (EG)
24. Change messages from suggesting -fz- to suggesting --force-zip64- to avoid
    short option misinterpretations.  (Plan is to add a workaround to avoid
    this situation in the next beta.)  zipfile.c (EG)
25. Update PKZip licensed feature note.  Add CRYPT_AES_WG note.
    zipfile.c (EG)
26. Move zip.h include above other includes.  lzma/lzmaenc.c (SMS)
27. Add ifndef ZLIB_H to prevent redefinition of Byte.  lzma/types.h,
    lzma/orig/types.h (SMS)
28. Add NO and USIZE in /SHOW.  vms/cmdline.c, vms/zip_cli.cld,
    vms/zip_cli.help (SMS)
29. Minor updates.  Add LZMA compression description.
    vms/INSTALL_VMS.txt (SMS)
30. Add LZMA compression to help.  vms/zip_cli.help (SMS)
31. Update help to note that LZMA compression currently does not switch over
    to store if a file does not compress.  Update help to note that -fz-
    (--force-zip64-) prevents the use of Zip64 and zip will exit with an error
    if Zip64 is actually needed.  vms/zip_cli.help (EG)
32. Add LZMA Debug and Release targets.  win32/vc6/zip.dsp,
    win32/vc6aes/zip.dsp (EG)
33. Update README.  README (EG)
-------------------- September 22nd 2011 version 3.1d21 -----------------------
 1. Update comments.  Add documentation for unix-hosted builds of other ports.
    Remove unused OSDEP_C and OSDEP_S parms/values.  Add unix/macosx.h to
    OSDEP_H if Darwin.  Add NULL defaults for variables PORT, AES_WG, LZMA,
    IZ_BZIP2, and IZ_ZLIB.  Update MANTAB to default to '-Tascii'.  Change
    q_parms to C_PARMS and rearrange parms slightly.  Update CFLAGS_OPT for
    IBM z/OS XL C, using -Wc and suppress() and adding aggr and expmac.  Add
    autodetection for DJGPP and Cygwin.  Add port-specific customizations
    section where OSDEP_H, OSDEP_OC, OSDEP_OS, PGMEXT, and DLLEXT are set for
    cross compilation targets.  Add FIX_ME comment for assembler code.  Change
    aes_wg to lzma in LZMA check.  Add checks for ctype.h and wctype.h, setting
    -DHAVE_CTYPE_H and -DHAVE_WCTYPE_H as appropriate.  Add checks for
    towupper() and towlower().  Add date to top.  unix/configure (AD)
 2. Change OPTS to work with spaces represented by '^' for compilers that do
    not have __STDC__ defined by default.  Remove double quotes around
    -Aa^-D_HPUX_SOURCE.  unix/configure (SMS)
 3. Add cross-compilation comments.  Switch to if [] tests in places.  Changes
    to work with updated unix/configure.  Add date to top.  unix/Makefile (AD)
 4. Additional comment and formatting updates.  Minor changes.  unix/configure,
    unix/Makefile (EG)
 5. Add zlib LIBZ.OLB to LINK commands for utility programs which couldn't
    find CRC32 when using zlib.  vms/descrip.mms (SMS)
 6. Add conditional definition of new HAVE_WCHAR_H macro.  vms/osdep.h (SMS)
 7. Revise some Unicode-related conditions to accommodate SunOS 4.1.4.
    tailor.h (SMS)
 8. Add (char **) type casts for malloc() and realloc().  zip.c  (SMS)
 9. Remove -Ae option from HPUX test.  unix/configure (SMS)
10. Fix problem where langinfo.h is not available in Win32 but needed in
    Unix.  Add note regarding needed fixes for Unicode.  tailor.h (EG)
11. Update NO_NL_LANGINFO indentation.  zip.c (EG)
12. Add "Generating flags..." message at the top of configure.  Output
    "Standard Unix target" if not cross compiling.  Add note where need more
    work on Unicode testing.  Add towupper(), towlower(), and iswprint() to
    Unicode test, so missing any of these prevents enabling UNICODE_SUPPORT.
    Add HAVE_ to have towupper(), towlower(), and iswprint() defines.
    unix/configure (EG)
13. Add new clean_docs target to just clear out the doc files zip.txt,
    zipcloak.txt, zipnote.txt, and zipsplit.txt.  The user should not need
    this as the plain text manuals should be in the distribution.  Move
    the plain text manuals to root where they traditionally have been.
    Rename target from generic_doc to generic_docs.  Add some white space.
    unix/Makefile (EG)
14. Update plain text manual rules.  Recreate plain text manuals.
    unix/Makefile, zip.txt, zipcloak.txt, zipnote.txt, zipsplit.txt (EG)
15. Include "Last update:" for date at top.  Update cross compilation
    comments.  unix/configure (EG)
16. Include "Last update:" for date at top.  Update cross compilation
    comments.  Update option descriptions so they are more overviews and
    not install instructions, which are in other documents.
    unix/Makefile (EG)
-------------------- November 6th 2011 version 3.1d22 -----------------------
 1. Add Special Note for HP-UX defective mkstemp() that can't handle large
    files.  Looks fixed in 11.31 and later versions.  Document NO_MKSTEMP
    macro for use on Unix systems where mkstemp() is broke.  INSTALL (SMS)
 2. Add support for NO_TRADITIONAL_CRYPT that disables traditional zip
    encryption while leaving the strong encryption options enabled (if
    available).  zip.c (EG)
 3. Minor updates to ToDo list.  TODO  (EG)
 4. Add parentheses around "c = path_prefix[i]" to make LLVM Clang compiler
    happy.  zip.c (AD)
 5. Updated comment regarding Unicode locales.  zip.c (EG)
 6. Add support for new HAVE_HEADER_H symbols, including whatever includes
    were needed to support wide characters.  Remove NO_LANGINFO symbol.
    Add placeholder comment for defining substitute functions for those
    needed for MBCS but not provided by the OS, in the hopes that such
    additions will be enough to get MBCS suppport sufficiently working.
    tailor.h (AD)
 7. Change header to reference Zip 3.1 instead of Zip 3.  [This will likely
    get changed back to Zip 3 as this reference is to distinguish between
    threads (Zip 2.x versus Zip 3.x) rather than indicate which beta it
    goes with, which would require updating files in later versions even
    if Zip 3.2 did not change this file, which has not been the group
    policy. - EG]  Add additional "zip -v" compiler information for
    MINGW64, MINGW32, LLVM (Clang, Apple, and GCC), PCC (Portable C
    Compiler), PATHCC (EKOPath C Compiler), and Intel C Compiler.  Include
    GNUC Patch Level if GNUC_PATCHLEVEL is defined.  Add "Cray" to Cray
    version output.  Break out IBM XL C for Linux, IBM XL C for AIX,
    IBM z/OS XL C, IBM XL C for z/VM, and IBM ILC C for iSeries as distinct
    compilers in version information.  If MVS or VM and have additional
    information from uname, then list it.  Separate out IBMC as separate
    compiler name.  Update to NX_CURRENT_COMPILER_RELEASE compiler_name
    format.  unix/unix.c (AD)
 8. Update to comments.  Specify that first parameter must be name of XL
    C compiler driver program (cc, c89, xlc, xlc_64,etc.).  When not -o
    but -c then source file name is extracted from -c option parameter
    and object file directory (if any) and base name determined.  Add
    additional option cases for I, D, W, q, L, and *.
    zos/zcc, zos/zld (AD)
 9. Minor comment updates.  Remove MANTAB variable.  Remove -DUNIX from
    CFLAGS and CFLAGS_BZ.  Change -cq to cq in AR variable.  Update
    comments for PORT_SPEC (set to E when PORT=port is used).  Add note
    that SIZER_V is used for Tru64 and relatives in Query for system
    identification section.  Change "kernel name:" to "OS name:" for
    initial configure script echo (as looks better, though technically
    this is inaccurate).  Add quotes around ${CFLAGS_OPT_TRY}.  Note
    that CFLAGS_OPT is empty if a lame bundled compiler is recognized.
    Add MINGW64 test.  Add note referring to HP-UX versions below 11.31
    and use of -DNO_MKSTEMP.  Add tests for MINGW32, llvm, clang, and
    APPLE_CC.  Add tests for PCC, EKOPath C, Intel C, GNU C for OS/X
    Darwin, and GNU C for AIX.  For TOS_LINUX, restructure CC_TST,
    CFLAGS_OPT, and CFLAGS_TST assignments.  Handle case where PPC and
    AIX defined together.  If, after all the checks, target port is
    "unix", add in "-DUNIX" to CFLAGS and CFLAGS_BZ.  Update settings
    to include settings CFLAGS, CFLAGS_BZ, OSDEP_H, OSDEP_OC, OSDEP_OS,
    PGMEXT, and DLLEXT for each PORT.  Remove ANSI options check and
    attempt to enable ANSI prototypes if present.  Set HP-UX "C/ANSI C"
    compiler options explicitly.  Use _AIX for AIX recognition.  Add
    comments about the HAVE_HEADER_H, HAVE_DIR_HEADER_H, NO_HEADER_H,
    NO_DIR_HEADER_H, FUNCTION=function, and NO_FUNCTION macros.  Check
    for <ctype.h>, <wctype.h>, <langinfo.h>, and <locale.h>.  Add
    checks that set HAVE_ macros.  Correct HAVE_$func to $func defines
    where have a function.  Update wide character check to use the
    various headers.  Add note to remove langinfo.h after all NO_LANGINFO
    uses are removed.  Remove MANTAB code as not used.  unix/configure
    (AD, SMS)
10. Update comments regarding target ports and cross compilation.  Minor
    formatting and text changes to help message.  Changes to OS Dependent
    files comments.  Remove MANTAB.  Minor changes to cross compiling and
    port comments.  Other minor comment and output formatting changes.
    unix/Makefile (AD, SMS)
-------------------- February 5th 2012 version 3.1d23 -----------------------
 1. Add macro define CRYPT_TRAD to enclose traditional encryption code.
    Leave open what to do if "impossible happens" and CRYPT_TRAD is not
    defined but something is needed.  Only define crypt_opt_ver if
    CRYPT_TRAD defined.  These changes support including strong encryption
    while leaving out TRADITIONAL (weak) encryption.  Replace CRYPT with
    CRYPT_TRAD in places.  Break global CRYPT sections down to allow
    disabling just TRADITIONAL crypt code.  Minor update of
    currently unused CRYPT_AES_NEW section.  Update -Y option to use
    CRYPT_TRAD.  crypt.c, zip.c (SMS)
 2. Changed NO_TRADITIONAL_CRYPT processing to make defining
    NO_TRADITIONAL_CRYPT with no other (AES_WG) encryption enabled
    equivalent to defining NO_CRYPT.  If NO_TRADITIONAL_CRYPT is not defined,
    define CRYPT_TRAD.  crypt.h, zip.h (SMS)
 3. Reformed the error message emitted when ZipCloak is built without any
    encryption support.  Writing the message to an uninitialized-variable
    file pointer ("mesg") tended to cause the message to be lost, possibly
    with a program failure ("Segmentation fault (core dumped)").  Made the
    NO_CRYPT dummy functions/variables (which are unnecessary on VMS)
    conditional on the OS.  Added dummy functions for rename_split(),
    set_filetype(), zipmessage(), zipmessage_nl().  Trimmed unused
    content from options[].  Changed the NO_CRYPT exit status from 1 to
    ZE_COMPERR.  Changed the "ZipCloak special compilation options" list
    in in the "-v" report to show accurate encryption options, plus
    LARGE_FILE_SUPPORT and ZIP64_SUPPORT, as appropriate.  Changed the
    "-h" help text for the "-Y" option to show only the excryption methods
    enabled in the program as built.  zipcloak.c (SMS)
 4. If ENABLE_USER_PROGRESS defined, include progress globals u_p_phase,
    u_p_task, and u_p_name.  Add globals_dummy() for VMS to handle a
    linking problem.  Add USER_PROGRESS_CLASS that is set to extern if
    VMS, otherwise local.  Define user_progress().  Include pointless
    globals_dummy reference to ensure linking.  If VMS, define
    establish_ctrl_t(), otherwise use signal().  globals.c, zip.c,
    zip.h (SMS)
 5. Changed copyright[] text to quote "-L" only on VMS.  revision.h (SMS)
 6. For non-VMS, remove quotes around "-L" in copyright notice.
    revision.h (SMS)
 7. Small commented code reformatting.  tailor.h (SMS)
 8. Add PPMD_SUPPORT macro define for PPMD compression method and apply
    in many places similar to LZMA_SUPPORT.  Add PPMd compression to
    extended help.  Add ppmd_opt_ver for version information.  zip.c (SMS)
 9. Changed open-fail "zip warning:" message to include the file name, even
    when "-q" is in effect.  New function: zipwarn_unc().  zip.c (SMS)
10. Add zipwarn_i() that allows controlling indentation on console and in
    log file.  Define zipwarn_indent() as shortcut for zipwarn_i(1, a, b).
    zip.c (SMS)
11. Print additional blank line after version information and before the
    environment information.  zip.c (SMS)
12. Add o_si define for new show process ID option -si (--show-pid).  If
    not VMS, add command line option case o_si that sets show_pid = 1.
    Print PID if show_pid set.  zip.c (SMS)
13. Disable -e (--encrypt) and -P (--password) if CRYPT not defined.
    Disable -Y (--encryption-method) if CRYPT not defined.  zip.c (SMS)
14. Add "encryption (-e) not supported" error, though if the -e option
    should not exist if encryption not defined and so may never get here.
    Same for "encryption (-P) not supported" message.  Maybe also for
    "encryption (-Y) not supported" message.  zip.c (SMS)
15. Add more code to the -Z option cases to handle additional choices
    and messages created by adding PPMd compression.  zip.c (SMS)
16. If ENABLE_USER_PROGRESS set, set u_p_phase and u_p_task as step
    through the various steps.  Set u_p_name to z->oname of file being
    processed.  zip.c (SMS)
17. Use zipwarn_indent() to format warnings.  zip.c (SMS)
18. Add user_progress() function to output progress messages.  For VMS,
    Ctrl-T is used to signal desire to output progress message.  For other
    ports, a command like the following, issued in a separate process, may
    be needed:
      kill -USR1 <pid>
    (Hence the new "-si" option, to provide the victim with the PID value
    to use in his "kill -USR1" command.)  Alternatively, this might be
    set up for each port in code so a keystroke does it.  VMS shows the
    DECnet/cluster node name and terminal device name as below:
    ALP::_FTA81: 16:26:15   (DCL)   CPU=00:00:00.35 PF=778 IO=1318 MEM=115
    It seemed reasonable to retain the general format on non-VMS systems.
19. If no crypts, define NO_CRYPT.  Define PPMD as method 98.  Set
    LAST_KNOWN_COMPMETHOD to account for new PPMD method.  zip.h (SMS)
20. If CRYPT_AES_WG, include aes/iz_aes_wg.h.  If VMS, include reference
    to globals_dummy().  Update to account for CRYPT_TRAD.
    Add aes_gw_opt_ver[] and crypt_opt_ver[].  Add information to
    version_info().  Replace old "[encryption, version ...]" message.  If
    VMS, add pointless globals_dummy().  Update no CRYPT section.  Add
    do-nothing functions for the following to quiet compilers when no CRYPT
    used: rename_split(), set_fieltype(), ziperr(), zipmessage(),
    zipmessage_nl(), and zipwarn().  Update no CRYPT main().  zipcloak.c (SMS)
21. Check if UTIL defined before defining it.  Add reference to globals_dummy().
    zipnote.c, zipsplit.c (SMS)
22. If either LZMA_SUPPORT or PPMD_SUPPORT, include lzma/Types.h.  For WIN32,
    define _CRT_SECURE_NO_WARNINGS.  For PPMD_SUPPORT, also include lzma/Ppmd8.h
    and ppmd_filecompress().  Only include crypthead() if CRYPT_TRAD.  Another
    "impossible happens" that may need updating later.  If PPMD_SUPPORT, a
    "return 0" ppmd_filecompress() is defined.  zipup.c (SMS)
23. Add PPMD to Zip optional feature configuration list and LIB_PPMD to
    configuration flags list.  Add PPMD to valid_vars list.  Set default PPMD
    variable value if not already set.  Add "option -s is obsolete" warning for
    Mac OS X shared library.  Change LFLAGS_LPFX_TRY to lflags2_try, with some
    other minor changes.  Add code for configuring optional PPMd compression
    library.  unix/configure (SMS)
24. Add PPMd compression to top instructions.  Update build dependencies list.
    Remove some right side comments and add section comments instead.  Change
    "LN = ln -s" to "LN = ln" for symbolic links.  (Believe that stuff being
    done using "ln -s" is now gone from unix/Makefile:
    .c_.o:
	rm -f $*_.c; $(LN) $< $*_.c
	$(CC) -c $(CFLAGS) -DUTIL $*_.c
	rm -f $*_.c
    Further simplification is probably possible.  ("LN=ln".))
    Remove lzma/Alloc.h from H_LZMA.  Add H_PPMD for lzma/Ppmd.h and
    lzma/Ppmd8.h.  Add O_PPMD for Ppmd8.o and PPmd8Enc.o.  Change MAN_ZIP and
    other MAN_ to explicitly include the file extension dot.  Add PPMd compile
    rules.  Add PPMd object archive rule.  Add LIB_PPMD to PGM_ZIP.  Add
    PPMD variable to call to unix/configure.  Change UNZIP_MANS to ZIP_MANS.
    unix/Makefile (SMS)
25. Add PPMd compression.  Remove incl_bzip2_m.  Remove (GLOBALS) include.
    vms/build_zip.com, vms/descrip.mms (SMS)
26. Add IZ_BZIP2 and PPMD to /MACRO.  Add MODS_LIB_ZIP_PPMD.  Add space to P4
    to prevent immediate macro expansion.  vms/descrip_mkdeps.mms (SMS)
27. Remove INCL_BZIP2_M and ALLOC.OBJ.  Add PPMD.  vms/descrip_src.mms (SMS)
28. Add ENABLE_USER_PROGRESS.  Add vms_fopen() to replace use of zopen() to
    better handle files with Record Format.  Update comments for lib$getdvi().
    Add establish_ctrl_t() to handle user progress.  Move "DIAG_FLAG (verbose
    >= 2)" to top of file.  vms/vms.c, vms/vms.h (SMS)
29. Add PPMD_SUPPORT and PPMD keyword.  vms/zip_cli.cld (SMS)
29. Define fhow.  Redefine zopen() to use vms_open().  Remove old fhow macro
    definitions.  vms/zipup.h (SMS)
30. Changed VMS builders to avoid explicit LINK /INCLUDE, to avoid case
    problems with CC /NAMES = AS_IS.  Added VMS-specific globals_dummy() to
    globalc.c, and references to it in main programs, zip.c, zipcloak.c,
    zipnote.c, zipsplit.c to get the globals module linked in.  The
    rearrangement of the LINK commands also obviates the bzip2-related
    LINK /INCLUDE module (INCL_BZIP2_M = ZBZ2ERR) which has been removed.
    vms/build_zip.com, vms/descrip.mms, vms/descrip_src.mms (SMS)
31. Changed VMS file I/O details to cope better with input files having
    record format Stream or Stream_CR, and long records.  Previously,
    errors like the following could occur:
      zip warning: non-translatable vms error code: 0x181A8
      %rms-w-rtb, !ul byte record too large for user's buffer
              zip warning: could not open for reading: LONG_REC.DAT
    Or, using DECnet access, the similar:
      zip warning: non-translatable vms error code: 0x183A2
      %rms-e-netbts, network buffer too small for !ul byte record
    This seems to be the "some files" problem mentioned (but not well
    described) in TODO since at least as far back as Zip 2.3 (1999).
    vms/vms.c, vms/zipup.h (SMS)
-------------------- March 18th 2012 version 3.1d24 --------------------------
 1. Initial PPMd compression support.  Restructured interface to LZMA
    compression code, eliminating most changes to foreign code.  INSTALL,
    zipup.c, lzma/CpuArch.h, lzma/Ppmd8.c, lzma/Ppmd8.h, lzma/Ppmd8Enc.c,
    man/zip.1, vms/INSTALL_VMS.txt, vms/cmdline.c, vms/zip_cli.cld (SMS)
 2. Added missing binary-text determination for LZMA compression. 
    zip.h, zipup.c (SMS)
 3. Fixed rounding of negative compression percentages.  zipup.c (SMS)
 4. Extended "-0"-"-9", "-n", and "-Z" syntax for more control over
    compression method and level.  Added compression level to
    "(XXXXed yy%)" message with "-sd" or "-v".  Now: "(XXXXed-L yy%)".
    zipup.c, vms/cmdline.c, vms/zip_cli.cld (SMS)
 5. Initialize salt_len, aes_mode, and aes_mthd to hush compiler.  Add
    parentheses as definition of SALT_LENGTH() does not have them.
    crypt.c (SMS)
 6. Collected some scattered progress-dot code into new functions
    display_dot_char() and display_dot().  Define PROGRESS_DOTS_PER_FLUSH
    that, when defined, sets how many dots to accumulate before flushing
    (instead of flushing every dot).  deflate.c, fileio.c, zip.h, zipup.c (SMS)
 7. Add macro define PROGRESS_DOTS_PER_FLUSH and set to 64.  vms.osdep.h (SMS)
    vms/descrip_mkdeps.mms, vms/descrip_deps.mms (SMS)
 8. Processing of a split archive could stop prematurely if the split
    size was a multiple of the I/O buffer size (16K), leaving a corrupt
    output archive.  Fix bfwrite() by checking for case where fread()
    returns 0 bytes but EOF has not yet been set.  fileio.c (SMS)
 9. Add SKIP_VALUE_ARG2 setting for get_option() optchar argument that
    does same as SKIP_VALUE_ARG (skip arg that is value for previous arg)
    but skips 2 args.  Add new value type o_OPT_EQ_VALUE that allows optional
    value as long as value is preceeded by equal sign.  Currently only
    implemented for short options.  Currently forms -ovalue, -o=value,
    -o = value, and -o =value supported, but this may be reduced to only
    -ovalue and -o=value forms, maybe also -o =value after some testing.
    Need to implement for long options also.  (Last comments by EG.)
    fileio.c (SMS)  
10. Add parentheses to SALT_LENGTH() as definition does not include them.
    zipcloak.c (SMS)
11. Update Mac OS message.  Update PPMd.  unix/configure, unix/Makefile (SMS)
12. Add time.h.  unix.unix.c (SMS)
13. Update extended help for -@@.  Update description of -lF.  Move cases
    for 'a' and 'B' after -0 through -9 cases in options switch.  Update
    case o_DI.  zip.c (EG)
17. Change option type for -0 through -9 from o_OPT_OPTIONAL_VALUE to
    new o_OPT_EQ_VALUE.  (This may be modified in a later beta.)  Add new
    option -ss (--show-suffixes) to show list of defined suffixes for special
    handling and how they will be handled.  Add variable show_suffixes.
    Update option -n to allow optional value of form "M[-L]=S1:S2",
    meaning that compression method M should be used for files with suffixes
    S1 and S2.  If optional -L (as in M-L) is used, then method is only used
    when that level of compression is specified (separately using -0 through
    -9).  Add show suffixes code to list suffixes with a suffix list, all if
    -v.  zip.c, zip.h (SMS)
18. Initial implementation of -BT and -BP for a managed backup utility.
    Add options -BT (--backup-type) and -BP (--backup-path).  Backup type
    is one of FULL (normal zip archive), DIFF (same as using --diff option),
    and INCR (using new incremental archive support).  -BP sets the path
    that the control file (generated to track backup status) and the output
    archives go.  Backup support enabled by defining BACKUP_SUPPORT.  Add
    variable apath for tracking list of backup archive paths.  Add variable
    backup_type (0 = normal mode, 1 = BACKUP_FULL, 2 = BACKUP_DIFF, and
    3 = BACKUP_INCR.)  Add cases for -BT and -BP in options switch.  When
    doing a backup operation (-BT not 0) derive output paths of control file
    and output archive (archives if splitting) from -BP path.  Allow code
    for non-option argument case to drop through when -BT not 0 to handle
    missing archive name (which is generated rather than user provided).
    Build paths for input, control, and output based on which operation is
    being done, storing paths in apath so control file can be generated or
    updated once archive successfully created.  Control file lines have
    format "xxxx: yyyy", where xxxx is a 4 letter operation (info, full,
    diff, incr, etc.) and yyyy is the information or path.  Path names are
    currently generated to include the -BT method (such as diff) and a date
    and time stamp, though these long paths may not be usable on many ports.
    Checks to prevent -BT from being used with --out and other conflicting
    options.  Updates to archive reading code to allow zlist to be added to
    when incremental archives are read, with sorting only done when the base
    (full) archive is read (which is done last).  Add read_inc_file() to
    read incremental archives.  When -BT not 0, output messages when reading
    incremental and full archives.  Note that when using -BT and creating
    DIFF or INCR archives, no file data is read from the archives as all
    files to add to output archive are those not in any existing archive.
    Add variables backup_start_datetime, backup_control_path, backup_full_path,
    and backup_output_path for path names used by backup support.  Add
    BACKUP_CONTROL_FILE_NAME that stores the default name of the control
    file.  Add total_cd_total_entries to track total number of entries added
    to zlist across all archives.  Add zfilesnext global to track where next
    entry in zlist goes.  zip.c, zip.h globals.c (EG)
19. Allow use of "-" with -O (--out) to force output to stdout.  This allows
    updating an archive and having the output sent to stdout.  zip.c (SMS)
20. Add display_dot() for displaying dots.  Rename iz_file_read() to
    iz_file_read_bt().  zip.h (SMS)
21. Uncomment out iz_file_read().  Include lzma/SzFile.h, lzma/LzmaDec.h.
    Add local LZMA_Encode().  Comment out iz_file_read_bt().  Fixed rounding
    of negative compression percentages.  Replace dot code with call to
    display_dot().  Show level of method in verbose.  Add iz_file_read_bt()
    to add missing binary-text determination for LZMA compression.  Add
    lzma_read() and lzma_write() as 7-Zip-compatible I/O read and write.
    Update LZMA_Encode().  Update lzma_filecompress().  Remove ppmd_prop_word
    from ppmd_filecompress().  Adjust PPMd order, memory size, and restoration
    method.  Add PPMd progress dots.  Revert from PPMd to STORE if not getting
    any compression. zipup.c (SMS)
22. Replace k with c_d_ents as central directory entry counter.
    zipsplit.c (SMS)
23. Restructured interface to LZMA compression code, eliminating most
    changes to foreign code.  lzma/lzmaenc.c, lzma/lzmaenc.h (SMS)
24. Updated the VMS error message text file to accord with the current
    ziperr.h (ZE_COMPRESS, 3.1d18).  vms/zip_msg.msg (SMS)
25. Close comment.  vms/vms.c (SMS)
26. Minor reformatting of VMS error message text file, vms/zip_msg.msg. 
    vms/vms_msg_gen.c (SMS)
27. Add LZMA_PPMD.  Add LARGE parameter.  vms/descrip_src.mms,
28. Add _7ZIP_ST to Windows vc6aes project to fix missing include error in
    lzma/LzmaEnc.c.  Will need to make this fix in other places.
    win32/vc6aes/zip.dsp (EG)
29. Change iz_file_read() to iz_file_read_bt().  lzma/SzFile.c (EG)
30. Add (ulg) cast to display_dot() UInt64 parameter bufsize.  zipup.c (EG)
31. Define _7ZIP_ST to avoid inclusion of missing file in lzma/LzmaEnc.c.
    lzma/Types.h (EG)
32. Made attempt at documenting the -n and -ss options in extended help.
    zip.c (EG)
33. Add -BT and -BP to extended help.  zip.c (EG)
-------------------- May 8th 2012 version 3.1d25 --------------------------
 1. Remove // commented out lines marking code to be removed.  zipfile.c (SMS)
 2. Make iz_file_read() local.  zipup.c (SMS)
 3. Add missing comma to extended help.  Allow -O (--out) to handle stdout.
    Replace empty suffix lists with NULL.  Add "All suffix lists empty" check.
    Updates to backup checks.  Remove "missing suffix list" check.  Change
    compression-method-by-suffix list processing to convert explicit null lists
    (":" or ";") to empty (NULL), before displaying (-ss) them.  No longer
    compress everything automatically with level 9. (Not backward compatible.)
    Before replacing old zip with new zip, check if out_path is "-" (stdout)
    rather than zipfile.  zip.c (SMS)
 4. Fix a spurious error message, "can't specify output file when using
    -BP", when -BP wasn't specified.  zip.c (SMS)
 5. Change -9 not to clear the -n (STORE) suffix list.  zip.c (SMS)
 6. Add check to any suffix check.  zip.c (EG)
 7. Change APL_DBL_SUFX to APL_DBL_SFX.  zipup.c (SMS)
 8. Change __VMS to VMS in MatchFinder guard macro.  lzma/lzfind.h (SMS)
 9. Change "  #ifdef" to "#  ifdef" and similar changes to ifdef endif blocks
    to make formatting more acceptable to some compilers.  lzma/ppmd8.c,
    lzma/ppmd8.h (SMS)
10. Change "signed char" to more accepted "char" in MASK(sym) macro.
    lzma/ppmd8enc.c (SMS)
11. Update comment regarding need for _7ZIP_ST.  lzma/types.h (SMS)
12. Restructure VMS CLI option translation code to reduce size and
    confusion.  Stop combining single-character options.  (/DELETE +
    /VERBOSE now gives "-d" + "-v", instead of (defective) "-dv", for
    example.)  vms/cmdline.c (SMS)
13. Add /BACKUP=(), /SHOW = SUFFIXES.  Allow SUFFIX = "".  Fix CHECK_BUF_ALLOC,
    et al.  Stop combining one-character options.  Made command-line variables
    global.  Add append_simple_option().  Add RETURN_INSFMEM().  Add
    get_suffix_list().  vms/cmdline.c (SMS)
14. Remove definition of _7ZIP_ST macro from builders.  (Now in lzma/Types.h.)
    unix/configure, vms/build_zip.com, vms/descrip_src.mms (SMS)
15. Add LSMA, PPMd compression.  Add -ss and the -n and -# updates.  Add
    error code 22 (COMPRESS).  vms/vms_zip.rnh (SMS)
16. Add compression updates to BZIP2, LZMA, and PPMd.  vms/zip_cli.cld (SMS)
17. Add new /BACKUP qualifier, and new options for /COMPRESSION, and /LEVEL
    qualifiers for VMS CLI.  vms/cmdline.c, vms/zip_cli.cld (SMS)
18. Add compression updates.  Add error codes 21 (CRYPT) and 22 (COMPRESS).
    Add section on Comments, Compression, and Encryption.  Add section for
    /BACKUP.  Update section on /COMPRESSION.  Update table to include -@@,
    -BP, -BT, -cd, -DI, -ic, -lF, -sF, -TT, -U, --version, -ws, -ww, -y,
    and -Z.  vms/zip_cli.help (SMS)
19. Remove special characters.  Add note regarding IM-style attribute
    storage.  Add note regarding "some files" and record format Stream or
    Stream_CR, and long records.  TODO (SMS)
20. Minor update.  tandem/history (SMS)
21. Remove _7ZIP_ST.  vms/build_zip.com (SMS)
22. Add VMS-specific <memory.h> for AES as may be missing on older systems.
    vms/memory.h (SMS)
23. Minor text edits.  Add variable LOCAL_ZIP.  Change eval ${arg} to
    eval ${1}.  Change ${CFLAGS:-"-I."} to ${CFLAGS:-}' -I.'.  Same with
    CFLAGS_BZ.  Add note for using standard pre-defined preprocessor
    symbols and successful compilation of UnZip.  Remove -D_7ZIP_ST.
    unix/configure (SMS)
24. Update call of unix/configure to include LFLAGS1 and LFLAGS2.
    unix/Makefile (SMS)
25. Add note to extended help regarding -v.  zip.c (EG)
26. Change BACKUP_CONTROL_FILE_NAME suffix from "zip_backup_control.txt"
    to ".zbc" so resulting names are shorter.  zip.h (EG)
27. Add options -BC (--backup-control) and -BL (--backup-log) to allow
    storing the control file and the log, respectively, in a different
    place than the backup path specified by -BP.  This is useful when the
    media used for the backup path may be swapped out when full.  Currently
    not implemented.  zip.c (EG)
