Download raw body.
provide functions to parse/serialize different hashes
Omar Polo:
> +static char *
> +digest_to_str(const uint8_t *digest, int len, char *buf)
> {
> char *p = buf;
> char hex[3];
> int i;
>
> - if (size < SHA1_DIGEST_STRING_LENGTH)
> - return NULL;
> -
> - for (i = 0; i < SHA1_DIGEST_LENGTH; i++) {
> + for (i = 0; i < len; i++) {
> snprintf(hex, sizeof(hex), "%.2x", digest[i]);
> p[0] = hex[0];
> p[1] = hex[1];
Calling snprintf() 20 or soon 32 times to format a hash seems
excessive. How about doing this the very old-fashioned way?
diff /home/naddy/got
commit - 87a3ab84d3eb87b790e3d34aeec2c344a8d7375b
path + /home/naddy/got
blob - 51a9a0ca1ab1e8d6bc5e9f6722d0595f2a3b5fe7
file + lib/hash.c
--- lib/hash.c
+++ lib/hash.c
@@ -71,17 +71,15 @@ digest_to_str(const uint8_t *digest, int len, char *bu
static char *
digest_to_str(const uint8_t *digest, int len, char *buf)
{
+ const char hex[] = "0123456789abcdef";
char *p = buf;
- char hex[3];
int i;
for (i = 0; i < len; i++) {
- snprintf(hex, sizeof(hex), "%.2x", digest[i]);
- p[0] = hex[0];
- p[1] = hex[1];
- p += 2;
+ *p++ = hex[digest[i] >> 4];
+ *p++ = hex[digest[i] & 0xf];
}
- p[0] = '\0';
+ *p = '\0';
return buf;
}
--
Christian "naddy" Weisgerber naddy@mips.inka.de
provide functions to parse/serialize different hashes