1
0
mirror of https://github.com/git/git synced 2024-07-05 00:58:49 +00:00

cache-tree: convert remnants to struct object_id

Convert the remaining portions of cache-tree.c to use struct object_id.
Convert several instances of 20 to use the_hash_algo instead.

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 2018-03-12 02:27:24 +00:00 committed by Junio C Hamano
parent fc5cb99f67
commit 6dcb462530

View File

@ -320,7 +320,7 @@ static int update_one(struct cache_tree *it,
struct cache_tree_sub *sub = NULL; struct cache_tree_sub *sub = NULL;
const char *path, *slash; const char *path, *slash;
int pathlen, entlen; int pathlen, entlen;
const unsigned char *sha1; const struct object_id *oid;
unsigned mode; unsigned mode;
int expected_missing = 0; int expected_missing = 0;
int contains_ita = 0; int contains_ita = 0;
@ -338,7 +338,7 @@ static int update_one(struct cache_tree *it,
die("cache-tree.c: '%.*s' in '%s' not found", die("cache-tree.c: '%.*s' in '%s' not found",
entlen, path + baselen, path); entlen, path + baselen, path);
i += sub->count; i += sub->count;
sha1 = sub->cache_tree->oid.hash; oid = &sub->cache_tree->oid;
mode = S_IFDIR; mode = S_IFDIR;
contains_ita = sub->cache_tree->entry_count < 0; contains_ita = sub->cache_tree->entry_count < 0;
if (contains_ita) { if (contains_ita) {
@ -347,19 +347,19 @@ static int update_one(struct cache_tree *it,
} }
} }
else { else {
sha1 = ce->oid.hash; oid = &ce->oid;
mode = ce->ce_mode; mode = ce->ce_mode;
entlen = pathlen - baselen; entlen = pathlen - baselen;
i++; i++;
} }
if (is_null_sha1(sha1) || if (is_null_oid(oid) ||
(mode != S_IFGITLINK && !missing_ok && !has_sha1_file(sha1))) { (mode != S_IFGITLINK && !missing_ok && !has_object_file(oid))) {
strbuf_release(&buffer); strbuf_release(&buffer);
if (expected_missing) if (expected_missing)
return -1; return -1;
return error("invalid object %06o %s for '%.*s'", return error("invalid object %06o %s for '%.*s'",
mode, sha1_to_hex(sha1), entlen+baselen, path); mode, oid_to_hex(oid), entlen+baselen, path);
} }
/* /*
@ -385,12 +385,12 @@ static int update_one(struct cache_tree *it,
/* /*
* "sub" can be an empty tree if all subentries are i-t-a. * "sub" can be an empty tree if all subentries are i-t-a.
*/ */
if (contains_ita && !hashcmp(sha1, EMPTY_TREE_SHA1_BIN)) if (contains_ita && !oidcmp(oid, &empty_tree_oid))
continue; continue;
strbuf_grow(&buffer, entlen + 100); strbuf_grow(&buffer, entlen + 100);
strbuf_addf(&buffer, "%o %.*s%c", mode, entlen, path + baselen, '\0'); strbuf_addf(&buffer, "%o %.*s%c", mode, entlen, path + baselen, '\0');
strbuf_add(&buffer, sha1, 20); strbuf_add(&buffer, oid->hash, the_hash_algo->rawsz);
#if DEBUG #if DEBUG
fprintf(stderr, "cache-tree update-one %o %.*s\n", fprintf(stderr, "cache-tree update-one %o %.*s\n",
@ -401,7 +401,7 @@ static int update_one(struct cache_tree *it,
if (repair) { if (repair) {
struct object_id oid; struct object_id oid;
hash_object_file(buffer.buf, buffer.len, tree_type, &oid); hash_object_file(buffer.buf, buffer.len, tree_type, &oid);
if (has_sha1_file(oid.hash)) if (has_object_file(&oid))
oidcpy(&it->oid, &oid); oidcpy(&it->oid, &oid);
else else
to_invalidate = 1; to_invalidate = 1;
@ -465,7 +465,7 @@ static void write_one(struct strbuf *buffer, struct cache_tree *it,
#endif #endif
if (0 <= it->entry_count) { if (0 <= it->entry_count) {
strbuf_add(buffer, it->oid.hash, 20); strbuf_add(buffer, it->oid.hash, the_hash_algo->rawsz);
} }
for (i = 0; i < it->subtree_nr; i++) { for (i = 0; i < it->subtree_nr; i++) {
struct cache_tree_sub *down = it->down[i]; struct cache_tree_sub *down = it->down[i];
@ -492,6 +492,7 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p)
char *ep; char *ep;
struct cache_tree *it; struct cache_tree *it;
int i, subtree_nr; int i, subtree_nr;
const unsigned rawsz = the_hash_algo->rawsz;
it = NULL; it = NULL;
/* skip name, but make sure name exists */ /* skip name, but make sure name exists */
@ -520,11 +521,11 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p)
goto free_return; goto free_return;
buf++; size--; buf++; size--;
if (0 <= it->entry_count) { if (0 <= it->entry_count) {
if (size < 20) if (size < rawsz)
goto free_return; goto free_return;
hashcpy(it->oid.hash, (const unsigned char*)buf); memcpy(it->oid.hash, (const unsigned char*)buf, rawsz);
buf += 20; buf += rawsz;
size -= 20; size -= rawsz;
} }
#if DEBUG #if DEBUG