Browse Source

notes: move hex_to_bytes() to hex.c and export it

Make the function for converting pairs of hexadecimal digits to binary
available to other call sites.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 7 years ago committed by Junio C Hamano
parent
commit
0ec218656a
  1. 7
      cache.h
  2. 12
      hex.c
  3. 17
      notes.c

7
cache.h

@ -1317,6 +1317,13 @@ extern int set_disambiguate_hint_config(const char *var, const char *value); @@ -1317,6 +1317,13 @@ extern int set_disambiguate_hint_config(const char *var, const char *value);
extern int get_sha1_hex(const char *hex, unsigned char *sha1);
extern int get_oid_hex(const char *hex, struct object_id *sha1);

/*
* Read `len` pairs of hexadecimal digits from `hex` and write the
* values to `binary` as `len` bytes. Return 0 on success, or -1 if
* the input does not consist of hex digits).
*/
extern int hex_to_bytes(unsigned char *binary, const char *hex, size_t len);

/*
* Convert a binary sha1 to its hex equivalent. The `_r` variant is reentrant,
* and writes the NUL-terminated output to the buffer `out`, which must be at

12
hex.c

@ -35,6 +35,18 @@ const signed char hexval_table[256] = { @@ -35,6 +35,18 @@ const signed char hexval_table[256] = {
-1, -1, -1, -1, -1, -1, -1, -1, /* f8-ff */
};

int hex_to_bytes(unsigned char *binary, const char *hex, size_t len)
{
for (; len; len--, hex += 2) {
unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]);

if (val & ~0xff)
return -1;
*binary++ = val;
}
return 0;
}

int get_sha1_hex(const char *hex, unsigned char *sha1)
{
int i;

17
notes.c

@ -334,23 +334,6 @@ static void note_tree_free(struct int_node *tree) @@ -334,23 +334,6 @@ static void note_tree_free(struct int_node *tree)
}
}

/*
* Read `len` pairs of hexadecimal digits from `hex` and write the
* values to `binary` as `len` bytes. Return 0 on success, or -1 if
* the input does not consist of hex digits).
*/
static int hex_to_bytes(unsigned char *binary, const char *hex, size_t len)
{
for (; len; len--, hex += 2) {
unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]);

if (val & ~0xff)
return -1;
*binary++ = val;
}
return 0;
}

static int non_note_cmp(const struct non_note *a, const struct non_note *b)
{
return strcmp(a->path, b->path);

Loading…
Cancel
Save