update TODO
diff --git a/TODO.md b/TODO.md index 1adb737..5213e8c 100644 --- a/TODO.md +++ b/TODO.md
@@ -1,4 +1,46 @@ -# API Plans +# Soon + +* define ZIP_STATIC when libzip is built statically + +* review guidelines/community standards + - (Linux Foundation Core Infrastructure Initiative Best Practices)[https://bestpractices.coreinfrastructure.org/] + - (Readme Maturity Level)[https://github.com/LappleApple/feedmereadmes/blob/master/README-maturity-model.md] + - (Github Community Profile)[https://github.com/nih-at/libzip/community] + +* migration to CMake + - tests (libgit2 tests using ctest) + - how to make source distributions + - replace `make distcheck` + - cmake on Linux: man pages not built (https://github.com/nih-at/libzip/issues/8) + - check generated xcode project + +* clone support + - APFS + - `zip_source_buffer`: also support multiple buffers, compare `writev` `struct iovec` + - test using `zip_source_buffer` + +* randomness test: replace `zip_random()` instead of `open()` + +* run Coverity tests automatically via github/travis + +* switch to newer fcrypt sources, see https://github.com/BrianGladman/AES/issues/19 + +* add HISTORY section to man pages (semi-automatically) + - check out `zip.h` from different releases + - compare signatures + - create HISTORY sections + +* improve man page formatting of tagged lists on webpage (`<dl>`) + +* build own version of `ziptool` for regress + - move source_hole, zip from memory there + +* test error cases with special source + - tell it which command should fail + - use it both as source for `zip_add` and `zip_open_from_source` + + +# Later ## Prefixes @@ -8,12 +50,12 @@ const zip_uint8_t *zip_get_archive_prefix(struct zip *za, zip_uint64_t *lengthp); ```` -# Compression +## Compression * Test CMAKE for bzip2 * add lzma support -# API Issues +## API Issues * `zip_get_archive_comment` has `int *lenp` argument. Cleaner would be `zip_uint32_t *`. rename and fix. which other functions for naming consistency? @@ -22,12 +64,8 @@ * compression/crypt error messages a la `ZIP_ER_ZLIB` (no detailed info passing) * check arguments for every entry point into libzip -# Features +## Features -* 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 macOS * consistently use `_zip_crypto_clear()` for passwords * support setting extra fields from `zip_source` * introduce layers of extra fields: @@ -66,7 +104,7 @@ * support for old compression methods????? -# Bugs +## Bugs * 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) @@ -78,7 +116,7 @@ * `cdr == NULL` -> `ER_NOENT` vs. `idx > cdir->nentry` -> `ER_INVAL` inconsistent (still there?) -# Cleanup +## Cleanup * go over cdir parser and rename various offset/size variables to make it clearer * use bool @@ -87,17 +125,23 @@ * get rid of `zip_get_{compression,encryption}_implementation()` * use `zip_*int*_t` internally -# Analysis +## Analysis * pass through coverity -# Infrastructure +## Infrastructure * create CMakefile.txt man page linking from links file * handle missing mandoc on Linux +* configure appveyor for Windows builds of libzip -# Test Case Issues +## Test Case Issues +* consider testing for malloc/realloc failures (see `ckmame/regress/malloc.c`) +* 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 macOS * 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 @@ -154,7 +198,7 @@ * zip_open_from_source * read two zip entries interleaved -# Unsorted +## Unsorted * `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