For example for adding extractors for self-extracting zip archives.
zip_set_archive_prefix(struct zip *za, const zip_uint8_t *data, zip_uint64_t length);
const zip_uint8_t *zip_get_archive_prefix(struct zip *za, zip_uint64_t *lengthp);- Test CMAKE for bzip2
- disable bzip2 tests if bzip2 not enabled
- add lzma support
zip_get_archive_commenthasint *lenpargument. Cleaner would bezip_uint32_t *. rename and fix. which other functions for naming consistency?- rename remaining
zip_XXX_{file,archive}_*tozip_{file,archive}_XXX_*? - 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
-
Winzip AES support
- test cases decryption: <=20, >20, stat for both
- test cases encryption: no password, default password, file-specific password, 128/192/256, <=20, >20
- support testing on Linux
- support testing on macOS
-
consistently use
_zip_crypto_clear()for passwords -
support setting extra fields from
zip_source- introduce layers of extra fields:
- original
- from
zip_source - manually set
- when querying extra fields, search all of them in reverse order
- add whiteout (deleted) flag
- allow invalid data flag, used when computing extra field size before writing data
- new command
ZIP_SOURCE_EXTRA_FIELDS - no support for multiple copies of same extra field
- introduce layers of extra fields:
-
delete all extra fields during
zip_replace() -
function to copy file from one archive to another
-
set
O_CLOEXECflag after fopen and mkstemp -
add append-only mode writing file to disk incrementally to keep memory usage low
-
zip_file_set_mtime(): support InfoZIP time stamps -
zipcmp: support comparing more features:- version needed/made by
- general purpose bit flags
-
support streaming output (creating new archive to e.g. stdout)
-
add functions to:
- read/set ASCII file flag? (more general options?)
-
zip_commit()(to finish changes without closing archive) -
add custom compression function support
-
zip_fseek() -
zip_source_zip(): allow rewinding -
zipcmp: add option for file content comparison
-
zipcmp: compare bit flags if paranoid
-
zipcmp: compare external attributes/opsys if paranoid
-
zipcmp: compare last_mod if paranoid (or with separate flag?)
-
consistency . for stored files, test compressed = uncompressed . data descriptor . local headers come before central dir
-
support for old compression methods?????
- support InfoZIP encryption header extension (copy data descriptor for encrypted files)
- ensure that nentries is small enough not to cause overflow (size_t for entry, uint64 for CD on disk)
- fix OpenSUSE i686 regression failures
- check for limits imposed by format (central dir size, file size, extra fields, ...)
_zip_u2d_time(): handlelocaltime(3)failure- POSIX:
zip_open(): check whether file can be created and fail if not - fix inconsistent usage of valid flags (not checked in many places)
cdr == NULL->ER_NOENTvs.idx > cdir->nentry->ER_INVALinconsistent (still there?)
- use bool
- use
ZIP_SOURCE_SUPPORTS_{READABLE,SEEKABLE,WRITABLE} - use
zip_source_seek_compute_offset() - get rid of
zip_get_{compression,encryption}_implementation() - use
zip_*int*_tinternally
- pass through coverity
- create CMakefile.txt man page linking from links file
-
unchange on added file
-
test seek in
zip_source_crc() -
test cases for
set_extra*,delete_extra*,*extra_field* -
test cases for in memory archives
- add
- delete
- delete all
- modify
-
use gcov output to increase test coverage
-
merge most tools into ziptool
-
add test case to change values for newly added files (name, compression method, comment, mtime, . . .)
-
zip_open()file less thanEOCDLENbytes long -
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
-
check if http://bugs.python.org/issue20078 provides ideas for new 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
-
(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)
-
open(ZIP_RDONLY)
-
I/O abstraction layer
- zip_open_from_source
-
read two zip entries interleaved
-
zip_source_file(): don't allow write if start/len specify a part of the file -
script to check if all exported symbols are marked with
ZIP_EXTERN, add to make distcheck -
document:
zip_source_write(): length can't be >ZIP_INT64_MAX -
document:
ZIP_SOURCE_CLOSEimplementation can't return error -
keep error codes in man pages in sync
-
document error codes in new man pages