diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-01-11 18:34:55 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-11 18:34:55 -0800 |
commit | d9f85f50ca35d7ed1b35e2990a0082b94f1e1370 (patch) | |
tree | f1a6b0ec024c4b8d028d6517987e5bcbe087b537 | |
parent | Merge branch 'rs/zip-tests' (diff) | |
parent | archive-zip: write uncompressed size into header even with streaming (diff) | |
download | tgif-d9f85f50ca35d7ed1b35e2990a0082b94f1e1370.tar.xz |
Merge branch 'rs/zip-with-uncompressed-size-in-the-header'
Improve compatibility of our zip output to fill uncompressed size
in the header, which we can do without seeking back (even though it
should not be necessary).
* rs/zip-with-uncompressed-size-in-the-header:
archive-zip: write uncompressed size into header even with streaming
-rw-r--r-- | archive-zip.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/archive-zip.c b/archive-zip.c index 55f66b4060..d3aef532b7 100644 --- a/archive-zip.c +++ b/archive-zip.c @@ -240,7 +240,7 @@ static int write_zip_entry(struct archiver_args *args, (mode & 0111) ? ((mode) << 16) : 0; if (S_ISREG(mode) && args->compression_level != 0 && size > 0) method = 8; - compressed_size = size; + compressed_size = (method == 0) ? size : 0; if (S_ISREG(mode) && type == OBJ_BLOB && !args->convert && size > big_file_threshold) { @@ -313,10 +313,7 @@ static int write_zip_entry(struct archiver_args *args, copy_le16(header.compression_method, method); copy_le16(header.mtime, zip_time); copy_le16(header.mdate, zip_date); - if (flags & ZIP_STREAM) - set_zip_header_data_desc(&header, 0, 0, 0); - else - set_zip_header_data_desc(&header, size, compressed_size, crc); + set_zip_header_data_desc(&header, size, compressed_size, crc); copy_le16(header.filename_length, pathlen); copy_le16(header.extra_length, ZIP_EXTRA_MTIME_SIZE); write_or_die(1, &header, ZIP_LOCAL_HEADER_SIZE); |