all repos — cgit @ a4de0e810b69710c3b32f6d253d80d16dec09f36

a hyperfast web frontend for git written in c

global: replace hard coded hash length

With sha1 we had a guaranteed length of 40 hex chars. This changes now
that we have to support sha256 with 64 hex chars... Support both.

Signed-off-by: Christian Hesse <mail@eworm.de>
Christian Hesse mail@eworm.de
Tue, 20 Oct 2020 23:46:09 +0200
commit

a4de0e810b69710c3b32f6d253d80d16dec09f36

parent

779631c6dc23c15bbbf45a7c7ab9fffb619037b7

4 files changed, 5 insertions(+), 6 deletions(-)

jump to
M filters/commit-links.shfilters/commit-links.sh

@@ -19,7 +19,7 @@ regex=''

# This expression generates links to commits referenced by their SHA1. regex=$regex' -s|\b([0-9a-fA-F]{7,40})\b|<a href="./?id=\1">\1</a>|g' +s|\b([0-9a-fA-F]{7,64})\b|<a href="./?id=\1">\1</a>|g' # This expression generates links to a fictional bugtracker. regex=$regex'
M parsing.cparsing.c

@@ -127,7 +127,6 @@ }

struct commitinfo *cgit_parse_commit(struct commit *commit) { - const int oid_hex_len = 40; struct commitinfo *ret; const char *p = repo_get_commit_buffer(the_repository, commit, NULL); const char *t;

@@ -140,10 +139,10 @@ return ret;

if (!skip_prefix(p, "tree ", &p)) die("Bad commit: %s", oid_to_hex(&commit->object.oid)); - p += oid_hex_len + 1; + p += the_hash_algo->hexsz + 1; while (skip_prefix(p, "parent ", &p)) - p += oid_hex_len + 1; + p += the_hash_algo->hexsz + 1; if (p && skip_prefix(p, "author ", &p)) { parse_user(p, &ret->author, &ret->author_email,
M tests/t0105-commit.shtests/t0105-commit.sh

@@ -25,7 +25,7 @@ grep "</html>" tmp

' test_expect_success 'root commit contains diffstat' ' - grep "<a href=./foo/diff/file-1.id=[0-9a-f]\{40\}.>file-1</a>" tmp + grep "<a href=./foo/diff/file-1.id=[0-9a-f]\{40,64\}.>file-1</a>" tmp ' test_expect_success 'root commit contains diff' '
M ui-patch.cui-patch.c

@@ -61,7 +61,7 @@ oidclr(&old_rev_oid);

} if (is_null_oid(&old_rev_oid)) { - memcpy(rev_range, oid_to_hex(&new_rev_oid), GIT_SHA1_HEXSZ + 1); + memcpy(rev_range, oid_to_hex(&new_rev_oid), the_hash_algo->hexsz + 1); } else { xsnprintf(rev_range, REV_RANGE_LEN, "%s..%s", oid_to_hex(&old_rev_oid), oid_to_hex(&new_rev_oid));