• René Scharfe's avatar
    archive-zip: use deflateInit2() to ask for raw compressed data · c3c2e1a0
    René Scharfe authored
    We use the function git_deflate_init() -- which wraps the zlib function
    deflateInit() -- to initialize compression of ZIP file entries.  This
    results in compressed data prefixed with a two-bytes long header and
    followed by a four-bytes trailer.  ZIP file entries consist of ZIP
    headers and raw compressed data instead, so we remove the zlib wrapper
    before writing the result.
    
    We can ask zlib for the the raw compressed data without the unwanted
    parts in the first place by using deflateInit2() and specifying a
    negative number of bits to size the window.  For that purpose, factor
    out the function do_git_deflate_init() and add git_deflate_init_raw(),
    which wraps it.  Then use the latter in archive-zip.c and get rid of
    the code that stripped the zlib header and trailer.
    
    Also rename the helper function zlib_deflate() to zlib_deflate_raw()
    to reflect the change.
    
    Thus we avoid generating data that we throw away anyway, the code
    becomes shorter and some magic constants are removed.
    Signed-off-by: default avatarRene Scharfe <rene.scharfe@lsrfire.ath.cx>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    c3c2e1a0
archive-zip.c 12.1 KB