summaryrefslogtreecommitdiff
path: root/hex.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-05-06 04:00:23 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-05-06 04:00:23 (GMT)
commita916cb5fb4824322d7e99b1b0efad4e6d7850e78 (patch)
treed9ccc322b7b02d3af296ef313df8dc046ca3fc7d /hex.c
parent3d4a3ffe64162b45ae7c991fc60623ecb4678cfd (diff)
parentd07d4ab401173a10173f2747cf5e0f074b6d2b39 (diff)
downloadgit-a916cb5fb4824322d7e99b1b0efad4e6d7850e78.zip
git-a916cb5fb4824322d7e99b1b0efad4e6d7850e78.tar.gz
git-a916cb5fb4824322d7e99b1b0efad4e6d7850e78.tar.bz2
Merge branch 'bc/object-id'
Identify parts of the code that knows that we use SHA-1 hash to name our objects too much, and use (1) symbolic constants instead of hardcoded 20 as byte count and/or (2) use struct object_id instead of unsigned char [20] for object names. * bc/object-id: apply: convert threeway_stage to object_id patch-id: convert to use struct object_id commit: convert parts to struct object_id diff: convert struct combine_diff_path to object_id bulk-checkin.c: convert to use struct object_id zip: use GIT_SHA1_HEXSZ for trailers archive.c: convert to use struct object_id bisect.c: convert leaf functions to use struct object_id define utility functions for object IDs define a structure for object IDs
Diffstat (limited to 'hex.c')
-rw-r--r--hex.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/hex.c b/hex.c
index cfd9d72..899b74a 100644
--- a/hex.c
+++ b/hex.c
@@ -38,7 +38,7 @@ const signed char hexval_table[256] = {
int get_sha1_hex(const char *hex, unsigned char *sha1)
{
int i;
- for (i = 0; i < 20; i++) {
+ for (i = 0; i < GIT_SHA1_RAWSZ; i++) {
unsigned int val;
/*
* hex[1]=='\0' is caught when val is checked below,
@@ -56,15 +56,20 @@ int get_sha1_hex(const char *hex, unsigned char *sha1)
return 0;
}
+int get_oid_hex(const char *hex, struct object_id *oid)
+{
+ return get_sha1_hex(hex, oid->hash);
+}
+
char *sha1_to_hex(const unsigned char *sha1)
{
static int bufno;
- static char hexbuffer[4][41];
+ static char hexbuffer[4][GIT_SHA1_HEXSZ + 1];
static const char hex[] = "0123456789abcdef";
char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
int i;
- for (i = 0; i < 20; i++) {
+ for (i = 0; i < GIT_SHA1_RAWSZ; i++) {
unsigned int val = *sha1++;
*buf++ = hex[val >> 4];
*buf++ = hex[val & 0xf];
@@ -73,3 +78,8 @@ char *sha1_to_hex(const unsigned char *sha1)
return buffer;
}
+
+char *oid_to_hex(const struct object_id *oid)
+{
+ return sha1_to_hex(oid->hash);
+}