blob: allow lookup_blob to handle arbitrary repositories
[gitweb.git] / object.c
index d1f77565af63add7c0a356dcb823d957fa793b23..9d74de95f5bde0785f1173b036d837a371936dd9 100644 (file)
--- a/object.c
+++ b/object.c
@@ -84,21 +84,20 @@ static void insert_obj_hash(struct object *obj, struct object **hash, unsigned i
  * Look up the record for the given sha1 in the hash map stored in
  * obj_hash.  Return NULL if it was not found.
  */
-struct object *lookup_object_the_repository(const unsigned char *sha1)
+struct object *lookup_object(struct repository *r, const unsigned char *sha1)
 {
        unsigned int i, first;
        struct object *obj;
 
-       if (!the_repository->parsed_objects->obj_hash)
+       if (!r->parsed_objects->obj_hash)
                return NULL;
 
-       first = i = hash_obj(sha1,
-                            the_repository->parsed_objects->obj_hash_size);
-       while ((obj = the_repository->parsed_objects->obj_hash[i]) != NULL) {
+       first = i = hash_obj(sha1, r->parsed_objects->obj_hash_size);
+       while ((obj = r->parsed_objects->obj_hash[i]) != NULL) {
                if (!hashcmp(sha1, obj->oid.hash))
                        break;
                i++;
-               if (i == the_repository->parsed_objects->obj_hash_size)
+               if (i == r->parsed_objects->obj_hash_size)
                        i = 0;
        }
        if (obj && i != first) {
@@ -107,8 +106,8 @@ struct object *lookup_object_the_repository(const unsigned char *sha1)
                 * that we do not need to walk the hash table the next
                 * time we look for it.
                 */
-               SWAP(the_repository->parsed_objects->obj_hash[i],
-                    the_repository->parsed_objects->obj_hash[first]);
+               SWAP(r->parsed_objects->obj_hash[i],
+                    r->parsed_objects->obj_hash[first]);
        }
        return obj;
 }
@@ -158,13 +157,13 @@ void *create_object(struct repository *r, const unsigned char *sha1, void *o)
        return obj;
 }
 
-void *object_as_type_the_repository(struct object *obj, enum object_type type, int quiet)
+void *object_as_type(struct repository *r, struct object *obj, enum object_type type, int quiet)
 {
        if (obj->type == type)
                return obj;
        else if (obj->type == OBJ_NONE) {
                if (type == OBJ_COMMIT)
-                       ((struct commit *)obj)->index = alloc_commit_index(the_repository);
+                       ((struct commit *)obj)->index = alloc_commit_index(r);
                obj->type = type;
                return obj;
        }
@@ -216,16 +215,16 @@ struct object *parse_object_buffer_the_repository(const struct object_id *oid, e
                if (commit) {
                        if (parse_commit_buffer(the_repository, commit, buffer, size, 1))
                                return NULL;
-                       if (!get_cached_commit_buffer(commit, NULL)) {
+                       if (!get_cached_commit_buffer(the_repository, commit, NULL)) {
                                set_commit_buffer(the_repository, commit, buffer, size);
                                *eaten_p = 1;
                        }
                        obj = &commit->object;
                }
        } else if (type == OBJ_TAG) {
-               struct tag *tag = lookup_tag(oid);
+               struct tag *tag = lookup_tag(the_repository, oid);
                if (tag) {
-                       if (parse_tag_buffer(tag, buffer, size))
+                       if (parse_tag_buffer(the_repository, tag, buffer, size))
                               return NULL;
                        obj = &tag->object;
                }