   Chronic deficiencies:

- Automated testing system.  Should accommodate multiple operating
  systems (at least Unix, VMS and Windows?), so Perl-based?

- Testing.

- Performance analysis and improvement.

- Localized messages.


New stuff to be added to the main list (if not already there):
- Check if -X is implemented on platforms other than Unix and VMS
    (8 Jul 2010 SMS)
- Check if UnZip ?? are appropriately displayed in file names.  (12 Jul 2010 EG,
    from forum thread "Info-ZIP Software Discussions and Feature Requests >
    Info-ZIP UnZip > How to deal with a list of filenames with '??'")
    (Also thread "Info-ZIP Bugs > UnZip Bugs > file listing in UTF-8 shows
    question marks")
- Explain path matching in extended help, such as *a.txt matches a/b/a.txt.
    (12 Jul 2010 EG, from forum thread "Info-ZIP Software Discussions and
    Feature Requests > Info-ZIP UnZip > How to extract a single file among
    using unzip?")
- Add -O option to set the code page.  (12 Jul 2010 EG, from forum thread
    "Info-ZIP Bugs > UnZip Bugs > Unzip 6.0 is missing option -O")
        Seems to be in 6.10b.
- Look at extracting files with names larger than local OS limit (maybe
    by adding a truncation option.  (12 Jul 2010 EG, from forum thread
    "Info-ZIP Bugs > UnZip Bugs > unzip archives with very long filenames")    
- Add compression method 98 (PPMd).  See the thread for references.  (12 Jul
    2010 EG, from forum thread "Info-ZIP Bugs > UnZip Bugs > unsupported
    compression method 98")
        Done in 6.10c09.
- Fix for funzip.  (12 Jul 2010 EG, from forum thread "Info-ZIP Bugs > UnZip
    Bugs > compilation error: Uz_Globs has no  disk_full")
        Fixed in 6.10c09.
- Add more specifics about editing flags.  Is check needed that all data
    from extra field was read?  (12 Jul 2010 EG, from forum thread "Info-ZIP
    Bugs > UnZip Bugs > Valgrind reports uninitialized reads in unzip")
- Handle archives that truncate large files at 32 bits.  (12 Jul 2010 EG,
    from forum thread "Info-ZIP Bugs > UnZip Bugs > Unable to extract
    large ZIP files")
- Probably should update the non-generic targets of UNIX Makefile.  (12
    Jul 2010 EG, from forum thread "Info-ZIP Software Discussions and
    Feature Requests > Info-ZIP UnZip > How to include large file support
    in unzip 6.00")
- Recover ftp damaged file.  (12 Jul 2010 EG, from forum thread "Info-ZIP
    Software Discussions and Feature Requests > Info-ZIP UnZip > Recover
    ascii ftp damaged zip file - I've done it!")
- Support for more Mac-specific file attributes in AppleDouble scheme.
    (3 Aug 2010 SMS)
- Testing Mac-specific attribute code on (different-endian) Intel Mac
    (including crossing between Power PC and Intel).  (3 Aug 2010 SMS)
- Look at controlling attribute extraction more finely, maybe using a
    new --restore-attributes=(protection,owner,acl) option.  (3 Aug
    2010 SMS, EG)

- Shared object (Unix) or shareable image (VMS) for the object library.

================================
For UnZip 6.1/who knows:
================================

   o add extraction support for other compression algorithms used by new
     PKZIP, WinZIP, 7-Zip versions
     - LZMA, compression type 14 (most important, because of its efficiency)
     - PPMd, compression type 98 (maybe, less important)
     - WavPack, compression type 97 (maybe, less important)

       LZMA is first-level priority for 6.1, other formats may be taken
       into consideration

        LZMA and PPMd done in 6.10c09.

   o add support for reading AES encrypted archives
     - WinZIP format (priority 1)
     - PKZip format (priority 2)

        top level item for 6.1

   o add multi-part zipfile handling

        major feature for 6.x!

        could happen for 6.1

   o better support for multilingual uses and different codepages;
     support unicode (UTF-8 coded) filenames and comment texts

        a requested feature getting more and more important,
        - partially done for the Windows port in 6.0
          (support restricted for chars of the current system codepage)
        - partially done (beta state) for Unix
          (requires native codepage to be UTF-8)

   o complete support for UTF-8 coded entry names (and comments)
     - add new "win32_wide" port to extend unicode support on Windows
       beyond the restrictions of the current (ANSI) system codepage
     - revise/extend the WinDLL interface to allow passing of "wide"
       string argument data
     - add simple built-in character translation between UTF-8 and the
       old (ISO-8851-1 / IBM850) code pages to allow old systems without
       standard UTF-8 support to read UTF-8 encoded archives.
     - extend the built-in translation tables to support other language
       regions besides "Western_Latin1" (e.g. Russian-kyrillic, Japanese,
       Chinese)
       There has been talk on the forum to link to the libiconv library
       to do translations.
     - streamline the multilingual codepage and UTF-8 support for the UNIX
       port (standard codepage translation facility?, like WideChar<->AnsiCP
       translation functions under MS Windows)

        should happen for 6.1
        (there is internal alpha-state code for better "wide" support on
        Windows available at the time of the 6.0 release)
        Planned for UnZip 6.10b.

   o revise the "extended charcodes" handling in decryption password to
     support UTF-8 encoding on Unicode-aware systems where the "native"
     character coding is NOT UTF-8 (e.g. Windows).

   o revise the command line interface for more compatibility with Zip'
     command parser
     - implement the versatile command parser from Zip 3.0.
     - add "long option" definitions for all existing options; revise
       the UnZip user manual to document the long-option alternatives.
     - add support for reading the "process these entries" and the "skip
       these entries" pattern lists from a file (or from separate files ?).
     - add a (long) option to switch off UnZip's internal pattern matching
       on filename arguments.

        Initial implementation done in 6.1

   o add command line options for miscellaneous features requested by users
     and/or development team members:
     - display the Info-ZIP software license (done as --license in 6.1)
     - more fine-tuning for file attributes set/restored at extraction, like:
       set/clear archive attribute on DOS/OS2/WIN32;
       apply/skip standard or user-defined umask filter on UNIX (& Unix-alike)
     - additional time-stamp related processing filters
     - more listing display modifications
     - overriding the default date-time display style
     - ...

     All these options are of minor importance and/or would collide with
     existing "one-character" options.  The current UnZip maintainer does not
     want to reserve any of the few not-yet-occupied short option characters.
     for one of these features.   So, any implementation effort for items
     of this feature wish-list has to be delayed until the "long option"
     support of the revised command line parser becomes available.


------------------------------

New stuff:

   - option to extract a file using a new name
     (2009-6-9, Kamers on forum
      (http://www.info-zip.org/board/board.pl?m-1244582716/))

   - support Windows extra long paths
     (2009-7-8, fritz.mueller on forum
      (http://www.info-zip.org/board/board.pl?m-1246994079/))


------------------------------

       some option may get implemented in 6.1

   o support for
     and/or development team members:

   o add new low-level, binary API; rewrite "normal" (command-line) UnZip
     to use it

        maybe soon (maybe 6.1)

   o MSDOS/WIN32/others: detection of "reserved" names (= names of character
     devices, or system extensions that look like a characters device driver)
     at runtime; with the goal of emitting "meaningful" error messages and/or
     rename queries.
     (Currently, these reserved names are catched as "non-deletable files".
      On MSDOS and WIN32, when the RTL stat() function allows to identify
      character devices, the "reserved" names are automatically prefixed with
      an underscore.)

   o redesign "file exists -- is newer/older -- overwrite/skip/rename"
     logic in extract.c and the corresponding system specific mapname()
     services; to prevent superfluous decryption key prompts for entry
     that will be skipped, later.

   o rewrite to use fread/fseek/etc.  [eventually: test
     write(bytes) vs. fwrite(words), especially on Crays/Alphas]

        soon (probably in conjunction with multi-part handling)

   o incorporate new backfill version of inflate()

        wait for zlib version

   o check NEXTBYTE for EOF in crypt.c, funzip.c and explode.c, too

        whenever
        Done in crypt.c and funzip.c in 6.10c09.

   o add option to force completely non-interactive operation (no queries
     for overwrite/rename, password, etc.); also allow some sort of non-
     interactive password provision?  (file? command-line? env. variable?)

        someday?

   o add testing of extra fields (if have CRC)

        later

   o rewrite to allow use as a filter

        way, way later...

   o add Unix hard-link support?

        way, way later...

   o add ".ini" file support as a (more elaborate) alternative to the presently
     supported preconfiguring abilities via special environment variables
     (UNZIP on many systems...)?

        way, way later (if ever)...

   o add option to search zipfile contents for a string and print the
     results? ("zipgrep" option--e.g., unzip -g or unzip -S) (easy for
     fixed strings, hard for wildcards/true regex's)

        way, way later, if at all...probably use libregex

   o add -y "display symlinks" option to zipinfo?  various sorting options?
     (-St date/time, -Sn name)?

        who knows

   o add "in-depth" option to zipinfo? (check local headers against
     central, etc.)--make it a better debugging tool (or just create
     zipfix)

        who knows (zip -F, -FF already exist)

Some maintenance or OS specific topics for 6.x release:

   * add "unix-style-path -> partitioned-dataset filename" conversion
     to MVS port

   * should we add support for (null) entry names (empty entry name field), to
     conform to the PKWARE specification?
        Done in 6.10c09.

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

Requested features:

 - extract or exclude on basis of UID [Armin Bub, Armin.Bub@bk.bosch.de, 970904]

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

   o miscellaneous little stuff:  whenever
     --------------------------

 - change DOS -f/-u stuff to use DOS API for getting filetimes, not stat()

 - add (-N?) option to lose all user input and/or switch to "(*input)()"
   function, replaceable by UzpAltMain() param
 - add -@ option to read from stdin (zip) or from file (PKZIP)?  (go32 built-in)
 - add -oo option to overwrite OS/2 and DOS system and hidden files, too
 - add option to compute MD5 checksum on files and/or on entire zipfile?

 - decide whether to use WinGUI "skipping" diagnostics in extract.c
 - combine "y/n/A/N" query/response stuff into unified section with query
    function(s) (InputFn?)
 - disable ^V code in remaining mapname() routines

 - change filename-matching logic so case-insensitive if case-sensitive fails?

 - allow multiple dir creation with -d option? [Bob Maynard]

 - use gcc -pg, gprof to do profiling on unzip

 - Doug Patriarche (doug.patriarche.bvdhp01@nt.com) Northern Telecom Canada Ltd.
    "I need to do a port of zip/unzip for Wind River Systems' VxWorks OS"
    [GRR:  15 March 95 -> "early June"]


Features from old BUGS file (mostly duplicates of other entries above):

 - ignore case for internal filename match on non-Unix systems, unless file-
    specs enclosed in single quotes
 - modify to decompress input stream if part of a pipe, but continue using
    central directory if not (BIG job!)--extended local header capability
 - add zipinfo option(s) to sort alphabetically, by date/time, in reverse, etc.
 - when listing filenames, use '?' for non-printables? [Thomas Wolff, 92.6.1]
 - add zipinfo "in-depth" option? (check local vs. central filenames, etc.)
 - create zipcat program to concatenate zipfiles
 - add -oo option (overwrite and override)?  no user queries (if bad password,
    skip file; if disk full, take default action; if VMS special on non-VMS,
    unpack anyway; etc.)
 - add -Q[Q[Q]] option (quiet mode on comments, cautions, warnings and errors)?
    forget -oo, or make synonym?  Default level -Q?
