aboutsummaryrefslogtreecommitdiff
path: root/pack.h
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2007-03-16 16:42:50 -0400
committerJunio C Hamano <junkio@cox.net>2007-03-16 21:27:36 -0700
commit4287307833a7c67b09973fc1023311e473f830b2 (patch)
tree73148a57513bc2002138b86d184c1ec20f73ebf9 /pack.h
parentac527b0b7c9be37ad7f2f7d871b6e9b41fd0c431 (diff)
downloadgit-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.h30
1 files changed, 15 insertions, 15 deletions
diff --git a/pack.h b/pack.h
index deb427edb..d4d412ccb 100644
--- a/pack.h
+++ b/pack.h
@@ -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)