reconsider zip_source_zip (uncompressed data for whole file not easy to get)
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);
zip_get_archive_comment
has int *lenp
argument. Cleaner would be zip_uint32_t *
. rename and fix. which other functions for naming consistency?zip_XXX_{file,archive}_*
to zip_{file,archive}_XXX_*
?ZIP_ER_ZLIB
(no detailed info passing)ZIP_FL_SUPPORT_MULTIPLE_OPENS
and allow zip_fopen (perhaps other functions) on added/replaced files with such sources_zip_crypto_clear()
for passwordszip_source
zip_source
ZIP_SOURCE_EXTRA_FIELDS
zip_replace()
O_CLOEXEC
flag after fopen and mkstempzip_file_set_mtime()
: support InfoZIP time stampszip_commit()
(to finish changes without closing archive)zip_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_{compression,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_MAX
ZIP_SOURCE_CLOSE
implementation can't return error<dl>
)make_zip_errors.sh
in cmakeZIP_EXTERN
, add to make distcheck
add 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_source
ziptool_regress
:-e error_spec
: source containing zip fails depending on error_spec
add_with_error name content error_spec
: add content to archive, where source fails depending on error_spec
add_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_spec
error_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_source
read two zip entries interleaved