! [doc] zip_source_function: mention that stat is called after close ! [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? - [cleanup] remove now useless check of fseek - [consistency check] check that local headers come before central dir - [consistency] check arguments for every entry point into libzip - [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] run regression tests also from CMake framework - [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_file_compression(struct zip *archive, zip_uint64_t idx, zip_uint16_t method, zip_uint32_t flags); flags: 0-15: compression ratio (0: fast, 15: best) 16: default higher bits: method specific 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)