On Fri, 2008-01-11 at 08:39 +0100, Marco Costalba wrote: > A multistep compress is required here, so > we need the full arsenal of compress helpers. > > Signed-off-by: Marco Costalba <mcostalba@xxxxxxxxx> > --- > http-push.c | 22 ++++++++-------------- > 1 files changed, 8 insertions(+), 14 deletions(-) > > diff --git a/http-push.c b/http-push.c > index 55d0c94..b7fe57f 100644 > --- a/http-push.c > +++ b/http-push.c > @@ -1,5 +1,6 @@ > #include "cache.h" > #include "commit.h" > +#include "compress.h" > #include "pack.h" > #include "tag.h" > #include "blob.h" > @@ -491,31 +492,24 @@ static void start_put(struct transfer_request > hdrlen = sprintf(hdr, "%s %lu", typename(type), len) + 1; > > /* Set it up */ > - memset(&stream, 0, sizeof(stream)); > - deflateInit(&stream, zlib_compression_level); > - size = deflateBound(&stream, len + hdrlen); > + size = compress_alloc(&stream, zlib_compression_level, len + hdrlen); > strbuf_init(&request->buffer.buf, size); > request->buffer.posn = 0; > > /* Compress it */ > - stream.next_out = (unsigned char *)request->buffer.buf.buf; > - stream.avail_out = size; > + compress_start(&stream, (void *)hdr, hdrlen, > + (unsigned char *)request->buffer.buf.buf, size); > > /* First header.. */ > - stream.next_in = (void *)hdr; > - stream.avail_in = hdrlen; > - while (deflate(&stream, 0) == Z_OK) > - /* nothing */; > + compress_next(&stream, Z_NO_FLUSH); How about moving next_in and avail_in to be args of compress_next() so the user doesn't have to deal with the z_stream object at all? For example: compress_next(&stream, hdr, hdrlen, Z_NO_FLUSH); and of course remove them from the compress_start() function. > /* Then the data itself.. */ > stream.next_in = unpacked; > stream.avail_in = len; > - while (deflate(&stream, Z_FINISH) == Z_OK) > - /* nothing */; > - deflateEnd(&stream); > - free(unpacked); > + compress_next(&stream, Z_FINISH); This whole chunk just becomes compress_next(&stream, unpacked, len, Z_FINISH); cheers, Kristian - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html