From: Nicolas Pitre <nico@cam.org>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org, Nicolas Pitre <nico@cam.org>
Subject: [PATCH 6/6] get rid of lookup_object_type()
Date: Mon, 26 Feb 2007 14:56:00 -0500 [thread overview]
Message-ID: <11725197723910-git-send-email-nico@cam.org> (raw)
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
next prev parent reply other threads:[~2007-02-26 19:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-26 19:55 various cleanups Nicolas Pitre
2007-02-26 19:55 ` [PATCH 1/6] sha1_file.c: cleanup hdr usage Nicolas Pitre
2007-02-26 19:55 ` [PATCH 2/6] sha1_file.c: cleanup "offset" usage Nicolas Pitre
2007-02-26 19:55 ` [PATCH 3/6] sha1_file.c: don't ignore an error condition in sha1_loose_object_info() Nicolas Pitre
2007-02-26 19:55 ` [PATCH 4/6] formalize typename(), and add its reverse type_from_string() Nicolas Pitre
2007-02-26 19:55 ` [PATCH 5/6] convert object type handling from a string to a number Nicolas Pitre
2007-02-26 19:56 ` Nicolas Pitre [this message]
2007-02-27 10:35 ` Junio C Hamano
2007-02-27 10:53 ` Junio C Hamano
2007-02-27 14:06 ` Nicolas Pitre
2007-02-27 13:58 ` Nicolas Pitre
2007-02-27 16:24 ` Linus Torvalds
2007-02-27 17:26 ` Nicolas Pitre
2007-02-27 15:01 ` Shawn O. Pearce
2007-02-27 15:33 ` Nicolas Pitre
2007-02-27 16:07 ` Shawn O. Pearce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11725197723910-git-send-email-nico@cam.org \
--to=nico@cam.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).