diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-03-06 20:44:30 -0500 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-07 11:06:25 -0800 |
commit | c4001d92be61766d3494489b15590ca0147ee19d (patch) | |
tree | 7c78fe4599bf00354ca36299d11b2a1e4e9324bb /pack-check.c | |
parent | 7cadf491c6d7a29e345e1608c23b0d98cee5e848 (diff) | |
download | git-c4001d92be61766d3494489b15590ca0147ee19d.tar.gz |
Use off_t when we really mean a file offset.
Not all platforms have declared 'unsigned long' to be a 64 bit value,
but we want to support a 64 bit packfile (or close enough anyway)
in the near future as some projects are getting large enough that
their packed size exceeds 4 GiB.
By using off_t, the POSIX type that is declared to mean an offset
within a file, we support whatever maximum file size the underlying
operating system will handle. For most modern systems this is up
around 2^60 or higher.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'pack-check.c')
-rw-r--r-- | pack-check.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/pack-check.c b/pack-check.c index 7c82f6795e..299c514128 100644 --- a/pack-check.c +++ b/pack-check.c @@ -4,11 +4,11 @@ static int verify_packfile(struct packed_git *p, struct pack_window **w_curs) { - unsigned long index_size = p->index_size; + off_t index_size = p->index_size; void *index_base = p->index_base; SHA_CTX ctx; unsigned char sha1[20]; - unsigned long offset = 0, pack_sig = p->pack_size - 20; + off_t offset = 0, pack_sig = p->pack_size - 20; uint32_t nr_objects, i; int err; @@ -24,7 +24,7 @@ static int verify_packfile(struct packed_git *p, unsigned char *in = use_pack(p, w_curs, offset, &remaining); offset += remaining; if (offset > pack_sig) - remaining -= offset - pack_sig; + remaining -= (unsigned int)(offset - pack_sig); SHA1_Update(&ctx, in, remaining); } SHA1_Final(sha1, &ctx); @@ -45,7 +45,8 @@ static int verify_packfile(struct packed_git *p, unsigned char sha1[20]; void *data; enum object_type type; - unsigned long size, offset; + unsigned long size; + off_t offset; if (nth_packed_object_sha1(p, i, sha1)) die("internal error pack-check nth-packed-object"); @@ -85,7 +86,7 @@ static void show_pack_info(struct packed_git *p) const char *type; unsigned long size; unsigned long store_size; - unsigned long offset; + off_t offset; unsigned int delta_chain_length; if (nth_packed_object_sha1(p, i, sha1)) @@ -99,9 +100,11 @@ static void show_pack_info(struct packed_git *p) base_sha1); printf("%s ", sha1_to_hex(sha1)); if (!delta_chain_length) - printf("%-6s %lu %lu\n", type, size, offset); + printf("%-6s %lu %"PRIuMAX"\n", + type, size, (uintmax_t)offset); else { - printf("%-6s %lu %lu %u %s\n", type, size, offset, + printf("%-6s %lu %"PRIuMAX" %u %s\n", + type, size, (uintmax_t)offset, delta_chain_length, sha1_to_hex(base_sha1)); if (delta_chain_length < MAX_CHAIN) chain_histogram[delta_chain_length]++; @@ -123,7 +126,7 @@ static void show_pack_info(struct packed_git *p) int verify_pack(struct packed_git *p, int verbose) { - unsigned long index_size = p->index_size; + off_t index_size = p->index_size; void *index_base = p->index_base; SHA_CTX ctx; unsigned char sha1[20]; @@ -132,7 +135,7 @@ int verify_pack(struct packed_git *p, int verbose) ret = 0; /* Verify SHA1 sum of the index file */ SHA1_Init(&ctx); - SHA1_Update(&ctx, index_base, index_size - 20); + SHA1_Update(&ctx, index_base, (unsigned int)(index_size - 20)); SHA1_Final(sha1, &ctx); if (hashcmp(sha1, (unsigned char *)index_base + index_size - 20)) ret = error("Packfile index for %s SHA1 mismatch", |