#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_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