define utility functions for object IDs
There are several utility functions (hashcmp and friends) that are used for comparing object IDs (SHA-1 values). Using these functions, which take pointers to unsigned char, with struct object_id requires tiresome access to the sha1 member, which bloats code and violates the desired encapsulation. Provide wrappers around these functions for struct object_id for neater, more maintainable code. Use the new constants to avoid the hard-coded 20s and 40s throughout the original functions. These functions simply call the underlying pointer-to-unsigned-char versions to ensure that any performance improvements will be passed through to the new functions. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
5f7817c85d
commit
aa1c6fdf47
16
hex.c
16
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user