Re: [PATCH 5/8] get-repack --max-pack-size: write_object() takes 'limit' arg
- From
Nicolas Pitre <nico@cam.org>
- Date
- Apr 9, 2007, 00:40 UTC
- Message-ID
- <alpine.LFD.0.98.0704082034060.28181@xanadu.home>
- In-Reply-To
- <46197994.70009@gmail.com>
On Sun, 8 Apr 2007, Dana How wrote:
Show 6 quoted lines
> > Accept new 'limit' argument and check against it > before each group of writes. Update delta usability rules > for possibility of delta base being in a previously- > written pack. Inline sha1write_compressed() so we know > the exact size of the written data when it needs to be compressed.
It would be cleaner if the compression code was made into a function of its own I think.
Show 11 quoted lines
> @@ -448,6 +480,12 @@ static off_t write_object(struct sha1file *f,
> header[pos] = ofs & 127;
> while (ofs >>= 7)
> header[--pos] = 128 | (--ofs & 127);
> + if ( limit && hdrlen + sizeof(header) - pos + datalen + 20 >= limit ) {
> + free(out);
> + free(buf);
> + return 0;
> + }
> + sha1write(f, header, hdrlen);
> sha1write(f, header + pos, sizeof(header) - pos);The above looks rather buggy to me.
Nicolas