diff options
author | Michael Lukashov <michael.lukashov@gmail.com> | 2010-02-16 23:42:54 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-17 15:30:20 -0800 |
commit | 1b22b6c897efa8aec6eeb51f72a73d507d5e336f (patch) | |
tree | 3c5bbefcdabc6c3f5dff047e78cbe8e6426a93a2 /builtin-pack-objects.c | |
parent | 44e0f450350661b110c61ea0eff2657f58fe6ad0 (diff) | |
download | git-1b22b6c897efa8aec6eeb51f72a73d507d5e336f.tar.gz git-1b22b6c897efa8aec6eeb51f72a73d507d5e336f.tar.xz |
refactor duplicated encode_header in pack-objects and fast-import
The following function is duplicated:
encode_header
Move this function to sha1_file.c and rename it 'encode_in_pack_object_header',
as suggested by Junio C Hamano
Signed-off-by: Michael Lukashov <michael.lukashov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-pack-objects.c')
-rw-r--r-- | builtin-pack-objects.c | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index e1d3adf40..6b2f65c6d 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -155,33 +155,6 @@ static unsigned long do_compress(void **pptr, unsigned long size) } /* - * The per-object header is a pretty dense thing, which is - * - first byte: low four bits are "size", then three bits of "type", - * and the high bit is "size continues". - * - each byte afterwards: low seven bits are size continuation, - * with the high bit being "size continues" - */ -static int encode_header(enum object_type type, unsigned long size, unsigned char *hdr) -{ - int n = 1; - unsigned char c; - - if (type < OBJ_COMMIT || type > OBJ_REF_DELTA) - die("bad type %d", type); - - c = (type << 4) | (size & 15); - size >>= 4; - while (size) { - *hdr++ = c | 0x80; - c = size & 0x7f; - size >>= 7; - n++; - } - *hdr = c; - return n; -} - -/* * we are going to reuse the existing object data as is. make * sure it is not corrupt. */ @@ -321,7 +294,7 @@ static unsigned long write_object(struct sha1file *f, * The object header is a byte of 'type' followed by zero or * more bytes of length. */ - hdrlen = encode_header(type, size, header); + hdrlen = encode_in_pack_object_header(type, size, header); if (type == OBJ_OFS_DELTA) { /* @@ -372,7 +345,7 @@ static unsigned long write_object(struct sha1file *f, if (entry->delta) type = (allow_ofs_delta && entry->delta->idx.offset) ? OBJ_OFS_DELTA : OBJ_REF_DELTA; - hdrlen = encode_header(type, entry->size, header); + hdrlen = encode_in_pack_object_header(type, entry->size, header); offset = entry->in_pack_offset; revidx = find_pack_revindex(p, offset); |