Skip to content

Commit

Permalink
get rid of lookup_object_type()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Nicolas Pitre authored and Junio C Hamano committed Feb 27, 2007
1 parent 21666f1 commit 0ab1795
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 24 deletions.
18 changes: 0 additions & 18 deletions object.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 0 additions & 3 deletions object.h
Original file line number Diff line number Diff line change
Expand Up @@ -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. **/
Expand Down
21 changes: 18 additions & 3 deletions tag.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#include "cache.h"
#include "tag.h"
#include "commit.h"
#include "tree.h"
#include "blob.h"

const char *tag_type = "tag";

Expand Down Expand Up @@ -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];

Expand All @@ -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;
Expand All @@ -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;
Expand Down

0 comments on commit 0ab1795

Please sign in to comment.