From ffd6cf087b78beffd9cce75c4b197a9474c48504 Mon Sep 17 00:00:00 2001 From: rimio Date: Thu, 1 Mar 2018 21:51:15 +0200 Subject: Fixed printing of byte strings; fixed wrong type comparison on TAG --- src/ecbor_describe.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/ecbor_describe.c') diff --git a/src/ecbor_describe.c b/src/ecbor_describe.c index de1025c..bf1337b 100644 --- a/src/ecbor_describe.c +++ b/src/ecbor_describe.c @@ -128,7 +128,7 @@ print_ecbor_item (ecbor_item_t *item, unsigned int level, char *prefix) } else { printf ("'"); for (i = 0; i < len; i ++) { - printf("%2x", val[i]); + printf("%02x", val[i]); } printf ("'\n"); } @@ -154,7 +154,10 @@ print_ecbor_item (ecbor_item_t *item, unsigned int level, char *prefix) return rc; } - print_ecbor_item (&child, level+1, ""); + rc = print_ecbor_item (&child, level+1, ""); + if (rc != ECBOR_OK) { + return rc; + } } } break; @@ -194,6 +197,30 @@ print_ecbor_item (ecbor_item_t *item, unsigned int level, char *prefix) } break; + case ECBOR_MT_TAG: + { + int64_t val; + ecbor_item_t child; + + rc = ecbor_get_value (item, (void *) &val); + if (rc != ECBOR_OK) { + return rc; + } + + printf ("[TAG] value %lld\n", (long long int)val); + + rc = ecbor_get_tag_item (item, &child); + if (rc != ECBOR_OK) { + return rc; + } + + rc = print_ecbor_item (&child, level+1, ""); + if (rc != ECBOR_OK) { + return rc; + } + } + break; + default: printf ("[UNKNOWN]\n"); break; -- cgit v1.2.3