tree-walk: convert tree_entry_extract() to use struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson 2016-04-17 23:10:40 +00:00 committed by Junio C Hamano
parent 7d924c9139
commit ce6663a9da
5 changed files with 17 additions and 17 deletions

6
fsck.c
View File

@ -450,11 +450,11 @@ static int fsck_tree(struct tree *item, struct fsck_options *options)
while (desc.size) { while (desc.size) {
unsigned mode; unsigned mode;
const char *name; const char *name;
const unsigned char *sha1; const struct object_id *oid;
sha1 = tree_entry_extract(&desc, &name, &mode); oid = tree_entry_extract(&desc, &name, &mode);
has_null_sha1 |= is_null_sha1(sha1); has_null_sha1 |= is_null_oid(oid);
has_full_path |= !!strchr(name, '/'); has_full_path |= !!strchr(name, '/');
has_empty_name |= !*name; has_empty_name |= !*name;
has_dot |= !strcmp(name, "."); has_dot |= !strcmp(name, ".");

View File

@ -131,14 +131,14 @@ static void match_trees(const unsigned char *hash1,
while (one.size) { while (one.size) {
const char *path; const char *path;
const unsigned char *elem; const struct object_id *elem;
unsigned mode; unsigned mode;
int score; int score;
elem = tree_entry_extract(&one, &path, &mode); elem = tree_entry_extract(&one, &path, &mode);
if (!S_ISDIR(mode)) if (!S_ISDIR(mode))
goto next; goto next;
score = score_trees(elem, hash2); score = score_trees(elem->hash, hash2);
if (*best_score < score) { if (*best_score < score) {
free(*best_match); free(*best_match);
*best_match = xstrfmt("%s%s", base, path); *best_match = xstrfmt("%s%s", base, path);
@ -146,7 +146,7 @@ static void match_trees(const unsigned char *hash1,
} }
if (recurse_limit) { if (recurse_limit) {
char *newbase = xstrfmt("%s%s/", base, path); char *newbase = xstrfmt("%s%s/", base, path);
match_trees(elem, hash2, best_score, best_match, match_trees(elem->hash, hash2, best_score, best_match,
newbase, recurse_limit - 1); newbase, recurse_limit - 1);
free(newbase); free(newbase);
} }
@ -191,15 +191,15 @@ static int splice_tree(const unsigned char *hash1,
while (desc.size) { while (desc.size) {
const char *name; const char *name;
unsigned mode; unsigned mode;
const unsigned char *sha1; const struct object_id *oid;
sha1 = tree_entry_extract(&desc, &name, &mode); oid = tree_entry_extract(&desc, &name, &mode);
if (strlen(name) == toplen && if (strlen(name) == toplen &&
!memcmp(name, prefix, toplen)) { !memcmp(name, prefix, toplen)) {
if (!S_ISDIR(mode)) if (!S_ISDIR(mode))
die("entry %s in tree %s is not a tree", die("entry %s in tree %s is not a tree",
name, sha1_to_hex(hash1)); name, sha1_to_hex(hash1));
rewrite_here = (unsigned char *) sha1; rewrite_here = (unsigned char *) oid->hash;
break; break;
} }
update_tree_entry(&desc); update_tree_entry(&desc);

View File

@ -183,7 +183,7 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p,
if (t) { if (t) {
/* path present in resulting tree */ /* path present in resulting tree */
sha1 = tree_entry_extract(t, &path, &mode); sha1 = tree_entry_extract(t, &path, &mode)->hash;
pathlen = tree_entry_len(&t->entry); pathlen = tree_entry_len(&t->entry);
isdir = S_ISDIR(mode); isdir = S_ISDIR(mode);
} else { } else {

View File

@ -433,10 +433,10 @@ static int find_tree_entry(struct tree_desc *t, const char *name, unsigned char
int namelen = strlen(name); int namelen = strlen(name);
while (t->size) { while (t->size) {
const char *entry; const char *entry;
const unsigned char *sha1; const struct object_id *oid;
int entrylen, cmp; int entrylen, cmp;
sha1 = tree_entry_extract(t, &entry, mode); oid = tree_entry_extract(t, &entry, mode);
entrylen = tree_entry_len(&t->entry); entrylen = tree_entry_len(&t->entry);
update_tree_entry(t); update_tree_entry(t);
if (entrylen > namelen) if (entrylen > namelen)
@ -447,7 +447,7 @@ static int find_tree_entry(struct tree_desc *t, const char *name, unsigned char
if (cmp < 0) if (cmp < 0)
break; break;
if (entrylen == namelen) { if (entrylen == namelen) {
hashcpy(result, sha1); hashcpy(result, oid->hash);
return 0; return 0;
} }
if (name[entrylen] != '/') if (name[entrylen] != '/')
@ -455,10 +455,10 @@ static int find_tree_entry(struct tree_desc *t, const char *name, unsigned char
if (!S_ISDIR(*mode)) if (!S_ISDIR(*mode))
break; break;
if (++entrylen == namelen) { if (++entrylen == namelen) {
hashcpy(result, sha1); hashcpy(result, oid->hash);
return 0; return 0;
} }
return get_tree_entry(sha1, name + entrylen, result, mode); return get_tree_entry(oid->hash, name + entrylen, result, mode);
} }
return -1; return -1;
} }

View File

@ -13,11 +13,11 @@ struct tree_desc {
unsigned int size; unsigned int size;
}; };
static inline const unsigned char *tree_entry_extract(struct tree_desc *desc, const char **pathp, unsigned int *modep) static inline const struct object_id *tree_entry_extract(struct tree_desc *desc, const char **pathp, unsigned int *modep)
{ {
*pathp = desc->entry.path; *pathp = desc->entry.path;
*modep = desc->entry.mode; *modep = desc->entry.mode;
return desc->entry.oid->hash; return desc->entry.oid;
} }
static inline int tree_entry_len(const struct name_entry *ne) static inline int tree_entry_len(const struct name_entry *ne)