X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=tree.c;h=b6f02fecc46ec4633dc1ee75f38bc90761a4fbe3;hb=ae41098714898acd52dba291e476a2fedbd2eae2;hp=9bbe2da37b24007b6409d5e1e5c61a20d0903628;hpb=210a0be504829bad5a2821488d3c25cc406fed4a;p=git.git diff --git a/tree.c b/tree.c index 9bbe2da37..b6f02fecc 100644 --- a/tree.c +++ b/tree.c @@ -4,7 +4,6 @@ #include "commit.h" #include "tag.h" #include "tree-walk.h" -#include const char *tree_type = "tree"; @@ -25,7 +24,7 @@ static int read_one_entry(const unsigned char *sha1, const char *base, int basel ce->ce_flags = create_ce_flags(baselen + len, stage); memcpy(ce->name, base, baselen); memcpy(ce->name + baselen, pathname, len+1); - memcpy(ce->sha1, sha1, 20); + hashcpy(ce->sha1, sha1); return add_cache_entry(ce, ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK); } @@ -129,22 +128,22 @@ struct tree *lookup_tree(const unsigned char *sha1) { struct object *obj = lookup_object(sha1); if (!obj) { - struct tree *ret = xcalloc(1, sizeof(struct tree)); + struct tree *ret = alloc_tree_node(); created_object(sha1, &ret->object); - ret->object.type = tree_type; + ret->object.type = OBJ_TREE; return ret; } if (!obj->type) - obj->type = tree_type; - if (obj->type != tree_type) { - error("Object %s is a %s, not a tree", - sha1_to_hex(sha1), obj->type); + obj->type = OBJ_TREE; + if (obj->type != OBJ_TREE) { + error("Object %s is a %s, not a tree", + sha1_to_hex(sha1), typename(obj->type)); return NULL; } return (struct tree *) obj; } -static int track_tree_refs(struct tree *item) +static void track_tree_refs(struct tree *item) { int n_refs = 0, i; struct object_refs *refs; @@ -174,7 +173,6 @@ static int track_tree_refs(struct tree *item) refs->ref[i++] = obj; } set_object_refs(&item->object, refs); - return 0; } int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size) @@ -216,11 +214,11 @@ struct tree *parse_tree_indirect(const unsigned char *sha1) do { if (!obj) return NULL; - if (obj->type == tree_type) + if (obj->type == OBJ_TREE) return (struct tree *) obj; - else if (obj->type == commit_type) + else if (obj->type == OBJ_COMMIT) obj = &(((struct commit *) obj)->tree->object); - else if (obj->type == tag_type) + else if (obj->type == OBJ_TAG) obj = ((struct tag *) obj)->tagged; else return NULL;