aboutsummaryrefslogtreecommitdiff
path: root/pack.h
blob: 694e0c56f0b67c1ae9b7a94a243aca7b8859e50c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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