diff options
Diffstat (limited to 'pack.h')
-rw-r--r-- | pack.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/pack.h b/pack.h new file mode 100644 index 0000000000..694e0c56f0 --- /dev/null +++ b/pack.h @@ -0,0 +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_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 |