Fix default compression. Also, add dedicated test case.
diff --git a/lib/zip_source_deflate.c b/lib/zip_source_deflate.c index a59ac49..7960a1b 100644 --- a/lib/zip_source_deflate.c +++ b/lib/zip_source_deflate.c
@@ -120,37 +120,18 @@ ret = deflate(&ctx->zstr, ctx->eof ? Z_FINISH : 0); switch (ret) { + case Z_STREAM_END: + if (ctx->can_store && ctx->zstr.total_in <= ctx->zstr.total_out) { + ctx->is_stored = true; + ctx->size = ctx->zstr.total_in; + memcpy(data, ctx->buffer, ctx->size); + return (zip_int64_t)ctx->size; + } + /* fallthrough */ case Z_OK: - case Z_STREAM_END: /* all ok */ if (ctx->zstr.avail_out == 0) { - /* if we can return stored data (ZIP_CM_DEFAULT and we never returned compressed data), - all input is still available, - the output buffer is at least as big as the input data, - and at least one byte from buffer used by zlib */ - if (ctx->can_store && ctx->zstr.total_in+ctx->zstr.avail_in <= sizeof(ctx->buffer) && len >= ctx->zstr.total_in && ctx->zstr.avail_in < sizeof(ctx->buffer)) { - zip_uint8_t buf[1]; - if ((n=zip_source_read(src, buf, 1)) < 0) { - _zip_error_set_from_source(&ctx->error, src); - end = 1; - break; - } - if (n == 0) { - ctx->is_stored = true; - ctx->eof = true; - ctx->size = ctx->zstr.total_in + ctx->zstr.avail_in; - memcpy(data, ctx->buffer, ctx->size); - return (zip_int64_t)ctx->size; - } - else { - /* not EOF */ - memmove(ctx->buffer, ctx->zstr.next_in, ctx->zstr.avail_in); - ctx->buffer[ctx->zstr.avail_in] = buf[0]; - ctx->zstr.avail_in += 1; - ctx->zstr.next_in = (Bytef *)ctx->buffer; - } - } out_offset += out_len; if (out_offset < len) { out_len = (uInt)ZIP_MIN(UINT_MAX, len-out_offset); @@ -158,6 +139,7 @@ ctx->zstr.avail_out = out_len; } else { + ctx->can_store = false; end = 1; } } @@ -181,16 +163,12 @@ ctx->eof = true; /* TODO: check against stat of src? */ ctx->size = ctx->zstr.total_in; - /* if we can return stored data (ZIP_CM_DEFAULT and we never returned compressed data), - all input is still available, - and the output buffer is at least as big as the input data */ - if (ctx->can_store && ctx->zstr.total_in+ctx->zstr.avail_in <= sizeof(ctx->buffer) && len >= ctx->zstr.total_in) { - ctx->is_stored = true; - memcpy(data, ctx->buffer, ctx->zstr.total_in); - return (zip_int64_t)ctx->zstr.total_in; - } } else { + if (ctx->zstr.total_in > 0) { + /* we overwrote a previously filled ctx->buffer */ + ctx->can_store = false; + } ctx->zstr.next_in = (Bytef *)ctx->buffer; ctx->zstr.avail_in = (uInt)n; }
diff --git a/regress/Makefile.am b/regress/Makefile.am index adf437c..51805ef 100644 --- a/regress/Makefile.am +++ b/regress/Makefile.am
@@ -34,6 +34,7 @@ bigzero-zip.zip \ bogus.zip \ broken.zip \ + cm-default.zip \ encrypt.zip \ encrypt_plus_extra.zip \ encrypt_plus_extra_modified_c.zip \ @@ -80,6 +81,7 @@ incons-local-filename.zip \ incons-local-magic-bad.zip \ incons-local-size-larger.zip \ + large-uncompressable \ manyfiles-zip.zip \ rename_ok.zip \ streamed.zip \
diff --git a/regress/cm-default.test b/regress/cm-default.test new file mode 100644 index 0000000..9241770 --- /dev/null +++ b/regress/cm-default.test
@@ -0,0 +1,6 @@ +# test default compression stores if smaller +program modify +return 0 +args -n test.zip add compressable aaaaaaaaaaaaaa add uncompressable uncompressable add_nul large-compressable 8200 add_file large-uncompressable large-uncompressable 0 -1 +file-new test.zip cm-default.zip +file large-uncompressable large-uncompressable large-uncompressable
diff --git a/regress/cm-default.zip b/regress/cm-default.zip new file mode 100644 index 0000000..3eba2a3 --- /dev/null +++ b/regress/cm-default.zip Binary files differ
diff --git a/regress/large-uncompressable b/regress/large-uncompressable new file mode 100644 index 0000000..e7e26d9 --- /dev/null +++ b/regress/large-uncompressable Binary files differ
diff --git a/xcode/libzip.xcodeproj/project.pbxproj b/xcode/libzip.xcodeproj/project.pbxproj index 7d72ab4..14c96d5 100644 --- a/xcode/libzip.xcodeproj/project.pbxproj +++ b/xcode/libzip.xcodeproj/project.pbxproj
@@ -865,6 +865,103 @@ 4BCF3035199ABDDA0064207B /* zip_source_tell_write.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip_source_tell_write.c; sourceTree = "<group>"; }; 4BD155CE191CD28D0046F012 /* NiHTest.pm */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = text.script.perl; path = NiHTest.pm; sourceTree = "<group>"; tabWidth = 4; usesTabs = 1; }; 4BD155CF191CD28D0046F012 /* runtest.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = runtest.in; sourceTree = "<group>"; }; + 4BD35E411A33366200256CB7 /* add_dir.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_dir.test; sourceTree = "<group>"; }; + 4BD35E421A33366200256CB7 /* add_from_buffer.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_buffer.test; sourceTree = "<group>"; }; + 4BD35E431A33366200256CB7 /* add_from_file_duplicate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_file_duplicate.test; sourceTree = "<group>"; }; + 4BD35E441A33366200256CB7 /* add_from_file_twice_duplicate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_file_twice_duplicate.test; sourceTree = "<group>"; }; + 4BD35E451A33366200256CB7 /* add_from_file.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_file.test; sourceTree = "<group>"; }; + 4BD35E461A33366200256CB7 /* add_from_filep.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_filep.test; sourceTree = "<group>"; }; + 4BD35E471A33366200256CB7 /* add_from_stdin.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_stdin.test; sourceTree = "<group>"; }; + 4BD35E481A33366200256CB7 /* add_from_zip_closed.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_zip_closed.test; sourceTree = "<group>"; }; + 4BD35E491A33366200256CB7 /* add_from_zip_deflated.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_zip_deflated.test; sourceTree = "<group>"; }; + 4BD35E4A1A33366200256CB7 /* add_from_zip_partial_deflated.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_zip_partial_deflated.test; sourceTree = "<group>"; }; + 4BD35E4B1A33366200256CB7 /* add_from_zip_partial_stored.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_zip_partial_stored.test; sourceTree = "<group>"; }; + 4BD35E4C1A33366200256CB7 /* add_from_zip_stored.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_zip_stored.test; sourceTree = "<group>"; }; + 4BD35E4D1A33366200256CB7 /* add_from_zip.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_from_zip.test; sourceTree = "<group>"; }; + 4BD35E4E1A33366200256CB7 /* add_stored_in_memory.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_stored_in_memory.test; sourceTree = "<group>"; }; + 4BD35E4F1A33366200256CB7 /* add_stored.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = add_stored.test; sourceTree = "<group>"; }; + 4BD35E501A33366200256CB7 /* cm-default.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "cm-default.test"; sourceTree = "<group>"; }; + 4BD35E511A33366200256CB7 /* delete_add_same.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = delete_add_same.test; sourceTree = "<group>"; }; + 4BD35E521A33366200256CB7 /* delete_invalid.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = delete_invalid.test; sourceTree = "<group>"; }; + 4BD35E531A33366200256CB7 /* delete_last.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = delete_last.test; sourceTree = "<group>"; }; + 4BD35E541A33366200256CB7 /* delete_multiple_last.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = delete_multiple_last.test; sourceTree = "<group>"; }; + 4BD35E551A33366200256CB7 /* delete_multiple_partial.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = delete_multiple_partial.test; sourceTree = "<group>"; }; + 4BD35E561A33366200256CB7 /* delete_renamed_rename.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = delete_renamed_rename.test; sourceTree = "<group>"; }; + 4BD35E571A33366200256CB7 /* encoding-ascii.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "encoding-ascii.test"; sourceTree = "<group>"; }; + 4BD35E581A33366200256CB7 /* encoding-cp437-all.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "encoding-cp437-all.test"; sourceTree = "<group>"; }; + 4BD35E591A33366200256CB7 /* encoding-cp437.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "encoding-cp437.test"; sourceTree = "<group>"; }; + 4BD35E5A1A33366200256CB7 /* encoding-utf-8.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "encoding-utf-8.test"; sourceTree = "<group>"; }; + 4BD35E5B1A33366200256CB7 /* encrypt.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = encrypt.test; sourceTree = "<group>"; }; + 4BD35E5C1A33366200256CB7 /* extra_add_multiple.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_add_multiple.test; sourceTree = "<group>"; }; + 4BD35E5D1A33366200256CB7 /* extra_add.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_add.test; sourceTree = "<group>"; }; + 4BD35E5E1A33366200256CB7 /* extra_count_by_id.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_count_by_id.test; sourceTree = "<group>"; }; + 4BD35E5F1A33366200256CB7 /* extra_count_ignore_zip64.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_count_ignore_zip64.test; sourceTree = "<group>"; }; + 4BD35E601A33366200256CB7 /* extra_count.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_count.test; sourceTree = "<group>"; }; + 4BD35E611A33366200256CB7 /* extra_delete_by_id.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_delete_by_id.test; sourceTree = "<group>"; }; + 4BD35E621A33366200256CB7 /* extra_delete.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_delete.test; sourceTree = "<group>"; }; + 4BD35E631A33366200256CB7 /* extra_get_by_id.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_get_by_id.test; sourceTree = "<group>"; }; + 4BD35E641A33366200256CB7 /* extra_get.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_get.test; sourceTree = "<group>"; }; + 4BD35E651A33366200256CB7 /* extra_set_modify_c.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_set_modify_c.test; sourceTree = "<group>"; }; + 4BD35E661A33366200256CB7 /* extra_set_modify_l.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_set_modify_l.test; sourceTree = "<group>"; }; + 4BD35E671A33366200256CB7 /* extra_set.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extra_set.test; sourceTree = "<group>"; }; + 4BD35E681A33366200256CB7 /* file_comment_encmismatch.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = file_comment_encmismatch.test; sourceTree = "<group>"; }; + 4BD35E691A33366200256CB7 /* fopen_unchanged.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fopen_unchanged.test; sourceTree = "<group>"; }; + 4BD35E6A1A33366200256CB7 /* fread.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fread.test; sourceTree = "<group>"; }; + 4BD35E6B1A33366200256CB7 /* get_comment.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = get_comment.test; sourceTree = "<group>"; }; + 4BD35E8E1A33366200256CB7 /* name_locate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = name_locate.test; sourceTree = "<group>"; }; + 4BD35E8F1A33366200256CB7 /* open_cons_extrabytes.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_cons_extrabytes.test; sourceTree = "<group>"; }; + 4BD35E901A33366200256CB7 /* open_empty_2.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_empty_2.test; sourceTree = "<group>"; }; + 4BD35E911A33366200256CB7 /* open_empty.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_empty.test; sourceTree = "<group>"; }; + 4BD35E921A33366200256CB7 /* open_extrabytes.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_extrabytes.test; sourceTree = "<group>"; }; + 4BD35E931A33366200256CB7 /* open_filename_duplicate_consistency.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_filename_duplicate_consistency.test; sourceTree = "<group>"; }; + 4BD35E941A33366200256CB7 /* open_filename_duplicate_empty_consistency.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_filename_duplicate_empty_consistency.test; sourceTree = "<group>"; }; + 4BD35E951A33366200256CB7 /* open_filename_duplicate_empty.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_filename_duplicate_empty.test; sourceTree = "<group>"; }; + 4BD35E961A33366200256CB7 /* open_filename_duplicate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_filename_duplicate.test; sourceTree = "<group>"; }; + 4BD35E971A33366200256CB7 /* open_filename_empty.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_filename_empty.test; sourceTree = "<group>"; }; + 4BD35E981A33366200256CB7 /* open_incons.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_incons.test; sourceTree = "<group>"; }; + 4BD35E991A33366200256CB7 /* open_many_ok.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_many_ok.test; sourceTree = "<group>"; }; + 4BD35E9A1A33366200256CB7 /* open_new_but_exists.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_new_but_exists.test; sourceTree = "<group>"; }; + 4BD35E9B1A33366200256CB7 /* open_new_ok.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_new_ok.test; sourceTree = "<group>"; }; + 4BD35E9C1A33366200256CB7 /* open_nonarchive.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_nonarchive.test; sourceTree = "<group>"; }; + 4BD35E9D1A33366200256CB7 /* open_nosuchfile.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_nosuchfile.test; sourceTree = "<group>"; }; + 4BD35E9E1A33366200256CB7 /* open_ok.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_ok.test; sourceTree = "<group>"; }; + 4BD35E9F1A33366200256CB7 /* open_too_short.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_too_short.test; sourceTree = "<group>"; }; + 4BD35EA01A33366200256CB7 /* open_truncate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_truncate.test; sourceTree = "<group>"; }; + 4BD35EA11A33366200256CB7 /* open_zip64_ok.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = open_zip64_ok.test; sourceTree = "<group>"; }; + 4BD35EA21A33366200256CB7 /* rename_ascii.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_ascii.test; sourceTree = "<group>"; }; + 4BD35EA31A33366200256CB7 /* rename_cp437.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_cp437.test; sourceTree = "<group>"; }; + 4BD35EA41A33366200256CB7 /* rename_deleted.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_deleted.test; sourceTree = "<group>"; }; + 4BD35EA51A33366200256CB7 /* rename_fail.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_fail.test; sourceTree = "<group>"; }; + 4BD35EA61A33366200256CB7 /* rename_ok.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_ok.test; sourceTree = "<group>"; }; + 4BD35EA81A33366200256CB7 /* rename_utf8_encmismatch.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_utf8_encmismatch.test; sourceTree = "<group>"; }; + 4BD35EA91A33366200256CB7 /* rename_utf8.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rename_utf8.test; sourceTree = "<group>"; }; + 4BD35EAA1A33366200256CB7 /* set_comment_all.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_comment_all.test; sourceTree = "<group>"; }; + 4BD35EAB1A33366200256CB7 /* set_comment_localonly.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_comment_localonly.test; sourceTree = "<group>"; }; + 4BD35EAC1A33366200256CB7 /* set_comment_removeglobal.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_comment_removeglobal.test; sourceTree = "<group>"; }; + 4BD35EAD1A33366200256CB7 /* set_comment_revert.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_comment_revert.test; sourceTree = "<group>"; }; + 4BD35EAE1A33366200256CB7 /* set_compression_deflate_to_deflate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_compression_deflate_to_deflate.test; sourceTree = "<group>"; }; + 4BD35EAF1A33366200256CB7 /* set_compression_deflate_to_store.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_compression_deflate_to_store.test; sourceTree = "<group>"; }; + 4BD35EB01A33366200256CB7 /* set_compression_store_to_deflate.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_compression_store_to_deflate.test; sourceTree = "<group>"; }; + 4BD35EB11A33366200256CB7 /* set_compression_store_to_store.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_compression_store_to_store.test; sourceTree = "<group>"; }; + 4BD35EB21A33366200256CB7 /* set_compression_unknown.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_compression_unknown.test; sourceTree = "<group>"; }; + 4BD35EB31A33366200256CB7 /* set_mtime.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = set_mtime.test; sourceTree = "<group>"; }; + 4BD35EB41A33366200256CB7 /* stat_index_cp437_guess.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_cp437_guess.test; sourceTree = "<group>"; }; + 4BD35EB51A33366200256CB7 /* stat_index_cp437_raw.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_cp437_raw.test; sourceTree = "<group>"; }; + 4BD35EB61A33366200256CB7 /* stat_index_cp437_strict.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_cp437_strict.test; sourceTree = "<group>"; }; + 4BD35EB71A33366200256CB7 /* stat_index_fileorder.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_fileorder.test; sourceTree = "<group>"; }; + 4BD35EB81A33366200256CB7 /* stat_index_streamed_zip64.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_streamed_zip64.test; sourceTree = "<group>"; }; + 4BD35EB91A33366200256CB7 /* stat_index_streamed.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_streamed.test; sourceTree = "<group>"; }; + 4BD35EBA1A33366200256CB7 /* stat_index_utf8_guess.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_utf8_guess.test; sourceTree = "<group>"; }; + 4BD35EBB1A33366200256CB7 /* stat_index_utf8_raw.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_utf8_raw.test; sourceTree = "<group>"; }; + 4BD35EBC1A33366200256CB7 /* stat_index_utf8_strict.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_utf8_strict.test; sourceTree = "<group>"; }; + 4BD35EBD1A33366200256CB7 /* stat_index_utf8_unmarked_strict.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_utf8_unmarked_strict.test; sourceTree = "<group>"; }; + 4BD35EBE1A33366200256CB7 /* stat_index_zip64.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stat_index_zip64.test; sourceTree = "<group>"; }; + 4BD35EDD1A33366300256CB7 /* torrent-already.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "torrent-already.test"; sourceTree = "<group>"; }; + 4BD35EDE1A33366300256CB7 /* torrent-new.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "torrent-new.test"; sourceTree = "<group>"; }; + 4BD35EE11A33366300256CB7 /* utf-8-standardization.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "utf-8-standardization.test"; sourceTree = "<group>"; }; + 4BD35EE31A33366300256CB7 /* zip64_creation.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = zip64_creation.test; sourceTree = "<group>"; }; + 4BD35EE41A33366300256CB7 /* zip64_stored_creation.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = zip64_stored_creation.test; sourceTree = "<group>"; }; + 4BD35EE61A33407200256CB7 /* Makefile.am */ = {isa = PBXFileReference; indentWidth = 8; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; usesTabs = 1; }; 4BD5053219A0116D007DD28A /* zip_source_call.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip_source_call.c; sourceTree = "<group>"; }; 4BD6CB5C19E6A5D900710654 /* source_hole.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = source_hole.c; sourceTree = "<group>"; }; 4BD6CB5E19E71B3B00710654 /* hole.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hole.c; sourceTree = "<group>"; }; @@ -1254,6 +1351,7 @@ 4BACD57415BC2AA100920691 /* regress */ = { isa = PBXGroup; children = ( + 4BD35EE61A33407200256CB7 /* Makefile.am */, 4BD155CE191CD28D0046F012 /* NiHTest.pm */, 4BD155CF191CD28D0046F012 /* runtest.in */, 4BACD57615BC2AEF00920691 /* add_from_buffer.c */, @@ -1270,11 +1368,115 @@ 4BACD58215BC2AEF00920691 /* set_compression.c */, 4BD6CB5C19E6A5D900710654 /* source_hole.c */, 4BACD58415BC2AEF00920691 /* tryopen.c */, + 4BD35E401A33362A00256CB7 /* test cases */, ); name = regress; path = ../regress; sourceTree = "<group>"; }; + 4BD35E401A33362A00256CB7 /* test cases */ = { + isa = PBXGroup; + children = ( + 4BD35E411A33366200256CB7 /* add_dir.test */, + 4BD35E421A33366200256CB7 /* add_from_buffer.test */, + 4BD35E431A33366200256CB7 /* add_from_file_duplicate.test */, + 4BD35E441A33366200256CB7 /* add_from_file_twice_duplicate.test */, + 4BD35E451A33366200256CB7 /* add_from_file.test */, + 4BD35E461A33366200256CB7 /* add_from_filep.test */, + 4BD35E471A33366200256CB7 /* add_from_stdin.test */, + 4BD35E481A33366200256CB7 /* add_from_zip_closed.test */, + 4BD35E491A33366200256CB7 /* add_from_zip_deflated.test */, + 4BD35E4A1A33366200256CB7 /* add_from_zip_partial_deflated.test */, + 4BD35E4B1A33366200256CB7 /* add_from_zip_partial_stored.test */, + 4BD35E4C1A33366200256CB7 /* add_from_zip_stored.test */, + 4BD35E4D1A33366200256CB7 /* add_from_zip.test */, + 4BD35E4E1A33366200256CB7 /* add_stored_in_memory.test */, + 4BD35E4F1A33366200256CB7 /* add_stored.test */, + 4BD35E501A33366200256CB7 /* cm-default.test */, + 4BD35E511A33366200256CB7 /* delete_add_same.test */, + 4BD35E521A33366200256CB7 /* delete_invalid.test */, + 4BD35E531A33366200256CB7 /* delete_last.test */, + 4BD35E541A33366200256CB7 /* delete_multiple_last.test */, + 4BD35E551A33366200256CB7 /* delete_multiple_partial.test */, + 4BD35E561A33366200256CB7 /* delete_renamed_rename.test */, + 4BD35E571A33366200256CB7 /* encoding-ascii.test */, + 4BD35E581A33366200256CB7 /* encoding-cp437-all.test */, + 4BD35E591A33366200256CB7 /* encoding-cp437.test */, + 4BD35E5A1A33366200256CB7 /* encoding-utf-8.test */, + 4BD35E5B1A33366200256CB7 /* encrypt.test */, + 4BD35E5C1A33366200256CB7 /* extra_add_multiple.test */, + 4BD35E5D1A33366200256CB7 /* extra_add.test */, + 4BD35E5E1A33366200256CB7 /* extra_count_by_id.test */, + 4BD35E5F1A33366200256CB7 /* extra_count_ignore_zip64.test */, + 4BD35E601A33366200256CB7 /* extra_count.test */, + 4BD35E611A33366200256CB7 /* extra_delete_by_id.test */, + 4BD35E621A33366200256CB7 /* extra_delete.test */, + 4BD35E631A33366200256CB7 /* extra_get_by_id.test */, + 4BD35E641A33366200256CB7 /* extra_get.test */, + 4BD35E651A33366200256CB7 /* extra_set_modify_c.test */, + 4BD35E661A33366200256CB7 /* extra_set_modify_l.test */, + 4BD35E671A33366200256CB7 /* extra_set.test */, + 4BD35E681A33366200256CB7 /* file_comment_encmismatch.test */, + 4BD35E691A33366200256CB7 /* fopen_unchanged.test */, + 4BD35E6A1A33366200256CB7 /* fread.test */, + 4BD35E6B1A33366200256CB7 /* get_comment.test */, + 4BD35E8E1A33366200256CB7 /* name_locate.test */, + 4BD35E8F1A33366200256CB7 /* open_cons_extrabytes.test */, + 4BD35E901A33366200256CB7 /* open_empty_2.test */, + 4BD35E911A33366200256CB7 /* open_empty.test */, + 4BD35E921A33366200256CB7 /* open_extrabytes.test */, + 4BD35E931A33366200256CB7 /* open_filename_duplicate_consistency.test */, + 4BD35E941A33366200256CB7 /* open_filename_duplicate_empty_consistency.test */, + 4BD35E951A33366200256CB7 /* open_filename_duplicate_empty.test */, + 4BD35E961A33366200256CB7 /* open_filename_duplicate.test */, + 4BD35E971A33366200256CB7 /* open_filename_empty.test */, + 4BD35E981A33366200256CB7 /* open_incons.test */, + 4BD35E991A33366200256CB7 /* open_many_ok.test */, + 4BD35E9A1A33366200256CB7 /* open_new_but_exists.test */, + 4BD35E9B1A33366200256CB7 /* open_new_ok.test */, + 4BD35E9C1A33366200256CB7 /* open_nonarchive.test */, + 4BD35E9D1A33366200256CB7 /* open_nosuchfile.test */, + 4BD35E9E1A33366200256CB7 /* open_ok.test */, + 4BD35E9F1A33366200256CB7 /* open_too_short.test */, + 4BD35EA01A33366200256CB7 /* open_truncate.test */, + 4BD35EA11A33366200256CB7 /* open_zip64_ok.test */, + 4BD35EA21A33366200256CB7 /* rename_ascii.test */, + 4BD35EA31A33366200256CB7 /* rename_cp437.test */, + 4BD35EA41A33366200256CB7 /* rename_deleted.test */, + 4BD35EA51A33366200256CB7 /* rename_fail.test */, + 4BD35EA61A33366200256CB7 /* rename_ok.test */, + 4BD35EA81A33366200256CB7 /* rename_utf8_encmismatch.test */, + 4BD35EA91A33366200256CB7 /* rename_utf8.test */, + 4BD35EAA1A33366200256CB7 /* set_comment_all.test */, + 4BD35EAB1A33366200256CB7 /* set_comment_localonly.test */, + 4BD35EAC1A33366200256CB7 /* set_comment_removeglobal.test */, + 4BD35EAD1A33366200256CB7 /* set_comment_revert.test */, + 4BD35EAE1A33366200256CB7 /* set_compression_deflate_to_deflate.test */, + 4BD35EAF1A33366200256CB7 /* set_compression_deflate_to_store.test */, + 4BD35EB01A33366200256CB7 /* set_compression_store_to_deflate.test */, + 4BD35EB11A33366200256CB7 /* set_compression_store_to_store.test */, + 4BD35EB21A33366200256CB7 /* set_compression_unknown.test */, + 4BD35EB31A33366200256CB7 /* set_mtime.test */, + 4BD35EB41A33366200256CB7 /* stat_index_cp437_guess.test */, + 4BD35EB51A33366200256CB7 /* stat_index_cp437_raw.test */, + 4BD35EB61A33366200256CB7 /* stat_index_cp437_strict.test */, + 4BD35EB71A33366200256CB7 /* stat_index_fileorder.test */, + 4BD35EB81A33366200256CB7 /* stat_index_streamed_zip64.test */, + 4BD35EB91A33366200256CB7 /* stat_index_streamed.test */, + 4BD35EBA1A33366200256CB7 /* stat_index_utf8_guess.test */, + 4BD35EBB1A33366200256CB7 /* stat_index_utf8_raw.test */, + 4BD35EBC1A33366200256CB7 /* stat_index_utf8_strict.test */, + 4BD35EBD1A33366200256CB7 /* stat_index_utf8_unmarked_strict.test */, + 4BD35EBE1A33366200256CB7 /* stat_index_zip64.test */, + 4BD35EDD1A33366300256CB7 /* torrent-already.test */, + 4BD35EDE1A33366300256CB7 /* torrent-new.test */, + 4BD35EE11A33366300256CB7 /* utf-8-standardization.test */, + 4BD35EE31A33366300256CB7 /* zip64_creation.test */, + 4BD35EE41A33366300256CB7 /* zip64_stored_creation.test */, + ); + name = "test cases"; + sourceTree = "<group>"; + }; 4BDC71BD15B181DA00236D3C = { isa = PBXGroup; children = (