summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2017-08-18 15:20:29 -0700
committerJunio C Hamano <gitster@pobox.com>2017-08-23 15:12:07 -0700
commit3588dd6e994b38b02c2f60544fe2f69ce5fdf927 (patch)
tree0a3297c84872f577fb8bf9351811c249f0dff682
parent7b3aa75df7db72a283a11b9ce41658b89576db2b (diff)
downloadgit-3588dd6e994b38b02c2f60544fe2f69ce5fdf927.tar.gz
pack: move unpack_object_header()
Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--cache.h1
-rw-r--r--packfile.c26
-rw-r--r--packfile.h1
-rw-r--r--sha1_file.c26
4 files changed, 27 insertions, 27 deletions
diff --git a/cache.h b/cache.h
index fe2d90b772..4818f25597 100644
--- a/cache.h
+++ b/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 void *unpack_entry(struct packed_git *, off_t, enum object_type *, unsigned long *);
-extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
/*
* Iterate over the files in the loose-object parts of the object
diff --git a/packfile.c b/packfile.c
index 9e0bbf5a0e..d4a78b1ac9 100644
--- a/packfile.c
+++ b/packfile.c
@@ -949,3 +949,29 @@ unsigned long get_size_from_delta(struct packed_git *p,
/* Read the result size */
return get_delta_hdr_size(&data, delta_head+sizeof(delta_head));
}
+
+int unpack_object_header(struct packed_git *p,
+ struct pack_window **w_curs,
+ off_t *curpos,
+ unsigned long *sizep)
+{
+ unsigned char *base;
+ unsigned long left;
+ unsigned long used;
+ enum object_type type;
+
+ /* use_pack() assures us we have [base, base + 20) available
+ * as a range that we can look at. (Its actually the hash
+ * size that is assured.) With our object header encoding
+ * the maximum deflated object size is 2^137, which is just
+ * insane, so we know won't exceed what we have been given.
+ */
+ base = use_pack(p, w_curs, *curpos, &left);
+ used = unpack_object_header_buffer(base, left, &type, sizep);
+ if (!used) {
+ type = OBJ_BAD;
+ } else
+ *curpos += used;
+
+ return type;
+}
diff --git a/packfile.h b/packfile.h
index c2ae717d4c..ca76fbf5b0 100644
--- a/packfile.h
+++ b/packfile.h
@@ -64,6 +64,7 @@ extern struct packed_git *add_packed_git(const char *path, size_t path_len, int
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 int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
extern void release_pack_memory(size_t);
diff --git a/sha1_file.c b/sha1_file.c
index 38c1084560..ccf225f055 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1172,32 +1172,6 @@ static const unsigned char *get_delta_base_sha1(struct packed_git *p,
return NULL;
}
-int unpack_object_header(struct packed_git *p,
- struct pack_window **w_curs,
- off_t *curpos,
- unsigned long *sizep)
-{
- unsigned char *base;
- unsigned long left;
- unsigned long used;
- enum object_type type;
-
- /* use_pack() assures us we have [base, base + 20) available
- * as a range that we can look at. (Its actually the hash
- * size that is assured.) With our object header encoding
- * the maximum deflated object size is 2^137, which is just
- * insane, so we know won't exceed what we have been given.
- */
- base = use_pack(p, w_curs, *curpos, &left);
- used = unpack_object_header_buffer(base, left, &type, sizep);
- if (!used) {
- type = OBJ_BAD;
- } else
- *curpos += used;
-
- return type;
-}
-
static int retry_bad_packed_offset(struct packed_git *p, off_t obj_offset)
{
int type;