Fixes compile on Windows and Linux (if you didn't have libzip installed for some reason). --HG-- branch : trunk
106 lines
3.7 KiB
Plaintext
106 lines
3.7 KiB
Plaintext
+ [portability] no off_t in API
|
|
+ [portability] use _setmode(_fileno(fp), _O_BINARY); where present
|
|
+ [bug] _zip_u2d_time: handle localtime(3) failure
|
|
+ [bug] missing -Wl,-R in pkg-config file
|
|
+ [bug] check/cleanup flags bit 3 (streaming) support
|
|
- [feature] zip_fdopen (read zip from file descriptor), ZIP_AFL_RDONLY
|
|
- [feature] Windows support: (paritally fixed?)
|
|
. better mkstemp replacement function (no getpid; other problems?)
|
|
. snprintf replacement
|
|
. strcasecmp replacement
|
|
. ssize_t define
|
|
. mode_t define
|
|
. dll_export/dll_import support (to clarify)
|
|
- [cleanup] remove now useless check of fseek
|
|
- [consistency check] check that local headers come before central dir
|
|
- [bug] zip_open: consistency check: check data descriptor
|
|
- [bug] do not compress if storing is smaller
|
|
- [bug] zip_open: check whether file can be created and fail if not
|
|
- [bug] check for limits imposed by format (central dir size, file size, ...)
|
|
- [feature] handle zip_open/zip_close "race" for new files
|
|
- [feature] support streaming output (creating new archive to e.g. stdout)
|
|
- [feature] add functions to:
|
|
. set compression method for new/changed entry
|
|
. set last modification time for entry
|
|
. read/set EAs
|
|
. parse/create some EAs?
|
|
. read/set ASCII file flag
|
|
- [test] rename deleted (fails)
|
|
- [test] rename file to dir/ and vice versa (fails)
|
|
------------------------------------------------ API ideas
|
|
struct zip *zip_open_encrypted(const char *path, int flags,
|
|
const char *password, int *errorp);
|
|
void zip_set_default_password(struct zip *archive, const char *password);
|
|
(NULL for unsetting)
|
|
|
|
struct zip_file *zip_fopen_encrypted(struct zip *archive,
|
|
const char *fname, int flags,
|
|
const char *password);
|
|
struct zip_file *zip_fopen_index_encrypted(struct zip *archive,
|
|
int index, int flags,
|
|
const char *password);
|
|
|
|
int zip_set_encryption(struct zip *archive, int idx, int method,
|
|
const char *password);
|
|
void zip_set_archive_encryption(struct zip *archive, int encryption_method,
|
|
const char *password);
|
|
|
|
struct zip_source *zip_source_writable(struct zip *archive);
|
|
zip_source_write(struct zip_source *, const void *data, size_t len);
|
|
zip_source_printf(struct zip_source *, const char *fmt, ...);
|
|
/* maybe
|
|
zip_source_vprintf(struct zip_source *, const char *fmt, va_list ap);
|
|
*/
|
|
------------------------------------------------ others
|
|
* regression tests (duplicate file names, unchange, .{200})
|
|
* zip_commit
|
|
* zip_replace_zip: allow rewinding
|
|
* API for extracting and setting extra fields
|
|
* zipcmp: add option for file content comparison
|
|
* support for zip64 (large file)
|
|
|
|
* append to files (for self-extracting files)
|
|
* add custom compression function support
|
|
* zip_replace_zip: remember compression method, recompress if different speced
|
|
* close even if error...
|
|
* support for old compression methods?????
|
|
------------------------------------------------ regression 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
|
|
* (delete)
|
|
* (error_get)
|
|
* (error_get_sys_type)
|
|
* (error_to_str)
|
|
* (file_error_get)
|
|
* (file_strerror)
|
|
* (fopen_index)
|
|
illegal index
|
|
* (get_name)
|
|
* (get_num_files)
|
|
* (rename)
|
|
* (replace)
|
|
* (source_buffer)
|
|
* (source_file)
|
|
* (source_filep)
|
|
* (source_free)
|
|
* (source_function)
|
|
* (source_zip)
|
|
* (stat)
|
|
* (stat_index)
|
|
* (strerror)
|
|
* (unchange)
|
|
* (unchange_all)
|