diff options
-rw-r--r-- | src/oid.c | 20 | ||||
-rw-r--r-- | src/oid.h | 23 |
2 files changed, 24 insertions, 19 deletions
@@ -196,25 +196,7 @@ int git_oid_equal(const git_oid *a, const git_oid *b) int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len) { - const unsigned char *a = oid_a->id; - const unsigned char *b = oid_b->id; - - if (len > GIT_OID_HEXSZ) - len = GIT_OID_HEXSZ; - - while (len > 1) { - if (*a != *b) - return 1; - a++; - b++; - len -= 2; - }; - - if (len) - if ((*a ^ *b) & 0xf0) - return 1; - - return 0; + return git_oid_raw_ncmp(oid_a->id, oid_b->id, len); } int git_oid_strcmp(const git_oid *oid_a, const char *str) @@ -22,6 +22,29 @@ */ char *git_oid_allocfmt(const git_oid *id); +GIT_INLINE(int) git_oid_raw_ncmp( + const unsigned char *sha1, + const unsigned char *sha2, + size_t len) +{ + if (len > GIT_OID_HEXSZ) + len = GIT_OID_HEXSZ; + + while (len > 1) { + if (*sha1 != *sha2) + return 1; + sha1++; + sha2++; + len -= 2; + }; + + if (len) + if ((*sha1 ^ *sha2) & 0xf0) + return 1; + + return 0; +} + GIT_INLINE(int) git_oid_raw_cmp( const unsigned char *sha1, const unsigned char *sha2) |