Signed-off-by: Jonathan Tan <jonathanta...@google.com>
---
 cache.h     |  1 -
 connected.c |  1 +
 packfile.c  | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 packfile.h  |  1 +
 sha1_file.c | 61 -------------------------------------------------------------
 5 files changed, 55 insertions(+), 62 deletions(-)

diff --git a/cache.h b/cache.h
index 0313b0b8d..3625509f9 100644
--- a/cache.h
+++ b/cache.h
@@ -1646,7 +1646,6 @@ extern int odb_mkstemp(struct strbuf *template, const 
char *pattern);
 extern int odb_pack_keep(const char *name);
 
 extern void clear_delta_base_cache(void);
-extern struct packed_git *add_packed_git(const char *path, size_t path_len, 
int local);
 
 /*
  * Make sure that a pointer access into an mmap'd index file is within bounds,
diff --git a/connected.c b/connected.c
index 136c2ac16..3e3f0148c 100644
--- a/connected.c
+++ b/connected.c
@@ -3,6 +3,7 @@
 #include "sigchain.h"
 #include "connected.h"
 #include "transport.h"
+#include "pack.h"
 
 /*
  * If we feed all the commits we want to verify to this command
diff --git a/packfile.c b/packfile.c
index 0c97c3a1a..d1433d8c7 100644
--- a/packfile.c
+++ b/packfile.c
@@ -605,3 +605,56 @@ void unuse_pack(struct pack_window **w_cursor)
                *w_cursor = NULL;
        }
 }
+
+static void try_to_free_pack_memory(size_t size)
+{
+       release_pack_memory(size);
+}
+
+struct packed_git *add_packed_git(const char *path, size_t path_len, int local)
+{
+       static int have_set_try_to_free_routine;
+       struct stat st;
+       size_t alloc;
+       struct packed_git *p;
+
+       if (!have_set_try_to_free_routine) {
+               have_set_try_to_free_routine = 1;
+               set_try_to_free_routine(try_to_free_pack_memory);
+       }
+
+       /*
+        * Make sure a corresponding .pack file exists and that
+        * the index looks sane.
+        */
+       if (!strip_suffix_mem(path, &path_len, ".idx"))
+               return NULL;
+
+       /*
+        * ".pack" is long enough to hold any suffix we're adding (and
+        * the use xsnprintf double-checks that)
+        */
+       alloc = st_add3(path_len, strlen(".pack"), 1);
+       p = alloc_packed_git(alloc);
+       memcpy(p->pack_name, path, path_len);
+
+       xsnprintf(p->pack_name + path_len, alloc - path_len, ".keep");
+       if (!access(p->pack_name, F_OK))
+               p->pack_keep = 1;
+
+       xsnprintf(p->pack_name + path_len, alloc - path_len, ".pack");
+       if (stat(p->pack_name, &st) || !S_ISREG(st.st_mode)) {
+               free(p);
+               return NULL;
+       }
+
+       /* ok, it looks sane as far as we can check without
+        * actually mapping the pack file.
+        */
+       p->pack_size = st.st_size;
+       p->pack_local = local;
+       p->mtime = st.st_mtime;
+       if (path_len < 40 || get_sha1_hex(path + path_len - 40, p->sha1))
+               hashclr(p->sha1);
+       return p;
+}
diff --git a/packfile.h b/packfile.h
index b5db490ab..1e932a49e 100644
--- a/packfile.h
+++ b/packfile.h
@@ -46,6 +46,7 @@ extern unsigned char *use_pack(struct packed_git *, struct 
pack_window **, off_t
 extern void close_pack_windows(struct packed_git *);
 extern void close_all_packs(void);
 extern void unuse_pack(struct pack_window **);
+extern struct packed_git *add_packed_git(const char *path, size_t path_len, 
int local);
 
 extern void release_pack_memory(size_t);
 
diff --git a/sha1_file.c b/sha1_file.c
index 84d96d0ab..0929fc10e 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -718,67 +718,6 @@ void *xmmap(void *start, size_t length,
        return ret;
 }
 
-static struct packed_git *alloc_packed_git(int extra)
-{
-       struct packed_git *p = xmalloc(st_add(sizeof(*p), extra));
-       memset(p, 0, sizeof(*p));
-       p->pack_fd = -1;
-       return p;
-}
-
-static void try_to_free_pack_memory(size_t size)
-{
-       release_pack_memory(size);
-}
-
-struct packed_git *add_packed_git(const char *path, size_t path_len, int local)
-{
-       static int have_set_try_to_free_routine;
-       struct stat st;
-       size_t alloc;
-       struct packed_git *p;
-
-       if (!have_set_try_to_free_routine) {
-               have_set_try_to_free_routine = 1;
-               set_try_to_free_routine(try_to_free_pack_memory);
-       }
-
-       /*
-        * Make sure a corresponding .pack file exists and that
-        * the index looks sane.
-        */
-       if (!strip_suffix_mem(path, &path_len, ".idx"))
-               return NULL;
-
-       /*
-        * ".pack" is long enough to hold any suffix we're adding (and
-        * the use xsnprintf double-checks that)
-        */
-       alloc = st_add3(path_len, strlen(".pack"), 1);
-       p = alloc_packed_git(alloc);
-       memcpy(p->pack_name, path, path_len);
-
-       xsnprintf(p->pack_name + path_len, alloc - path_len, ".keep");
-       if (!access(p->pack_name, F_OK))
-               p->pack_keep = 1;
-
-       xsnprintf(p->pack_name + path_len, alloc - path_len, ".pack");
-       if (stat(p->pack_name, &st) || !S_ISREG(st.st_mode)) {
-               free(p);
-               return NULL;
-       }
-
-       /* ok, it looks sane as far as we can check without
-        * actually mapping the pack file.
-        */
-       p->pack_size = st.st_size;
-       p->pack_local = local;
-       p->mtime = st.st_mtime;
-       if (path_len < 40 || get_sha1_hex(path + path_len - 40, p->sha1))
-               hashclr(p->sha1);
-       return p;
-}
-
 void install_packed_git(struct packed_git *pack)
 {
        if (pack->pack_fd != -1)
-- 
2.14.1.480.gb18f417b89-goog

Reply via email to