Linus Torvalds | a733cb6 | 2005-06-28 14:21:02 -0700 | [diff] [blame] | 1 | #ifndef PACK_H |
| 2 | #define PACK_H |
| 3 | |
Linus Torvalds | 01247d8 | 2005-06-28 22:15:57 -0700 | [diff] [blame] | 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 | */ |
Linus Torvalds | a733cb6 | 2005-06-28 14:21:02 -0700 | [diff] [blame] | 9 | enum object_type { |
Linus Torvalds | 01247d8 | 2005-06-28 22:15:57 -0700 | [diff] [blame] | 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, |
Linus Torvalds | a733cb6 | 2005-06-28 14:21:02 -0700 | [diff] [blame] | 17 | }; |
| 18 | |
| 19 | /* |
| 20 | * Packed object header |
| 21 | */ |
| 22 | #define PACK_SIGNATURE 0x5041434b /* "PACK" */ |
Linus Torvalds | 01247d8 | 2005-06-28 22:15:57 -0700 | [diff] [blame] | 23 | #define PACK_VERSION 2 |
Nicolas Pitre | d60fc1c | 2006-02-09 17:50:04 -0500 | [diff] [blame] | 24 | #define pack_version_ok(v) ((v) == htonl(2) || (v) == htonl(3)) |
Linus Torvalds | a733cb6 | 2005-06-28 14:21:02 -0700 | [diff] [blame] | 25 | struct pack_header { |
| 26 | unsigned int hdr_signature; |
| 27 | unsigned int hdr_version; |
| 28 | unsigned int hdr_entries; |
| 29 | }; |
| 30 | |
Junio C Hamano | f3bf922 | 2005-06-30 17:15:39 -0700 | [diff] [blame] | 31 | extern int verify_pack(struct packed_git *, int); |
Junio C Hamano | a49dd05 | 2006-02-15 17:34:29 -0800 | [diff] [blame] | 32 | extern int check_reuse_pack_delta(struct packed_git *, unsigned long, |
| 33 | unsigned char *, unsigned long *, |
| 34 | enum object_type *); |
Linus Torvalds | a733cb6 | 2005-06-28 14:21:02 -0700 | [diff] [blame] | 35 | #endif |