git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 6/6] get rid of lookup_object_type()

From
Nicolas Pitre <nico@cam.org>
Date
Feb 26, 2007, 19:56 UTC
Message-ID
<11725197723910-git-send-email-nico@cam.org>
In-Reply-To
<11725197632516-git-send-email-nico@cam.org>

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>
---
 object.c |   18 ------------------
 object.h |    3 ---
 tag.c    |   21 ++++++++++++++++++---
 3 files changed, 18 insertions(+), 24 deletions(-)
diff --git a/object.c b/object.c
index 0e67af3..5b46889 100644
--- 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;
diff --git a/object.h b/object.h
index 749a6f5..bdbf0fa 100644
--- 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 30ffc17..56a49f4 100644
--- 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;
-- 
1.5.0.572.ge86d
Previous: Nicolas PitreNext: Junio C Hamano
Message 7 of 16 in “various cleanups”
  1. Nicolas PitreFeb 26, 2007
  2. 1/6 sha1_file.c: cleanup hdr usageNicolas Pitre, Feb 26, 2007
  3. 2/6 sha1_file.c: cleanup "offset" usageNicolas Pitre, Feb 26, 2007
  4. 3/6 sha1_file.c: don't ignore an error condition in sha1_loose_object_info()Nicolas Pitre, Feb 26, 2007
  5. 4/6 formalize typename(), and add its reverse type_from_string()Nicolas Pitre, Feb 26, 2007
  6. 5/6 convert object type handling from a string to a numberNicolas Pitre, Feb 26, 2007
  7. 6/6 get rid of lookup_object_type()Nicolas Pitre, Feb 26, 2007
  8. Junio C HamanoFeb 27, 2007
  9. Junio C HamanoFeb 27, 2007
  10. Nicolas PitreFeb 27, 2007
  11. Nicolas PitreFeb 27, 2007
  12. Linus TorvaldsFeb 27, 2007
  13. Nicolas PitreFeb 27, 2007
  14. Shawn O. PearceFeb 27, 2007
  15. Nicolas PitreFeb 27, 2007
  16. Shawn O. PearceFeb 27, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.