! [compat] test calls against old API
+ [portability] use _setmode(_fileno(fp), _O_BINARY); where present
+ [bug] fix permissions of new file to match old one
+ [bug] _zip_checkcons return value can overflow
+ [bug] _zip_u2d_time: handle localtime(3) failure
+ [bug] missing -Wl,-R in pkg-config file
+ [cleanup] use zip_*int*_t internally
+ [cleanup] don't make zip_source_zip go through zip_fread
+ [bug] set "version of encoding software" to 2.0
+ [bug?] keep extended local headers when copying?
- [feature] Windows support: (partially fixed?)
  . better mkstemp replacement function (no getpid; other problems?)
  . snprintf replacement
  . strcasecmp replacement
  . mode_t define
  . dll_export/dll_import support (to clarify)
- [cleanup] remove now useless check of fseek 
- [consistency check] check that local headers come before central dir
- [bug] zip_open: consistency check: check data descriptor
- [bug] do not compress if storing is smaller
- [bug] zip_open: check whether file can be created and fail if not
- [bug] check for limits imposed by format (central dir size, file size, ...)
- [feature] handle zip_open/zip_close "race" for new files
- [feature] support streaming output (creating new archive to e.g. stdout)
- [feature] add functions to:
  . set compression method for new/changed entry
  . set last modification time for entry
  . read/set EAs
  . parse/create some EAs?
  . read/set ASCII file flag
- [test] rename deleted (fails)
- [test] rename file to dir/ and vice versa (fails)
------------------------------------------------ API issues
- character encoding in file names and comments (ZIP_AFL_UTF8, see mail)
- parameters for compression/crypt implementations (extra function)
  ZIP_CM_DEFLATE/ZIP_CM_BZIP2: compression level
  			       memlevel?
* compression/crypt implementations: how to set error code on failure
+ compression/crypt error messages a la ZIP_ER_ZLIB (no detailed info passing)
* I/O methods
------------------------------------------------ API ideas
struct zip *zip_open_encrypted(const char *path, int flags,
                               const char *password, int *errorp);

int zip_set_compression(struct zip *archive, zip_uint64_t idx,
    			zip_uint16_t method);
int zip_set_encryption(struct zip *archive, zip_uint64_t idx,
    		       zip_uint16_t method, const char *password);
void zip_set_archive_encryption(struct zip *archive,
     				zip_uint16_t method, const char *password);

struct zip_source *zip_source_writable(struct zip *archive);
zip_source_write(struct zip_source *, const void *data, size_t len);
zip_source_printf(struct zip_source *, const char *fmt, ...);
/* maybe
zip_source_vprintf(struct zip_source *, const char *fmt, va_list ap);
*/
------------------------------------------------ others
* regression tests (duplicate file names, unchange, .{200})
* zip_commit
* zip_replace_zip: allow rewinding
* API for extracting and setting extra fields
* zipcmp: add option for file content comparison
* support for zip64 (large file)

* append to files (for self-extracting files)
* add custom compression function support
* zip_replace_zip: remember compression method, recompress if different speced
* close even if error...
* support for old compression methods?????
------------------------------------------------ regression tests
* (add, replace)
	add to empty zip
	add to existing zip
	add w/ existing file name [E]
	replace ok
	replace w/ illegal index [E]
	replace w/ deleted name [E]
	unchange added/replaced file
* (close)
	copy zip file
	open copy
	rename, delete, replace, add w/ new name, add w/ deleted name
	close
	zipcmp copy expected
	remove copy
* (delete)
* (error_get)
* (error_get_sys_type)
* (error_to_str)
* (file_error_get)
* (file_strerror)
* (fopen_index)
	illegal index
* (get_name)
* (get_num_files)
* (rename)
* (replace)
* (source_buffer)
* (source_file)
* (source_filep)
* (source_free)
* (source_function)
* (source_zip)
* (stat)
* (stat_index)
* (strerror)
* (unchange)
* (unchange_all)
