Todo list (last updated 19 June 2010).

Bug list:

- -T does not handle commands with ' well.  (Mail 12 Mar 2010)


Features for next official version:

- Console Unicode handling on Windows.  (19 Apr 2010 EG, pulled
  from forum "Info-ZIP Software Discussions and Feature Requests
   Info-ZIP Zip  Unicode paths and ZipNote" thread)
- Trace the number of #if's and #endif's in zipfile.c.  (19 Apr 2010
  EG, pulled from forum "Info-ZIP Software Discussions and Feature
  Requests  Info-ZIP Zip  ZIPFILE.C v3" thread) - All the
  #if #endif blocks seem to line up.  (6 May 2010)
- Add a way to send log output to stdout or stderr.  (21 Apr 2010 EG,
  pulled from forum "Info-ZIP Software Discussions and Feature Requests
   Info-ZIP Zip  less verbose logging" thread)  Added to Zip 3.1c.
- Consider making the native Unicode option the default Unicode option
  instead of using the extra fields for Zip 3.1.  (21 Apr 2010 EG,
  based on discussion in forum "Info-ZIP Software Discussions and
  Feature Requests  Info-ZIP Zip  Storage of directory names" thread)
- Post binaries with public betas.  (21 Apr 2010 EG)
- Check functioning of -$ volume label command.  (23 Apr 2010 EG,
  from forum "Info-ZIP Software Discussions and Feature Requests 
  Info-ZIP Zip  Question about -@ command" thread)
- Add option -Z to DLL interface to pass in compression method.  Check
  that compression level is passed in using the DLL interface and used.
  (From forum "Info-ZIP Software Discussions and Feature Requests 
  Info-ZIP Zip  Using bzip2 with DLL" thread)
- Look at state of building a Unix lib.  (23 Apr 2010 EG, from forum
  "Info-ZIP Software Discussions and Feature Requests  Info-ZIP Zip 
  Unzip / Zip librararies for Mac" thread)
- Look at posting this TODO list public somewhere, maybe SourceForge.
  (23 Apr 2010 EG)
- Implement @filelist command.  (29 Apr 2010 EG, reminded by forum
  Info-ZIP Software Discussions and Feature Requests  Info-ZIP Zip 
  Loading Filenames Into Zip From Text File" thread)
- Implement ZpMain in api.h if reasonable.  This might allow accessing
  the DLL using the command line format instead of the ZPOPT structure.
  (2 May 2010 EG, based on seeing unimplemented note in api.h)
- Create stats comparing add, update, freshen, and other modes.  Also
  compression levels and methods, and encryption.  (2 May
  2010 EG)
- Add dot callback to DLL, allowing status during archiving and
  cancelling of zipping in the middle of a possibly large file.
  (8 May 2010 EG) - ProgressReport callback added to Zip 3.1c.
- Verify that "zip -T archive" does what is expected.  (2 June 2010 EG,
  from forum thread "Info-ZIP Bugs  Zip Bugs  ZIPped w/out errors,
  but then SEEK error -OS/2 JFS")
- Get around to enhancing zip -FF to fix damaged archive entries if
  reasonable to do (a user took a stab at it a while back).  (2 June
  2010 EG)





- New -p option (or something similar) to set default directory for
      zipping (like doing a cd to that directory).  (7 Jan 2009 David
      (lsystems in discussion forum))
- -FF does not handle Unicode bit 11.  (9 Aug 2008 EG)
- Extended attributes for Windows, Linux, and Mac OS X.
- Win32 ACL rewrite to use backup api to create new and more useful extra
  field (need unzip support) (Kai).
- Allow -d@ to read in a list of names to delete (17 Nov 2005).
- AES encryption (19 Mar 2005).
- Fix EOCDR central directory entry count to use mod 2^16 for backward
      compatibility.  (3 Jan 2009 Vincent Lefθvre, see mail)
- Update license to allow binary use without additional documentation
      when license is built in.  (5 Jan 2009 EG)  Updated in Zip 3.1b.
      (29 Mar 2009)
- Support MAEMO port Unicode change.  (9 Jan 2009 Danny Milosavljevic,
      SourceForge)  Look at UnZip 6.0 changes, including configure and
      unzip.c.  Mostly implemented.  (31 March 2009)
- Compare to common UnZip functions and update to any better functions.
- Add -hh for extended help to Zip for uniformity with UnZip.  (18
      Jan 2009 EG)  Addressed in Zip 3.1b.  Also added -HH.  (31 Mar 2009)
- Add way to merge archives.  (18 Jan 2009 EG)
- Add DLL compatibility version function to note the minimum version
      of the zip DLL that this DLL is compatible with.  (25 Jan 2009 EG)
- Should allow "zip -vFF -sf" to check an archive.  Also should show
      when creating central directory entries when none were found.
      (26 Jan 2009 EG)
- Default if hit Enter at single disk archive question for -FF if no
      central directory should be to assume single disk archive.  (26
      Jan 2009 EG)
- Pass on any password to UnZip if -T used (without -TT).  Maybe look
      at a way to let -TT specify the password.  (30 Jan 2009 EG)
      Addressed in Zip 3.1b.  (29 Mar 2009)
- Differential backup option -DF should return Nothing To Do warning
      if no files to add.  Maybe -MM can be used to prevent creation
      of empty archive.  (30 Jan 2009 EG, from forum -DF posting)
- Address alternate file streams?  (30 Jan 2009, from forum)
- Add way to rename files being written to archive.  (6 Feb 2009, from
      forum)  Option -pp for adding a path prefix implemented in Zip 3.1b.
      Still need to implement a generic rename.  (29 Mar 2009)
- Fix possible problem with high-bit characters on Unix not being stored
      correctly on Windows.  Could be OEM issue.  (1 Feb 2009, ichabod,
      from mail)
- For MVS, convert all dots to /, instead of keeping the last dot.  Add
      an option to regress this back to current keep last dot behavior.
      Also consider adding option (or use option with value) to allow
      saving dots as is, which most modern OS can handle.  (15 Feb 2009,
      Zip in MVS thread, forum)  This is addressed by new -MV option.
      (29 Mar 2009)
- Consider option to ignore a time difference of one hour for file
      matching to allow for daylight saving time changes for those
      entries not using universal time (UT).  (6 Apr 2009)  


Features that may make the next release:

- Allow reading in list of files using @filename.
- When -R, -x, or -i pattern ends in a directory add / to the end
      (5 Nov 04 Nehal).
- Decide if -R, -i and -x should use external rather than internal patterns.
      Also, change pattern matching to not do ex2in() and then in2ex() if
      appropriate.  (12/26/2005 SMS)
- 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.

- 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 so can zip multiple drives and avoid
      name conflicts (4/17/2006).  -PP implemented in Zip 3.1b.  (29 Mar 2009)
- UNC paths like \\server\path (4/26/2005).
- Support for other languages maybe.

- Add About page option similar to -h2 and -v but lists Info-ZIP
      information (could be -sa) (4/29/2006).
- Update utilities ZipSplit, ZipNote, and ZipCloak to handle split archives.
- Update ziperr and finish if needed.
- Review memory allocation and fill in memory leaks if any.
- Enhance -FF to fix common problems such as archives ftp in text mode
      and fixing checksums so entries can be extracted if that makes
      sense (6/17/2007).
- Add \ to / conversion in zipsplit to fix problem in
      1/29/2004 email.
- Encryption bug with small stored file (12/27/2005) (fixed?).

- When updating large archives with few entries being
      updated maybe display something in large periods of
      quiet (1/23/2006).
- Windows OEM comments (5/17/2006).
- Example of using MVS zip and unzip (3/30/2004) (Need one).
- UTF-8 comments need to be implemented (6/17/2007)
- Maybe convert ../ in archive (5/20/2006).
- Per so many buffers dll callback (12/23/2005 Ale).
- Allow rename stdin "-" to something else (12/27/2005 gregor).
- Check for possible buffer overrun weaknesses while reading zip files.
- Do Active Template Library (ATL) (4/27/2005).
- Flush Win16 support - to be determined (Mike).
- Way to convert file names on input, converting foo.c to dir/foo_bar.c
      for instance (4/8/2004, 3/12/2004).
- French WiZ (not a Zip thing actually but dependent on zip and unzip).
- Then there is that wierd ^D being converted to \000 error reported
      in 6/21/2003 email when Zip is outputted into a pipe on Windows ports.

Old list:

Main features still missing for next official version (last updated 2/11/2001):

- what about the binary/text detection ? (seems done)
- -b and -t options in help screen (covered in -h2)
- findfirst/findnext and after that LSSTAT (performance!!)
- use IS_EXEC from djgpp stat.h
- use install in unix/Makefile instead of mkdir -p, look at install sh script.
- #elif for those ports that can handle it.
- what about zopen vs. fopen ?
- Add zcreate or zfcreate for win32.
- Assembler stuff in match.S (subexpressions)
- zipping huge files (> 2G, unsigned 32bit) (done)
- Testsuite for zip and unzip (John D. Mitchell)
- make a version.c or version.h that includes all the compiler names
- run utils with dmalloc().
- what to do with zip -F and zip -FF (readzipfile2()) ? (done?)
- profiling of the code
- multi disk zip files (could be done)
- zipfile modification tool (Greg)
- Implement -- option (Thomas Klauser, wiz@danbala.tuwien.ac.at) (could be done)
- don't add files with "Archive bit" or add files with "Archive bit"
	(uwe.becher@metronet.de) (could be done with -AS and -AC)
- 32 bit file attributes
- generate output without having to seek at all (this seems to be stream output)
- remove contractions from zip error messages, make them clearer (Steve)
- display "[text]" for ascii files when not quiet (no -q) (Timo Salmi)
- does zipnote accept names with version number?
- for a WORM, zip should create temp file only when updating; new archives
	should be created directly.
- APPNOTE.TXT specifies "4) The entries in the central directory may
      not necessarily be in the same order that files appear in the zipfile"
      but readzipfile() relies on same order. (new read does not, and now
      the read for -FF searches for central directory matches rather than
      rely on the order)
- on Mac, MPW C 3.3.1 requires #if (a || b)  ["#if a || b" taken as "#if a"]
- on Unix, let -S be "include non-regular files without reading from them"
	(as pkzip on Unix). This requires unzip support.
- zip -l should do ebcdic->ascii translation on CMS and MVS
- zip as subroutine (zdig/241) (some work done on this)
- accept k and M in zipsplit
- store / (part of file name) as ! in OS/2 (problem only with -E ?)
- in addition to -l (LF to CR LF) and -ll (CR LF to LF) add -lc
	(LF to CR LF but CR LF remains unchanged)

Known bugs:

- On VMS, zip fails reading some files with "byte record too large for
	user's buffer". You must use the "-V" option for such files.
	(many changes to VMS so may be fixed)

- on MSDOS, zip386.exe does not like "zip -bc: foo ..."

- on MSDOS, zip386.exe is sometimes much slower than zip.exe. This is
	probably a problem with DJGPP (to be investigated).

- on NT with C shell, zip should not do file name expansion again.

- zip zipfile ... ignores existing zipfile if name does not have an extension
      (except for the -A option, generally used on self-extracting files).
      (archives should probably have extensions.  Things like archive.jar work)

- For an sfx file without extension, "zip -A sfx" works but "zip sfx -A"
	doesn't.  (because options were required first, but now both OK)

- When storing files in a zipfile (-0), zip marks all of them as binary.

- On VMS, some indexed files are not restored correctly after zip -V and unzip.
	(This is now known to be a problem of UnZip. The workaround for Zip 2.2
	and newer is to use PK-style VMS extra fields; this is now the default.
	NOTE that UnZip 5.32 has been fixed [971019]!) (many VMS changes so
	this may be fixed)

- zip and unzip should use the same pattern matching rules, particularly
	on MSDOS and OS/2. On OS/2, "zip foo *.*" should also match files
	without extension.
	Partially DONE (OS/2 "*.*" matches "*".)

- there should be a way to avoid updating archive members (only addition
	of new files allowed)
