convert "hashcmp() == 0" to hasheq()

This is the partner patch to the previous one, but covering the "hash" variants instead of "oid". Note that our coccinelle rule is slightly more complex to avoid triggering the call in hasheq(). I didn't bother to add a new rule to convert: - hasheq(E1->hash, E2->hash) + oideq(E1, E2) Since these are new functions, there won't be any such existing callers. And since most of the code is already using oideq, we're not likely to introduce new ones. We might still see "!hashcmp(E1->hash, E2->hash)" from topics in flight. But because our new rule comes after the existing ones, that should first get converted to "!oidcmp(E1, E2)" and then to "oideq(E1, E2)". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Aug 28, 2018 at 17:22 UTC e3ff0683e22070ce42c3c373f6e89e9dc38b756c
8 files changed +23 -14
builtin/fetch.c
+1 -1
@@ -238,7 +238,7 @@ static int will_fetch(struct ref **head, const unsigned char *sha1)
238 {
239 struct ref *rm = *head;
240 while (rm) {
241 - if (!hashcmp(rm->old_oid.hash, sha1))
241 + if (hasheq(rm->old_oid.hash, sha1))
242 return 1;
243 rm = rm->next;
244 }
cache.h
+4 -4
@@ -1053,12 +1053,12 @@ static inline int oideq(const struct object_id *oid1, const struct object_id *oi
1053
1054 static inline int is_null_sha1(const unsigned char *sha1)
1055 {
1056 - return !hashcmp(sha1, null_sha1);
1056 + return hasheq(sha1, null_sha1);
1057 }
1058
1059 static inline int is_null_oid(const struct object_id *oid)
1060 {
1061 - return !hashcmp(oid->hash, null_sha1);
1061 + return hasheq(oid->hash, null_sha1);
1062 }
1063
1064 static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src)
@@ -1095,7 +1095,7 @@ static inline void oidread(struct object_id *oid, const unsigned char *hash)
1095
1096 static inline int is_empty_blob_sha1(const unsigned char *sha1)
1097 {
1098 - return !hashcmp(sha1, the_hash_algo->empty_blob->hash);
1098 + return hasheq(sha1, the_hash_algo->empty_blob->hash);
1099 }
1100
1101 static inline int is_empty_blob_oid(const struct object_id *oid)
@@ -1105,7 +1105,7 @@ static inline int is_empty_blob_oid(const struct object_id *oid)
1105
1106 static inline int is_empty_tree_sha1(const unsigned char *sha1)
1107 {
1108 - return !hashcmp(sha1, the_hash_algo->empty_tree->hash);
1108 + return hasheq(sha1, the_hash_algo->empty_tree->hash);
1109 }
1110
1111 static inline int is_empty_tree_oid(const struct object_id *oid)
contrib/coccinelle/object_id.cocci
+9
@@ -114,3 +114,12 @@ expression E1, E2;
114 @@
115 - oidcmp(E1, E2) == 0
116 + oideq(E1, E2)
117 +
118 +@@
119 +identifier f != hasheq;
120 +expression E1, E2;
121 +@@
122 + f(...) {<...
123 +- hashcmp(E1, E2) == 0
124 ++ hasheq(E1, E2)
125 + ...>}
http-walker.c
+1 -1
@@ -483,7 +483,7 @@ static int fetch_object(struct walker *walker, unsigned char *sha1)
483
484 list_for_each(pos, head) {
485 obj_req = list_entry(pos, struct object_request, node);
486 - if (!hashcmp(obj_req->oid.hash, sha1))
486 + if (hasheq(obj_req->oid.hash, sha1))
487 break;
488 }
489 if (obj_req == NULL)
notes.c
+1 -1
@@ -147,7 +147,7 @@ static struct leaf_node *note_tree_find(struct notes_tree *t,
147 void **p = note_tree_search(t, &tree, &n, key_sha1);
148 if (GET_PTR_TYPE(*p) == PTR_TYPE_NOTE) {
149 struct leaf_node *l = (struct leaf_node *) CLR_PTR_TYPE(*p);
150 - if (!hashcmp(key_sha1, l->key_oid.hash))
150 + if (hasheq(key_sha1, l->key_oid.hash))
151 return l;
152 }
153 return NULL;
object.c
+1 -1
@@ -95,7 +95,7 @@ struct object *lookup_object(struct repository *r, const unsigned char *sha1)
95
96 first = i = hash_obj(sha1, r->parsed_objects->obj_hash_size);
97 while ((obj = r->parsed_objects->obj_hash[i]) != NULL) {
98 - if (!hashcmp(sha1, obj->oid.hash))
98 + if (hasheq(sha1, obj->oid.hash))
99 break;
100 i++;
101 if (i == r->parsed_objects->obj_hash_size)
pack-objects.c
+1 -1
@@ -16,7 +16,7 @@ static uint32_t locate_object_entry_hash(struct packing_data *pdata,
16 while (pdata->index[i] > 0) {
17 uint32_t pos = pdata->index[i] - 1;
18
19 - if (!hashcmp(sha1, pdata->objects[pos].idx.oid.hash)) {
19 + if (hasheq(sha1, pdata->objects[pos].idx.oid.hash)) {
20 *found = 1;
21 return i;
22 }
packfile.c
+5 -5
@@ -1015,7 +1015,7 @@ void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1)
1015 {
1016 unsigned i;
1017 for (i = 0; i < p->num_bad_objects; i++)
1018 - if (!hashcmp(sha1, p->bad_object_sha1 + GIT_SHA1_RAWSZ * i))
1018 + if (hasheq(sha1, p->bad_object_sha1 + GIT_SHA1_RAWSZ * i))
1019 return;
1020 p->bad_object_sha1 = xrealloc(p->bad_object_sha1,
1021 st_mult(GIT_MAX_RAWSZ,
@@ -1031,8 +1031,8 @@ const struct packed_git *has_packed_and_bad(const unsigned char *sha1)
1031
1032 for (p = the_repository->objects->packed_git; p; p = p->next)
1033 for (i = 0; i < p->num_bad_objects; i++)
1034 - if (!hashcmp(sha1,
1035 - p->bad_object_sha1 + the_hash_algo->rawsz * i))
1034 + if (hasheq(sha1,
1035 + p->bad_object_sha1 + the_hash_algo->rawsz * i))
1036 return p;
1037 return NULL;
1038 }
@@ -1830,8 +1830,8 @@ static int fill_pack_entry(const struct object_id *oid,
1830 if (p->num_bad_objects) {
1831 unsigned i;
1832 for (i = 0; i < p->num_bad_objects; i++)
1833 - if (!hashcmp(oid->hash,
1834 - p->bad_object_sha1 + the_hash_algo->rawsz * i))
1833 + if (hasheq(oid->hash,
1834 + p->bad_object_sha1 + the_hash_algo->rawsz * i))
1835 return 0;
1836 }
1837