summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorPatrick Georgi <patrick@georgi-clan.de>2015-10-01 15:52:56 +0200
committerPatrick Georgi <pgeorgi@google.com>2015-10-01 14:43:43 +0000
commitca97fa7ac3c035532bbf493613c644514313a190 (patch)
tree5bb04044e70f5639d79955d3e2105aa782fb1beb /util
parent8b293225573ef05364b741003a1fd95e49794cb1 (diff)
cbfstool: Add bintohex function
We need to emit some hex strings. Change-Id: I9e7e184282f6ad0470f2e269f5dc874e78f8b697 Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/11766 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/cbfstool/common.c17
-rw-r--r--util/cbfstool/common.h7
2 files changed, 24 insertions, 0 deletions
diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c
index e0474b3435..7e36b7f217 100644
--- a/util/cbfstool/common.c
+++ b/util/cbfstool/common.c
@@ -196,3 +196,20 @@ uint64_t intfiletype(const char *name)
return filetypes[i].type;
return -1;
}
+
+char *bintohex(uint8_t *data, size_t len)
+{
+ static const char translate[16] = "0123456789abcdef";
+
+ char *result = malloc(len * 2 + 1);
+ if (result == NULL)
+ return NULL;
+
+ result[len*2] = '\0';
+ unsigned int i;
+ for (i = 0; i < len; i++) {
+ result[i*2] = translate[(data[i] >> 4) & 0xf];
+ result[i*2+1] = translate[data[i] & 0xf];
+ }
+ return result;
+}
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h
index 8073d12222..86ae484544 100644
--- a/util/cbfstool/common.h
+++ b/util/cbfstool/common.h
@@ -210,4 +210,11 @@ extern struct xdr xdr_le, xdr_be;
size_t bgets(struct buffer *input, void *output, size_t len);
size_t bputs(struct buffer *b, const void *data, size_t len);
+/* Returns a 0-terminated string containing a hex representation of
+ * len bytes starting at data.
+ * The string is malloc'd and it's the caller's responsibility to free
+ * the memory.
+ * On error, bintohex returns NULL.
+ */
+char *bintohex(uint8_t *data, size_t len);
#endif