[PATCH] assorted delta code cleanup

This is a wrap-up patch including all the cleanups I've done to the
delta code and its usage.  The most important change is the
factorization of the delta header handling code.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Nicolas Pitre
2005-06-29 02:49:56 -04:00
committed by Linus Torvalds
parent e5e3e0f500
commit dcde55bc58
6 changed files with 35 additions and 58 deletions

View File

@ -592,22 +592,6 @@ void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned l
return unpack_sha1_rest(&stream, hdr, *size);
}
static unsigned long parse_delta_size(unsigned char **p)
{
unsigned char c;
unsigned long size = 0;
unsigned shift = 0;
unsigned char *data = *p;
do {
c = *data++;
size += (c & 0x7f) << shift;
shift += 7;
} while (c & 0x80);
*p = data;
return size;
}
static int packed_delta_info(unsigned char *base_sha1,
unsigned long delta_size,
unsigned long left,
@ -645,11 +629,12 @@ static int packed_delta_info(unsigned char *base_sha1,
* the result size. Verify the base size while we are at it.
*/
data = delta_head;
verify_base_size = parse_delta_size(&data);
result_size = parse_delta_size(&data);
verify_base_size = get_delta_hdr_size(&data);
if (verify_base_size != base_size)
die("delta base size mismatch");
/* Read the result size */
result_size = get_delta_hdr_size(&data);
*sizep = result_size;
return 0;
}