git-tar-tree: no more void pointer arithmetic
[git.git] / pack.h
1 #ifndef PACK_H
2 #define PACK_H
3
4 /*
5  * The packed object type is stored in 3 bits.
6  * The type value 0 is a reserved prefix if ever there is more than 7
7  * object types, or any future format extensions.
8  */
9 enum object_type {
10         OBJ_EXT = 0,
11         OBJ_COMMIT = 1,
12         OBJ_TREE = 2,
13         OBJ_BLOB = 3,
14         OBJ_TAG = 4,
15         /* 5/6 for future expansion */
16         OBJ_DELTA = 7,
17 };
18
19 /*
20  * Packed object header
21  */
22 #define PACK_SIGNATURE 0x5041434b       /* "PACK" */
23 #define PACK_VERSION 2
24 #define pack_version_ok(v) ((v) == htonl(2) || (v) == htonl(3))
25 struct pack_header {
26         unsigned int hdr_signature;
27         unsigned int hdr_version;
28         unsigned int hdr_entries;
29 };
30
31 extern int verify_pack(struct packed_git *, int);
32 extern int check_reuse_pack_delta(struct packed_git *, unsigned long,
33                                   unsigned char *, unsigned long *,
34                                   enum object_type *);
35 #endif