Re: [PATCH 04/32] move do_compress() from pack-objects.c to pack-write.c
- From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
- Date
- Aug 25, 2010, 03:19 UTC
- Message-ID
- <AANLkTi=-90e8c5Wi2TYWnAxsWvRMx_PjJZHhhRuSuRwb@mail.gmail.com>
- In-Reply-To
- <20100824232554.GF2376@burratino>
On Wed, Aug 25, 2010 at 9:25 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 27 quoted lines
>> +unsigned long compress_object(void **pptr, unsigned long size)
>> +{
>> + z_stream stream;
>> + void *in, *out;
>> + unsigned long maxsize;
>> +
>> + memset(&stream, 0, sizeof(stream));
>> + deflateInit(&stream, Z_DEFAULT_COMPRESSION);
>> + maxsize = deflateBound(&stream, size);
>> +
>> + in = *pptr;
>> + out = xmalloc(maxsize);
>> + *pptr = out;
>> +
>> + stream.next_in = in;
>> + stream.avail_in = size;
>> + stream.next_out = out;
>> + stream.avail_out = maxsize;
>> + while (deflate(&stream, Z_FINISH) == Z_OK)
>> + ; /* nothing */
>> + deflateEnd(&stream);
>> +
>> + return stream.total_out;
>> +}
>
> However, there is nothing particularly specialized to git objects
> about this. e.g. deflate_it() from diff.c could use this.Also archive-zip.c, fast-import.c, http-push.c and remote-curl.c have very similar code. I'll see if I can reduce some code duplication.
-- Duy