diff options
author | Calvin Wan <calvinwan@google.com> | 2023-09-30 00:20:48 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-09-30 01:14:56 +0300 |
commit | d88e8106e892109f4f4b13312dd026d0a7fcfeec (patch) | |
tree | 9f5de4ff667358dbb5aeb9d7e98215ee34b592ff /hex-ll.h | |
parent | 94e83dcf5b5faaa22e32729305f8fd7090bfdfed (diff) |
hex-ll: separate out non-hash-algo functions
In order to further reduce all-in-one headers, separate out functions in
hex.h that do not operate on object hashes into its own file, hex-ll.h,
and update the include directives in the .c files that need only such
functions accordingly.
Signed-off-by: Calvin Wan <calvinwan@google.com>
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'hex-ll.h')
-rw-r--r-- | hex-ll.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/hex-ll.h b/hex-ll.h new file mode 100644 index 0000000000..a381fa8556 --- /dev/null +++ b/hex-ll.h @@ -0,0 +1,27 @@ +#ifndef HEX_LL_H +#define HEX_LL_H + +extern const signed char hexval_table[256]; +static inline unsigned int hexval(unsigned char c) +{ + return hexval_table[c]; +} + +/* + * Convert two consecutive hexadecimal digits into a char. Return a + * negative value on error. Don't run over the end of short strings. + */ +static inline int hex2chr(const char *s) +{ + unsigned int val = hexval(s[0]); + return (val & ~0xf) ? val : (val << 4) | hexval(s[1]); +} + +/* + * 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). + */ +int hex_to_bytes(unsigned char *binary, const char *hex, size_t len); + +#endif |