From ccdd1e3fd92591755e2b94bf63416c7b30cd217a Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Wed, 23 Dec 2020 22:43:57 +0000 Subject: Move hex_representation() to src/common We'll reuse the function in pacman with a later commit. Signed-off-by: Emil Velikov Signed-off-by: Allan McRae --- src/common/util-common.c | 26 ++++++++++++++++++++++++++ src/common/util-common.h | 1 + 2 files changed, 27 insertions(+) (limited to 'src') diff --git a/src/common/util-common.c b/src/common/util-common.c index 7d43ac0d..fc892c11 100644 --- a/src/common/util-common.c +++ b/src/common/util-common.c @@ -25,6 +25,32 @@ #include "util-common.h" +/** Create a string representing bytes in hexadecimal. + * @param bytes the bytes to represent in hexadecimal + * @param size number of bytes to consider + * @return a NULL terminated string with the hexadecimal representation of + * bytes or NULL on error. This string must be freed. + */ +char *hex_representation(const unsigned char *bytes, size_t size) +{ + static const char *hex_digits = "0123456789abcdef"; + char *str = malloc(2 * size + 1); + size_t i; + + if(!str) { + return NULL; + } + + for(i = 0; i < size; i++) { + str[2 * i] = hex_digits[bytes[i] >> 4]; + str[2 * i + 1] = hex_digits[bytes[i] & 0x0f]; + } + + str[2 * size] = '\0'; + + return str; +} + /** Parse the basename of a program from a path. * @param path path to parse basename from * diff --git a/src/common/util-common.h b/src/common/util-common.h index 483d5da4..d9b6b4b7 100644 --- a/src/common/util-common.h +++ b/src/common/util-common.h @@ -23,6 +23,7 @@ #include #include /* struct stat */ +char *hex_representation(const unsigned char *bytes, size_t size); const char *mbasename(const char *path); char *mdirname(const char *path); -- cgit v1.2.3-70-g09d2