diff options
author | Nicolas Pitre <nico@cam.org> | 2007-03-16 16:42:50 -0400 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-16 21:27:36 -0700 |
commit | 4287307833a7c67b09973fc1023311e473f830b2 (patch) | |
tree | 73148a57513bc2002138b86d184c1ec20f73ebf9 /pack.h | |
parent | ac527b0b7c9be37ad7f2f7d871b6e9b41fd0c431 (diff) | |
download | git-4287307833a7c67b09973fc1023311e473f830b2.tar.gz git-4287307833a7c67b09973fc1023311e473f830b2.tar.xz |
[PATCH] clean up pack index handling a bit
Especially with the new index format to come, it is more appropriate
to encapsulate more into check_packed_git_idx() and assume less of the
index format in struct packed_git.
To that effect, the index_base is renamed to index_data with void * type
so it is not used directly but other pointers initialized with it. This
allows for a couple pointer cast removal, as well as providing a better
generic name to grep for when adding support for new index versions or
formats.
And index_data is declared const too while at it.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'pack.h')
-rw-r--r-- | pack.h | 30 |
1 files changed, 15 insertions, 15 deletions
@@ -16,24 +16,15 @@ struct pack_header { }; /* - * Packed object index header - * - * struct pack_idx_header { - * uint32_t idx_signature; - * uint32_t idx_version; - * }; - * - * Note: this header isn't active yet. In future versions of git - * we may change the index file format. At that time we would start - * the first four bytes of the new index format with this signature, - * as all older git binaries would find this value illegal and abort - * reading the file. + * The first four bytes of index formats later than version 1 should + * start with this signature, as all older git binaries would find this + * value illegal and abort reading the file. * * This is the case because the number of objects in a packfile * cannot exceed 1,431,660,000 as every object would need at least - * 3 bytes of data and the overall packfile cannot exceed 4 GiB due - * to the 32 bit offsets used by the index. Clearly the signature - * exceeds this maximum. + * 3 bytes of data and the overall packfile cannot exceed 4 GiB with + * version 1 of the index file due to the offsets limited to 32 bits. + * Clearly the signature exceeds this maximum. * * Very old git binaries will also compare the first 4 bytes to the * next 4 bytes in the index and abort with a "non-monotonic index" @@ -43,6 +34,15 @@ struct pack_header { */ #define PACK_IDX_SIGNATURE 0xff744f63 /* "\377tOc" */ +/* + * Packed object index header + */ +struct pack_idx_header { + uint32_t idx_signature; + uint32_t idx_version; +}; + + extern int verify_pack(struct packed_git *, int); #define PH_ERROR_EOF (-1) |