What's New Last updated 1 July 2008 This file is the full list of new features and major changes for Zip 3.0 by beta release. See the announcement file zip30.ann for a quick summary of all features and changes in Zip 3.0. Also see the file README for release information, INSTALL for installation procedures, and the manual pages zip.txt, zipsplit.txt, zipcloak.txt, and zipnote.txt for how to use the new features. The file CHANGES has all the day-to-day changes made during development. Below are some of the more significant items on the list for Zip 3.1 (see ToDo for a more complete list): - AES encryption. - Extended attributes for Windows, Linux, and Mac OS X. - Support -d@ for deleting list of files. - Decide if -R, -i and -x should use external rather than internal patterns. - Though Unicode paths have been implemented and tested, Unicode comments are not yet supported (except for comments on UTF-8 native systems which are supported). - Verbose mode -v may still need work. - When pattern is directory add end / automatically. - Add C# example for Zip 3.0 (need to be converted to new DLLs) - original C# example added with note. - Path Prefix maybe, so entries added to an archive can have a directory path string prepended to each path. - UNC path support maybe. - Support for other languages maybe. - Send in your suggestions. - ... MAJOR CHANGES BY BETA VERSION ----------------------------- New things in Zip 3.0 since Zip 3.0h: - Unicode fixes. - Test and fix various ports as needed. - Update Win32 resource to support more Windows ports. - Add djgpp 2.x makefile that includes bzip2. - Add Win32 version resource to Win32 executable. - Bug fixes. - Documentation updates. - Package for release. New things in Zip 3.0h - Allow -@ and -x to work together. - Unicode code cleanup. - Allow forcing use of UTF-8 storage in standard path and comment. - Update symbolic link checks. - Add support for storing 32-bit UIDs/GIDs using new extra field. Backward compatible support for the old 16-bit UID/GID extra field remains if Zip is compiled on an OS that has 16-bit UID/GID storage. - Update VMS notes. - Directory scan using -AS (include only files with Windows archive bit set) now ignores archive bit on directories to include all files with archive bit set in all directories. Also, to avoid empty directories being created, -AS now does not store directory entries. - Add Unix IBM support. - Change -W to -ws to free -W for later use. - Fix large file support for MinGW. - Fix large file support for bzip2. - Fix compile error in ZipCloak when UNICODE_SUPPORT is not enabled. - Fix Unicode bug in ZipCloak involving Unicode paths. - Long Unicode escapes changed from #Lxxxxxxxx to #Lxxxxxx to shorten paths with escaped Unicode. - Bug fixes. New things in Zip 3.0g - Add split support to VB project for Zip64. - Disable reading of Unix FIFOs unless new -FI option used to avoid an archiving operation stopping when it hits an active unfed FIFO. - The "[list]" wildcard expression (regular expression matching of any character or range of characters in list) is now disabled on DOS and Windows as it has caused confusion when filenames have [ and ] in them. The new -RE option reenables it. - Add negation to many display options such as -dc and -db. - Allow -FF to read and fix archives having local entries that appear after central directory entries. - Bug fixes. New things in Zip 3.0f - bzip2 - The bzip2 compression method looks supported for at least Windows, Unix, and VMS using the bzip2 library. A new option, -Z cm, selects the compression method. - Split archives - Can now use -s to create a split archive. The default is to update split files as the archive is being written, which requires all splits to remain open until the archive is done. This should be no problem when writing the archive to a hard drive, for example, and this approach creates archives that should be supported by all unzips that support splits. Adding the -sp option enables split pause mode that instead writes splits that do not need updating and pauses Zip after each split. This allows splits to be written directly to removable media, however -sp archives may not be as universally compatible. - Unicode support - Zip now stores Unicode paths that should be more portable across character sets and languages. The unzip must have Unicode support enabled or the Unicode paths are ignored. If reading an archive with Unicode paths, unsupported characters are replaced by #Uxxxx and #Lxxxxxxxx escapes in the file name. Option -UN controls how Unicode is handled. Also, on systems where the current character set is UTF-8, preliminary support for the new General Purpose Bit Flag, bit 11, UTF-8 flag, that indicates UTF-8 is stored in the path and comment fields is implemented for paths. - Unicode on Win32 - On WIN32 systems that support the wide character calls (mainly NT and later systems using NTFS), when UNICODE SUPPORT is enabled Zip will now do directory scans using Unicode and convert the Unicode paths to the local character set for storage in the standard path field and store UTF-8 in the Unicode extra field. This allows directory scans to complete successfully regardless of the character set the path is in. On Win9x systems wide character scans are not generally supported and Zip automatically uses a local character scan instead. - Keep extra fields option - The default operation has been, and continues to be, to read then strip old extra fields when reading entries from an existing archive and then recreate the extra fields that Zip knows about. Extra fields specific to each operating system get added by default also. The new option -X- (negated -X) keeps any old extra fields, copying them to the updated archive unchanged (unless Zip has updated them). The unnegated -X still strips most all extra fields except Zip64, Unicode, and UT time. - License - minor updates to the license. - Windows OEM - When compiled with WIN32_OEM (the default for WIN32), Zip on WIN32 now stores OEM paths, which should be more compatible with other zips and should fix some character set problems. - Windows Archive Bit support - On Windows can now use new -AS (include if archive bit set) option to select files with the DOS archive bit set and use new -AC (clear archive bits) option to clear the archive bits on files after the archive has been created. But -DF is probably better. - Difference mode - A new option -DF (--dif) creates an output archive that includes only files changed or new since the input archive was created. Can use to create incremental backups. - File Sync - The new option -FS enables File Sync, a new mode that synchronizes the entries in an archive with the files on the file system, adding updating, and deleting entries as needed. This should create the same results as creating a new archive, but since existing entries are copied, may be much faster. - Copy Mode - A new --out option allows creating a new archive with a different name than the input archive, leaving the input archive unchanged. This allows updating split archives. It also allows for a new copy mode to select entries in one archive and copy them directly to a new archive. - Empty archives - Now an empty archive is created when -i or -i@ is used and the file patterns given do not match anything. This has been requested to support scripts. - Global dots - A new -dg option now displays progress dots as -dd does, but instead of displaying them for each file, the dots track the total bytes read for the archive. The -dg option also works when -q is used to disable most output, which allows for something like zip -qdgds 100m to be used to not display specific files but display a dot every 100 MB as a global status. - Date range - Can now use -t and -tt to set a date range - Fix options - Option -F redone and can recover files from an archive with a mostly complete central directory more reliably, but no longer can handle truncated archives. Option -FF redone and now can salvage files from slightly more damaged archives, including truncated archives. In some ways -F is less powerful but more stable than it was and -FF will be needed where -F in Zip 2.32 was enough. One big change is -F and -FF both now support split archives. - Console writing - Updates to how messages are written to the console have been made including more consistent handling of line breaks. - Show Files options - Option -sf lists the files that would be operated on. This option can be used alone to list the files in an archive. Also see options -su and -sU for showing Unicode paths. - UnZip Check - Now check that UnZip 6.00 or later is being used for unzip if testing a Zip64 archive. A new option -TT can be used to set the unzip to use with the -T check. Currently UnZip does not support split archives so split archives can't be tested by UnZip. - Streaming - Directories are now handled better when streaming. - Case matching - Normally all matching against archive entries is case sensitive, so *.BAR will not match or find foo.bar in an archive when deleting, copying, or freshening entries (deleting and copying only on VMS). New option -ic (--ignore-case) enables case insensitive matching. Currently -ic is only implemented on WIN32 and VMS. - Delete date bug fixed - Bug when using -d to delete files while using -t or -tt to select the files based on date is fixed - Large file encryption bug fixed - Fix for bug that very rarely results in bad data being stored when deflating and encrypting uncompressable data and resulting in CRC errors when extracting, but the chance of error increases with file size (thanks to WinZip for finding this bug). See CHANGES for details. New things in Zip 3.0e - Bugs described in Debian patches 004 (unix configure script update) and 005 (large path bug) fixed - Various fixes - Add optional running stats and also end stats if not all files could be read - Options -l and -ll now do quick binary check on first buffer and skip formatting if first buffer has binary - still check at end to note if formatting was done on file that was later determined to be binary, but now potential file corruption is generally avoided - Main binary check now uses new algorithm that should also treat UTF-8 and other similar encodings as text, allowing proper line end translation for UTF-8 files - When output is not updatable by seeking back and Zip64 is enabled, output is forced to Zip64 to avoid possible later need for Zip64 when not enabled - More work on splits, but still not usable - Fixes for djgpp - Add log file capability to save all errors and optionally messages - Add code to test for a Zip64 archive when compiled without Zip64 support - New VC6 projects for Win32 and WinDLL - Updates to extended help - Changes to force-zip64 option - ZE_BIG error now given also for files too big to read or write - Fix file delete bug - Update license - Update export documentation - Add VMS extended filename support - Add directory traversal improvements, some for Win32 ports and some for all ports, that can result in a 10 times increase in speed in some cases New things in Zip 3.0d - Some large file crypt fixes - Some updates to support WiZ - On VMS, changed -V (/VMS) processing to truncate file at EOF, allowing greater compatability with non-VMS systems. New -VV (/VMS=ALL) option saves all allocated blocks in a file. (Previously, -V did neither.) - On VMS, pushed 2GB file size limit with -V out to 4GB - On VMS (recent, non-VAX), with SET PROCESS /PARSE = EXTEND, command-line case is preserved. This obviates quoting upper-case options, like -V, when enabled - On VMS, fixed problems with mixed-case directory names. Also changed to keep ODS5 extended file name escape characters ("^") out of the archived names in simple cases - Changes to the display dots - Option -W should now force wildcard matching to not cross directory separators. For example, a/b*r/d will match a/bar/d but not a/ba/r/d - Option -nw should turn off all wildcard matching so foo[bar] is matched literally and [bar] is not considered a regular expression - Atheos port - Debugging of Unix and VMS large file ports. Most features may work now on these ports for large files. Still need to fix 2 GB to 4 GB when not compiled with large file support - On VMS, added an open callback function which (where supported) senses 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 blocks, was none), and the default mbc is now 127 (up from 64), speeding creation of a large archive file. The "-v" option shows some of the activity. On old VMS versions, RMS_DEFAULT sensing (GETJPI) fails (silently, without "-v"), and no changes will be made. Even there, (DCL) SET RMS /EXTEND = can help performance. RMS_DEFAULT values override built-in default values. New things in Zip 3.0c - Converted to using 64-bit file environment instead of transitional functions like fseeko64 for ports that support it - Added "--" argument to read all following arguments as paths - Second help page added - Binary detection adjusted from 20% binary is binary to 2% - When -R and -i used together now -i has precedence over -R - Archive names with spaces can now be tested on MSDOS and Win32 New things in Zip 3.0b - Fixed ifdefs so can test base code by compiling with NO_LARGE_FILE_SUPPORT, then compiling with NO_ZIP64_SUPPORT to test 64-bit file calls (if port enables) but otherwise use base code, and compiling normally to enable Zip64 code - Unix Zip64 fixes - should now be able to create and read large files - WinDLL changes to support Zip64. Zip 3.0 dll named Zip32z64.dll - New VB example to show use of Zip32z64.dll - New options -sc (show final command line and exit) and -sd (show each step zip is doing, a little different than verbose which is still there) added to help debug but both or at least -sd might go away in the release - Some minor posted bugs fixed (see Changes) New things in Zip 3.0a - Initial Zip64 support allowing large files and large numbers of files - New command line processor - Other changes, see file Changes Note: Zip 2.4 was never released. That code was the start of the Zip 3.0 effort above. New things in Zip 2.3 - IBM OS/390 port (Unix like, but EBCDIC) by Paul von Behren - Apple Macintosh (MACOS) port by Dirk Haase - Theos port by Jean-Michel Dubois - Multibyte characterset support by Yoshioka Tsuneo - Support for ISO 8601 date format with -t and -tt options - Info-ZIP license New things in Zip 2.2 - BEOS port by Chris Herborth - QDOS port by Jonathan Hudson - TANDEM port by Dave Smith - WINDLL port (16-bit Win 3.x and 32-bit WinNT/Win95) by Mike White - SYSV packages support by John Bush - zip -P SeCrEt encrypts entries in the zip file with password SeCrEt (WARNING: THIS IS INSECURE, use at your own risk) - zip -R recurses into subdirectories of current dir like "PKZIP -rP" - zip -x@exclude.lst excludes files specified in the file exclude.lst - zip -i@include.lst includes files specified in the file include.lst - zip -@ only handles one filename per line, but supports whitespace in names - zip -t mmddyyyy, 4 digit year number for uniqueness of years beyond 2000 - zip -tt mmddyyyy only includes files before a specified date