X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=pack.h;h=694e0c56f0b67c1ae9b7a94a243aca7b8859e50c;hb=b63af9b340dd831840c70103c9f609940a910031;hp=08e120dca664f43f8c12a2ce59cb28a67315500a;hpb=fead2836a16829fba427635f92d7df9acf771a55;p=git.git diff --git a/pack.h b/pack.h index 08e120dc..694e0c56 100644 --- a/pack.h +++ b/pack.h @@ -1,23 +1,35 @@ #ifndef PACK_H #define PACK_H +/* + * The packed object type is stored in 3 bits. + * The type value 0 is a reserved prefix if ever there is more than 7 + * object types, or any future format extensions. + */ enum object_type { - OBJ_NONE, - OBJ_COMMIT, - OBJ_TREE, - OBJ_BLOB, - OBJ_TAG, - OBJ_DELTA, + OBJ_EXT = 0, + OBJ_COMMIT = 1, + OBJ_TREE = 2, + OBJ_BLOB = 3, + OBJ_TAG = 4, + /* 5/6 for future expansion */ + OBJ_DELTA = 7, }; /* * Packed object header */ #define PACK_SIGNATURE 0x5041434b /* "PACK" */ +#define PACK_VERSION 2 +#define pack_version_ok(v) ((v) == htonl(2) || (v) == htonl(3)) struct pack_header { unsigned int hdr_signature; unsigned int hdr_version; unsigned int hdr_entries; }; +extern int verify_pack(struct packed_git *, int); +extern int check_reuse_pack_delta(struct packed_git *, unsigned long, + unsigned char *, unsigned long *, + enum object_type *); #endif