| ! [API] zip_get_num_files should take flags (ZIP_FL_UNCHANGED) and return zip_uint64_t. |
| ! [cleanup] get rid of zip_get_{compression,encryption}_implementation |
| ! [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 parsing extra fields? |
| * API for setting/getting extra fields in cdir? |
| * 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) |
| * (extra_fields) |
| * (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) |