summaryrefslogtreecommitdiff
path: root/src/ecbor_describe.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ecbor_describe.c')
-rw-r--r--src/ecbor_describe.c31
1 files changed, 29 insertions, 2 deletions
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;