review guidelines/community standards
migration to CMake
make distcheck
run Coverity tests automatically via github/travis
switch to newer fcrypt sources, see https://github.com/BrianGladman/AES/issues/19
improve man page formatting of tagged lists on webpage (<dl>
)
test error cases with special source
zip_add
and zip_open_from_source
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)consistently use _zip_crypto_clear()
for passwords
support setting extra fields from zip_source
zip_source
ZIP_SOURCE_EXTRA_FIELDS
delete all extra fields during zip_replace()
function to copy file from one archive to another
set O_CLOEXEC
flag 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:
support streaming output (creating new archive to e.g. stdout)
add functions to:
zip_commit()
(to finish changes without closing archive)
add custom compression function support
zip_fseek()
zip_source_zip()
: allow rewinding
add zip_abort()
to allow aborting zip_close()
(can be called from progress callback)
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?????
_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
internallyconsider testing for malloc/realloc failures (see ckmame/regress/malloc.c
)
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)
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
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 than EOCDLEN
bytes 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)
(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
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_CLOSE
implementation can't return error
keep error codes in man pages in sync
document error codes in new man pages