X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=sha1_file.c;h=0a3a721e97c89f1dd494831a9321de4668f214c8;hb=7a979d99bafae3576d9480007f958eed0c9e0278;hp=3d11a9bfdc56c00056c2057af5e6455742ab31f5;hpb=3f6726e1f112d221bd2a919e9b1b2927aeef6150;p=git.git diff --git a/sha1_file.c b/sha1_file.c index 3d11a9bf..0a3a721e 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -826,11 +826,30 @@ static unsigned long unpack_object_header(struct packed_git *p, unsigned long of return offset; } +int check_reuse_pack_delta(struct packed_git *p, unsigned long offset, + unsigned char *base, unsigned long *sizep, + enum object_type *kindp) +{ + unsigned long ptr; + int status = -1; + + use_packed_git(p); + ptr = offset; + ptr = unpack_object_header(p, ptr, kindp, sizep); + if (*kindp != OBJ_DELTA) + goto done; + memcpy(base, p->pack_base + ptr, 20); + status = 0; + done: + unuse_packed_git(p); + return status; +} + void packed_object_info_detail(struct pack_entry *e, char *type, unsigned long *size, unsigned long *store_size, - int *delta_chain_length, + unsigned int *delta_chain_length, unsigned char *base_sha1) { struct packed_git *p = e->p; @@ -844,7 +863,7 @@ void packed_object_info_detail(struct pack_entry *e, if (kind != OBJ_DELTA) *delta_chain_length = 0; else { - int chain_length = 0; + unsigned int chain_length = 0; memcpy(base_sha1, pack, 20); do { struct pack_entry base_ent;