[PATCH] Add function to read an index file from an arbitrary filename.
authorDaniel Barkalow <barkalow@iabervon.org>
Tue, 16 Aug 2005 04:10:03 +0000 (00:10 -0400)
committerJunio C Hamano <junkio@cox.net>
Tue, 16 Aug 2005 19:09:33 +0000 (12:09 -0700)
Note that the pack file has to be in the usual location if it gets
installed later.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
cache.h
sha1_file.c

diff --git a/cache.h b/cache.h
index dbde95a..f14a4ce 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -319,6 +319,8 @@ extern int get_ack(int fd, unsigned char *result_sha1);
 extern struct ref **get_remote_heads(int in, struct ref **list, int nr_match, char **match);
 
 extern struct packed_git *parse_pack_index(unsigned char *sha1);
+extern struct packed_git *parse_pack_index_file(unsigned char *sha1, 
+                                               char *idx_path);
 
 extern void prepare_packed_git(void);
 extern void install_packed_git(struct packed_git *pack);
index 2d109f9..b6ebbc5 100644 (file)
@@ -476,12 +476,18 @@ struct packed_git *add_packed_git(char *path, int path_len)
 
 struct packed_git *parse_pack_index(unsigned char *sha1)
 {
+       char *path = sha1_pack_index_name(sha1);
+       return parse_pack_index_file(sha1, path);
+}
+
+struct packed_git *parse_pack_index_file(unsigned char *sha1, char *idx_path)
+{
        struct packed_git *p;
        unsigned long idx_size;
        void *idx_map;
-       char *path = sha1_pack_index_name(sha1);
+       char *path;
 
-       if (check_packed_git_idx(path, &idx_size, &idx_map))
+       if (check_packed_git_idx(idx_path, &idx_size, &idx_map))
                return NULL;
 
        path = sha1_pack_name(sha1);