zlib: wrap deflate side of the API
Wrap deflateInit, deflate, and deflateEnd for everybody, and the sole use of deflateInit2 in remote-curl.c to tell the library to use gzip header and trailer in git_deflate_init_gzip(). There is only one caller that cares about the status from deflateEnd(). Introduce git_deflate_end_gently() to let that sole caller retrieve the status and act on it (i.e. die) for now, but we would probably want to make inflate_end/deflate_end die when they ran out of memory and get rid of the _gently() kind. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
12
http-push.c
12
http-push.c
@ -359,7 +359,7 @@ static void start_put(struct transfer_request *request)
|
||||
|
||||
/* Set it up */
|
||||
memset(&stream, 0, sizeof(stream));
|
||||
deflateInit(&stream, zlib_compression_level);
|
||||
git_deflate_init(&stream, zlib_compression_level);
|
||||
size = deflateBound(&stream, len + hdrlen);
|
||||
strbuf_init(&request->buffer.buf, size);
|
||||
request->buffer.posn = 0;
|
||||
@ -371,15 +371,15 @@ static void start_put(struct transfer_request *request)
|
||||
/* First header.. */
|
||||
stream.next_in = (void *)hdr;
|
||||
stream.avail_in = hdrlen;
|
||||
while (deflate(&stream, 0) == Z_OK)
|
||||
/* nothing */;
|
||||
while (git_deflate(&stream, 0) == Z_OK)
|
||||
; /* nothing */
|
||||
|
||||
/* Then the data itself.. */
|
||||
stream.next_in = unpacked;
|
||||
stream.avail_in = len;
|
||||
while (deflate(&stream, Z_FINISH) == Z_OK)
|
||||
/* nothing */;
|
||||
deflateEnd(&stream);
|
||||
while (git_deflate(&stream, Z_FINISH) == Z_OK)
|
||||
; /* nothing */
|
||||
git_deflate_end(&stream);
|
||||
free(unpacked);
|
||||
|
||||
request->buffer.buf.len = stream.total_out;
|
||||
|
||||
Reference in New Issue
Block a user