diff options
author | Patrick Georgi <patrick@georgi-clan.de> | 2015-10-01 15:52:56 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-10-01 14:43:43 +0000 |
commit | ca97fa7ac3c035532bbf493613c644514313a190 (patch) | |
tree | 5bb04044e70f5639d79955d3e2105aa782fb1beb | |
parent | 8b293225573ef05364b741003a1fd95e49794cb1 (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>
-rw-r--r-- | util/cbfstool/common.c | 17 | ||||
-rw-r--r-- | util/cbfstool/common.h | 7 |
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 |