Re: [PATCH 4/5] Use new compress helpers in http-push.c
- From
Kristian Høgsberg <krh@redhat.com>
- Date
- Jan 11, 2008, 15:39 UTC
- Message-ID
- <1200065981.18570.8.camel@gaara.boston.redhat.com>
- In-Reply-To
- <e5bfff550801102339o757eea62h40b5e00cd904f7e1@mail.gmail.com>
On Fri, 2008-01-11 at 08:39 +0100, Marco Costalba wrote:
Show 42 quoted lines
> A multistep compress is required here, so > we need the full arsenal of compress helpers. > > Signed-off-by: Marco Costalba <mcostalba@gmail.com> > --- > 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.
Show 8 quoted lines
> /* 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