pack: move unpack_object_header_buffer()
Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0abe14f6a5
commit
32b42e152f
1
cache.h
1
cache.h
@ -1663,7 +1663,6 @@ extern off_t find_pack_entry_one(const unsigned char *sha1, struct packed_git *)
|
|||||||
|
|
||||||
extern int is_pack_valid(struct packed_git *);
|
extern int is_pack_valid(struct packed_git *);
|
||||||
extern void *unpack_entry(struct packed_git *, off_t, enum object_type *, unsigned long *);
|
extern void *unpack_entry(struct packed_git *, off_t, enum object_type *, unsigned long *);
|
||||||
extern unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep);
|
|
||||||
extern unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
|
extern unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
|
||||||
extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
|
extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
|
||||||
|
|
||||||
|
25
packfile.c
25
packfile.c
@ -884,3 +884,28 @@ void reprepare_packed_git(void)
|
|||||||
prepare_packed_git_run_once = 0;
|
prepare_packed_git_run_once = 0;
|
||||||
prepare_packed_git();
|
prepare_packed_git();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long unpack_object_header_buffer(const unsigned char *buf,
|
||||||
|
unsigned long len, enum object_type *type, unsigned long *sizep)
|
||||||
|
{
|
||||||
|
unsigned shift;
|
||||||
|
unsigned long size, c;
|
||||||
|
unsigned long used = 0;
|
||||||
|
|
||||||
|
c = buf[used++];
|
||||||
|
*type = (c >> 4) & 7;
|
||||||
|
size = c & 15;
|
||||||
|
shift = 4;
|
||||||
|
while (c & 0x80) {
|
||||||
|
if (len <= used || bitsizeof(long) <= shift) {
|
||||||
|
error("bad object header");
|
||||||
|
size = used = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
c = buf[used++];
|
||||||
|
size += (c & 0x7f) << shift;
|
||||||
|
shift += 7;
|
||||||
|
}
|
||||||
|
*sizep = size;
|
||||||
|
return used;
|
||||||
|
}
|
||||||
|
@ -62,6 +62,8 @@ extern void close_all_packs(void);
|
|||||||
extern void unuse_pack(struct pack_window **);
|
extern void unuse_pack(struct pack_window **);
|
||||||
extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local);
|
extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local);
|
||||||
|
|
||||||
|
extern unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep);
|
||||||
|
|
||||||
extern void release_pack_memory(size_t);
|
extern void release_pack_memory(size_t);
|
||||||
|
|
||||||
extern int open_packed_git(struct packed_git *p);
|
extern int open_packed_git(struct packed_git *p);
|
||||||
|
25
sha1_file.c
25
sha1_file.c
@ -915,31 +915,6 @@ void *map_sha1_file(const unsigned char *sha1, unsigned long *size)
|
|||||||
return map_sha1_file_1(NULL, sha1, size);
|
return map_sha1_file_1(NULL, sha1, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long unpack_object_header_buffer(const unsigned char *buf,
|
|
||||||
unsigned long len, enum object_type *type, unsigned long *sizep)
|
|
||||||
{
|
|
||||||
unsigned shift;
|
|
||||||
unsigned long size, c;
|
|
||||||
unsigned long used = 0;
|
|
||||||
|
|
||||||
c = buf[used++];
|
|
||||||
*type = (c >> 4) & 7;
|
|
||||||
size = c & 15;
|
|
||||||
shift = 4;
|
|
||||||
while (c & 0x80) {
|
|
||||||
if (len <= used || bitsizeof(long) <= shift) {
|
|
||||||
error("bad object header");
|
|
||||||
size = used = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
c = buf[used++];
|
|
||||||
size += (c & 0x7f) << shift;
|
|
||||||
shift += 7;
|
|
||||||
}
|
|
||||||
*sizep = size;
|
|
||||||
return used;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int unpack_sha1_short_header(git_zstream *stream,
|
static int unpack_sha1_short_header(git_zstream *stream,
|
||||||
unsigned char *map, unsigned long mapsize,
|
unsigned char *map, unsigned long mapsize,
|
||||||
void *buffer, unsigned long bufsiz)
|
void *buffer, unsigned long bufsiz)
|
||||||
|
Loading…
Reference in New Issue
Block a user