third_party/libzip/src/TODO.md
zip_close() again)).zip_source_t in main part and reference so we can keep track which reference called open and we can invalidate references if the underlying source gets invalidated (e. g. by zip_close).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);
Add zip_file_use_password to set per-file password to use if libzip needs to decrypt the file (e.g. when changing encryption or compression method).
zip_get_archive_comment has int *lenp argument. Cleaner would be zip_uint32_t *.
rename and fix. which other functions for naming consistency?
rename remaining zip_XXX_{file,archive}_* to zip_{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)
_zip_crypto_clear() for passwordszip_source
zip_sourceZIP_SOURCE_EXTRA_FIELDSO_CLOEXEC flag after fopen and mkstempzip_source_zip(): allow rewindingzipcmp: add option for file content comparisonzipcmp: add more paranoid checks:
_zip_u2d_time(): handle localtime(3) failurezip_open(): check whether file can be created and fail if notcdr == NULL -> ER_NOENT vs. idx > cdir->nentry -> ER_INVAL inconsistent (still there?)ZIP_SOURCE_SUPPORTS_{READABLE,SEEKABLE,WRITABLE}zip_source_seek_compute_offset()zip_get_encryption_implementation()zip_*int*_t internallyzip_source_file(): don't allow write if start/len specify a part of the filezip_source_write(): length can't be > ZIP_INT64_MAXZIP_SOURCE_CLOSE implementation can't return error<dl>)make_zip_errors.sh in cmakeZIP_EXTERN, add to make distcheckadd test cases for all ZIP_INCONS detail errors
incons-local-filename-short.zzip doesn't test short filename, since extra fields fail to parse.
test error cases with special source
zip_add and zip_open_from_sourceziptool_regress:
-e error_spec: source containing zip fails depending on error_specadd_with_error name content error_spec: add content to archive, where source fails depending on error_specadd_file_with_error name file_to_add offset len error_spec: add file to archive, len bytes starting from offset, where source fails depending on error_specerror_spec:
test for zipcmp reading directory (requires fts)
add test case for clone with files > 4k
consider testing for malloc/realloc failures
Winzip AES support
add test cases for lots of files (including too many)
add test cases for holes (between files, between files and cdir, between cdir and eocd, + zip64 where appropriate)
test seek in zip_source_crc_create()
test cases for set_extra*, delete_extra*, *extra_field*
test cases for in memory archives
use gcov output to increase test coverage
add test case to change values for newly added files (name, compression method, comment, mtime, . . .)
zip_open() file less than EOCDLEN bytes long
test calls against old API
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)
(close)
(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_sourceread two zip entries interleaved
test zip_file_is_seekable (via ziptool?)