summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2017-08-18 15:20:35 -0700
committerJunio C Hamano <gitster@pobox.com>2017-08-23 15:12:07 -0700
commit1a1e5d4f47fd77dec1b7e7ef0867939a251252b6 (patch)
tree686d489255d76713b976930c851745b4c5e7422a
parentd6fe0036fd5e0cf7f51aa84381ebd321e898350a (diff)
downloadgit-1a1e5d4f47fd77dec1b7e7ef0867939a251252b6.tar.gz
pack: move find_pack_entry() and make it global
This function needs to be global as it is used by sha1_file.c and will be used by packfile.c. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--packfile.c53
-rw-r--r--packfile.h2
-rw-r--r--sha1_file.c53
3 files changed, 55 insertions, 53 deletions
diff --git a/packfile.c b/packfile.c
index 135e95cb2e..22bdbbcf2c 100644
--- a/packfile.c
+++ b/packfile.c
@@ -1787,3 +1787,56 @@ struct packed_git *find_sha1_pack(const unsigned char *sha1,
return NULL;
}
+
+static int fill_pack_entry(const unsigned char *sha1,
+ struct pack_entry *e,
+ struct packed_git *p)
+{
+ off_t offset;
+
+ if (p->num_bad_objects) {
+ unsigned i;
+ for (i = 0; i < p->num_bad_objects; i++)
+ if (!hashcmp(sha1, p->bad_object_sha1 + 20 * i))
+ return 0;
+ }
+
+ offset = find_pack_entry_one(sha1, p);
+ if (!offset)
+ return 0;
+
+ /*
+ * We are about to tell the caller where they can locate the
+ * requested object. We better make sure the packfile is
+ * still here and can be accessed before supplying that
+ * answer, as it may have been deleted since the index was
+ * loaded!
+ */
+ if (!is_pack_valid(p))
+ return 0;
+ e->offset = offset;
+ e->p = p;
+ hashcpy(e->sha1, sha1);
+ return 1;
+}
+
+/*
+ * Iff a pack file contains the object named by sha1, return true and
+ * store its location to e.
+ */
+int find_pack_entry(const unsigned char *sha1, struct pack_entry *e)
+{
+ struct mru_entry *p;
+
+ prepare_packed_git();
+ if (!packed_git)
+ return 0;
+
+ for (p = packed_git_mru->head; p; p = p->next) {
+ if (fill_pack_entry(sha1, e, p->item)) {
+ mru_mark(packed_git_mru, p);
+ return 1;
+ }
+ }
+ return 0;
+}
diff --git a/packfile.h b/packfile.h
index e4d25d40d1..a0a3c08ff2 100644
--- a/packfile.h
+++ b/packfile.h
@@ -118,4 +118,6 @@ extern int packed_object_info(struct packed_git *pack, off_t offset, struct obje
extern void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
extern const struct packed_git *has_packed_and_bad(const unsigned char *sha1);
+extern int find_pack_entry(const unsigned char *sha1, struct pack_entry *e);
+
#endif
diff --git a/sha1_file.c b/sha1_file.c
index af3f1e5c53..af7102cd6a 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1075,59 +1075,6 @@ int parse_sha1_header(const char *hdr, unsigned long *sizep)
return parse_sha1_header_extended(hdr, &oi, 0);
}
-static int fill_pack_entry(const unsigned char *sha1,
- struct pack_entry *e,
- struct packed_git *p)
-{
- off_t offset;
-
- if (p->num_bad_objects) {
- unsigned i;
- for (i = 0; i < p->num_bad_objects; i++)
- if (!hashcmp(sha1, p->bad_object_sha1 + 20 * i))
- return 0;
- }
-
- offset = find_pack_entry_one(sha1, p);
- if (!offset)
- return 0;
-
- /*
- * We are about to tell the caller where they can locate the
- * requested object. We better make sure the packfile is
- * still here and can be accessed before supplying that
- * answer, as it may have been deleted since the index was
- * loaded!
- */
- if (!is_pack_valid(p))
- return 0;
- e->offset = offset;
- e->p = p;
- hashcpy(e->sha1, sha1);
- return 1;
-}
-
-/*
- * Iff a pack file contains the object named by sha1, return true and
- * store its location to e.
- */
-static int find_pack_entry(const unsigned char *sha1, struct pack_entry *e)
-{
- struct mru_entry *p;
-
- prepare_packed_git();
- if (!packed_git)
- return 0;
-
- for (p = packed_git_mru->head; p; p = p->next) {
- if (fill_pack_entry(sha1, e, p->item)) {
- mru_mark(packed_git_mru, p);
- return 1;
- }
- }
- return 0;
-}
-
static int sha1_loose_object_info(const unsigned char *sha1,
struct object_info *oi,
int flags)