blob: df8c92c37a094dcd808ac3198985f6203b2cfb8d [file] [log] [blame]
API Plans
=========
Encryption
----------
* struct zip *zip_open_encrypted(const char *path, int flags, const char *password, int *errorp);
* 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);
API Issues
==========
* compression/crypt implementations: how to set error code on failure
* compression/crypt error messages a la ZIP_ER_ZLIB (no detailed info passing)
* check arguments for every entry point into libzip
Features
========
! Document API changes
. _set_name allows NULL (document)
. old extra fields API removed
. change in return value of get_comment: NULL if error, else pointer to empty array and len=0
. document ZIP_DISABLE_DEPRECATED (libzip man page)
. renames of zip_add, zip_rename, zip_replace, zip_add_dir, zip_{set,get}_file_comment
. NULL is now allowed for file names (zip_add, zip_add_dir, zip_rename)
* do not compress if storing is smaller
! test extra fields api
* I/O methods
* support streaming output (creating new archive to e.g. stdout)
* add functions to:
. set last modification time for entry
. read/set ASCII file flag? (wiz: more general options?)
. get/set "version made by" and "external file attributes"
(can be used to decide if an entry is a directory, if the
archive was created on DOS)
* zip_commit (to finish changes without closing archive)
* add custom compression function support
* zip_source_zip: allow rewinding
* zip_source_seek, zip_fseek
* zipcmp: add option for file content comparison
* zipcmp: compare bit flags if paranoid
* consistency
. compare number of entries with cdir value
. for stored files, test compressed = uncompressed
. data descriptor
. local headers come before central dir
- support for old compression methods?????
- append to files (for self-extracting files)
Bugs
====
! zip_file_extra_field_{delete,set}*: use dirent changes (create if neccessary)
! check inconsistent file test case result
! decide if open_filename_duplicate.test is ok or should report an error
* split zip archive torrentzip state from user requested torrentzip state
* check for limits imposed by format (central dir size, file size, extra fields, ...)
* _zip_u2d_time: handle localtime(3) failure
* missing -Wl,-R in pkg-config file
* POSIX: zip_open: check whether file can be created and fail if not
* POSIX: fix permissions of new file to match old one
* fix inconsistent usage of valid flags (not checked in many places)
* cdr == NULL -> ER_NOENT vs. idx > cdir->nentry -> ER_INVAL inconsistent (still there?)
* torrentzip broken on NetBSD/amd64 6.99
Cleanup
=======
* get rid of zip_get_{compression,encryption}_implementation
* use zip_*int*_t internally
* completely get rid of off_t
* clean up lint(1) warnings?
Test Case Issues
================
! test reading of Unicode Extra Fields
* test calls against old API
* run regression tests also from CMake framework
* rename file to dir/ and vice versa (fails)
* fix comment test to be newline insensitive
* zip64 test case ideas (but how to provide comparison and input files?)
Create files with:
* compressed < 4GB, uncompressed > 4GB
* compressed > 4GB
* offset of file or central directory > 4GB
* (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
* (error_get)
* (error_get_sys_type)
* (error_to_str)
* (extra_fields)
* (file_error_get)
* (file_strerror)
* (replace)
* (source_buffer)
* (source_file)
* (source_filep)
* (source_free)
* (source_function)
* (source_zip)
* (strerror)
* (unchange)
* (unchange_all)