Clean up misc. todos.
- Implement missing extra field functions
- add flag for zip_file_add that overwrites any existing entry with same name
- set "version needed"/"version made by" correctly (zip64)
- zip_replace: set compression method to default unless user-set
- reset compression specific bits in bitflags when (re)compressing
- rename zip_get_{compression,encryption}_implementation to _zip_*
diff --git a/lib/zip_set_file_compression.c b/lib/zip_set_file_compression.c
index 51a74a2..bbcaa65 100644
--- a/lib/zip_set_file_compression.c
+++ b/lib/zip_set_file_compression.c
@@ -60,20 +60,22 @@
e = za->entry+idx;
- if (method != (e->orig ? e->orig->comp_method : ZIP_CM_DEFAULT)) {
+ if (method == ZIP_CM_DEFAULT && e->orig == NULL) {
+ if (e->changes) {
+ e->changes->changed &= ~ZIP_DIRENT_COMP_METHOD;
+ if (e->changes->changed == 0) {
+ _zip_dirent_free(e->changes);
+ e->changes = NULL;
+ }
+ }
+ }
+ else {
if (e->changes == NULL)
e->changes = _zip_dirent_clone(e->orig);
e->changes->comp_method = method;
e->changes->changed |= ZIP_DIRENT_COMP_METHOD;
}
- else if (e->changes) {
- e->changes->changed &= ~ZIP_DIRENT_COMP_METHOD;
- if (e->changes->changed == 0) {
- _zip_dirent_free(e->changes);
- e->changes = NULL;
- }
- }
return 0;
}