From: Junio C Hamano Date: Wed, 08 Mar 2006 01:22:59 GMT Subject: Re: [RFH] zlib gurus out there? Message-ID: <7vslptivbg.fsf@assigned-by-dhcp.cox.net> In-Reply-To: Linus Torvalds writes: > On Tue, 7 Mar 2006, Junio C Hamano wrote: >> >> However, I am stuck with the first step, which is to do a full >> flush after the header. An obvious change to the code quoted >> above writes out a corrupt object: >> >> /* First header.. */ >> stream.next_in = hdr; >> stream.avail_in = hdrlen; >> - while (deflate(&stream, 0) == Z_OK) >> + while (deflate(&stream, Z_FULL_FLUSH) == Z_OK) >> /* nothing */; > > No, I don't think that's good. You're only doing a partial deflate, you > can't ask for a Z_FULL_FLUSH. That only works if you give it the whole > buffer, and you don't. So, in short there is no way to create: hdr part deflated. flush. data part deflated independently. and have the current sha1_read_file() not to notice that flush, while I can inspect the deflated stream to find the "flush", and copy only the defalted data part into a pack? Bummer... I was really shooting for full backward compatibility.