X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=sha1_file.c;h=9cab99ae7c2b1e59db7be26d79d287254db21211;hb=0c82a398ec3302294b0bfe33b653a6e90dcf351b;hp=64cf2454182dbf4cbf1a2ee70dea4823cf8cfaa0;hpb=5f906b1c34a174fb6a5eb03f8063859d1a487721;p=git.git diff --git a/sha1_file.c b/sha1_file.c index 64cf24541..9cab99ae7 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -551,8 +551,10 @@ static void prepare_packed_git_one(char *objdir, int local) sprintf(path, "%s/pack", objdir); len = strlen(path); dir = opendir(path); - if (!dir) + if (!dir) { + fprintf(stderr, "unable to open object pack directory: %s: %s\n", path, strerror(errno)); return; + } path[len++] = '/'; while ((de = readdir(dir)) != NULL) { int namelen = strlen(de->d_name); @@ -826,6 +828,25 @@ 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,