Code

get rid of lookup_object_type()
authorNicolas Pitre <nico@cam.org>
Mon, 26 Feb 2007 19:56:00 +0000 (14:56 -0500)
committerJunio C Hamano <junkio@cox.net>
Tue, 27 Feb 2007 09:34:21 +0000 (01:34 -0800)
This function is called only once in the whole source tree.  Let's move
its code inline instead, which is also in the spirit of removing as much
object type char arrays as possible (not that this patch does anything for
that but at least it is now a local matter).

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
object.c
object.h
tag.c

index 0e67af33bf2bb5b81db77b47b6836a9bc2609461..5b468893421794c50741ce9085c12bc41fb1985f 100644 (file)
--- a/object.c
+++ b/object.c
@@ -120,24 +120,6 @@ void created_object(const unsigned char *sha1, struct object *obj)
        nr_objs++;
 }
 
-struct object *lookup_object_type(const unsigned char *sha1, const char *type)
-{
-       if (!type) {
-               return lookup_unknown_object(sha1);
-       } else if (!strcmp(type, blob_type)) {
-               return &lookup_blob(sha1)->object;
-       } else if (!strcmp(type, tree_type)) {
-               return &lookup_tree(sha1)->object;
-       } else if (!strcmp(type, commit_type)) {
-               return &lookup_commit(sha1)->object;
-       } else if (!strcmp(type, tag_type)) {
-               return &lookup_tag(sha1)->object;
-       } else {
-               error("Unknown type %s", type);
-               return NULL;
-       }
-}
-
 union any_object {
        struct object object;
        struct commit commit;
index 749a6f589059bc773966e2b6942971e6e475b28a..bdbf0facd47015b61a6fbf25eb358b6e256c86b6 100644 (file)
--- a/object.h
+++ b/object.h
@@ -47,9 +47,6 @@ extern struct object_refs *lookup_object_refs(struct object *);
 /** Internal only **/
 struct object *lookup_object(const unsigned char *sha1);
 
-/** Returns the object, having looked it up as being the given type. **/
-struct object *lookup_object_type(const unsigned char *sha1, const char *type);
-
 void created_object(const unsigned char *sha1, struct object *obj);
 
 /** Returns the object, having parsed it to find out what it is. **/
diff --git a/tag.c b/tag.c
index 30ffc17e4130249b11f1b1066ee382ba1cd9e08a..56a49f4fe1f705ee70bc5318a504c35d1bce963e 100644 (file)
--- a/tag.c
+++ b/tag.c
@@ -1,5 +1,8 @@
 #include "cache.h"
 #include "tag.h"
+#include "commit.h"
+#include "tree.h"
+#include "blob.h"
 
 const char *tag_type = "tag";
 
@@ -37,7 +40,7 @@ struct tag *lookup_tag(const unsigned char *sha1)
 int parse_tag_buffer(struct tag *item, void *data, unsigned long size)
 {
        int typelen, taglen;
-       unsigned char object[20];
+       unsigned char sha1[20];
        const char *type_line, *tag_line, *sig_line;
        char type[20];
 
@@ -47,7 +50,7 @@ int parse_tag_buffer(struct tag *item, void *data, unsigned long size)
 
        if (size < 64)
                return -1;
-       if (memcmp("object ", data, 7) || get_sha1_hex((char *) data + 7, object))
+       if (memcmp("object ", data, 7) || get_sha1_hex((char *) data + 7, sha1))
                return -1;
 
        type_line = (char *) data + 48;
@@ -73,7 +76,19 @@ int parse_tag_buffer(struct tag *item, void *data, unsigned long size)
        memcpy(item->tag, tag_line + 4, taglen);
        item->tag[taglen] = '\0';
 
-       item->tagged = lookup_object_type(object, type);
+       if (!strcmp(type, blob_type)) {
+               item->tagged = &lookup_blob(sha1)->object;
+       } else if (!strcmp(type, tree_type)) {
+               item->tagged = &lookup_tree(sha1)->object;
+       } else if (!strcmp(type, commit_type)) {
+               item->tagged = &lookup_commit(sha1)->object;
+       } else if (!strcmp(type, tag_type)) {
+               item->tagged = &lookup_tag(sha1)->object;
+       } else {
+               error("Unknown type %s", type);
+               item->tagged = NULL;
+       }
+
        if (item->tagged && track_object_refs) {
                struct object_refs *refs = alloc_object_refs(1);
                refs->ref[0] = item->tagged;