summaryrefslogtreecommitdiff
path: root/pack-check.c
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2006-09-21 04:05:37 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-09-23 08:51:33 (GMT)
commit43057304c0bbaf7bc7511daaf81df08c7909a90b (patch)
treecd6fa0d7aea39d7a3f5e9b1f37e123ec348f045a /pack-check.c
parent16854571aae6302f457c5fbee41ac64669b09595 (diff)
downloadgit-43057304c0bbaf7bc7511daaf81df08c7909a90b.zip
git-43057304c0bbaf7bc7511daaf81df08c7909a90b.tar.gz
git-43057304c0bbaf7bc7511daaf81df08c7909a90b.tar.bz2
many cleanups to sha1_file.c
Those cleanups are mainly to set the table for the support of deltas with base objects referenced by offsets instead of sha1. This means that many pack lookup functions are converted to take a pack/offset tuple instead of a sha1. This eliminates many struct pack_entry usages since this structure carried redundent information in many cases, and it increased stack footprint needlessly for a couple recursively called functions that used to declare a local copy of it for every recursion loop. In the process, packed_object_info_detail() has been reorganized as well so to look much saner and more amenable to deltas with offset support. Finally the appropriate adjustments have been made to functions that depend on the above changes. But there is no functionality changes yet simply some code refactoring at this point. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'pack-check.c')
-rw-r--r--pack-check.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/pack-check.c b/pack-check.c
index 04c6c00..c0caaee 100644
--- a/pack-check.c
+++ b/pack-check.c
@@ -42,16 +42,16 @@ static int verify_packfile(struct packed_git *p)
*/
for (i = err = 0; i < nr_objects; i++) {
unsigned char sha1[20];
- struct pack_entry e;
void *data;
char type[20];
- unsigned long size;
+ unsigned long size, offset;
if (nth_packed_object_sha1(p, i, sha1))
die("internal error pack-check nth-packed-object");
- if (!find_pack_entry_one(sha1, &e, p))
+ offset = find_pack_entry_one(sha1, p);
+ if (!offset)
die("internal error pack-check find-pack-entry-one");
- data = unpack_entry_gently(&e, type, &size);
+ data = unpack_entry_gently(p, offset, type, &size);
if (!data) {
err = error("cannot unpack %s from %s",
sha1_to_hex(sha1), p->pack_name);
@@ -84,25 +84,26 @@ static void show_pack_info(struct packed_git *p)
for (i = 0; i < nr_objects; i++) {
unsigned char sha1[20], base_sha1[20];
- struct pack_entry e;
char type[20];
unsigned long size;
unsigned long store_size;
+ unsigned long offset;
unsigned int delta_chain_length;
if (nth_packed_object_sha1(p, i, sha1))
die("internal error pack-check nth-packed-object");
- if (!find_pack_entry_one(sha1, &e, p))
+ offset = find_pack_entry_one(sha1, p);
+ if (!offset)
die("internal error pack-check find-pack-entry-one");
- packed_object_info_detail(&e, type, &size, &store_size,
+ packed_object_info_detail(p, offset, type, &size, &store_size,
&delta_chain_length,
base_sha1);
printf("%s ", sha1_to_hex(sha1));
if (!delta_chain_length)
- printf("%-6s %lu %u\n", type, size, e.offset);
+ printf("%-6s %lu %lu\n", type, size, offset);
else {
- printf("%-6s %lu %u %u %s\n", type, size, e.offset,
+ printf("%-6s %lu %lu %u %s\n", type, size, offset,
delta_chain_length, sha1_to_hex(base_sha1));
if (delta_chain_length < MAX_CHAIN)
chain_histogram[delta_chain_length]++;