From 26b4c59e5e96729b582c005083258649d5e28687 Mon Sep 17 00:00:00 2001 From: laforge Date: Tue, 8 Nov 2005 13:40:06 +0000 Subject: add our own hexdump routine, since somehow it doesn't work if rfid_hexdump() returns a pointer to a static buffer. !?! git-svn-id: https://svn.gnumonks.org/trunk/librfid@1665 e0336214-984f-0b4b-a45f-81c69e1f0ede --- utils/openct-escape.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/utils/openct-escape.c b/utils/openct-escape.c index bc7883e..8f087b2 100644 --- a/utils/openct-escape.c +++ b/utils/openct-escape.c @@ -26,6 +26,23 @@ #include #include +static const char * +hexdump(const void *data, unsigned int len) +{ + static char string[1024]; + unsigned char *d = (unsigned char *) data; + unsigned int i, left; + + string[0] = '\0'; + left = sizeof(string); + for (i = 0; len--; i += 3) { + if (i >= sizeof(string) -4) + break; + snprintf(string+i, 4, " %02x", *d++); + } + return string; +} + static struct rfid_reader_handle *rh; static struct rfid_layer2_handle *l2h; static struct rfid_protocol_handle *ph; @@ -45,8 +62,6 @@ static int init() return -1; } - sleep(2); - printf("opening layer2 handle\n"); l2h = rfid_layer2_init(rh, RFID_LAYER2_ISO14443A); //l2h = rfid_layer2_init(rh, RFID_LAYER2_ISO14443B); @@ -97,7 +112,7 @@ static int select_mf(void) if (rv < 0) return rv; - printf("%s\n", rfid_hexdump(ret, rlen)); + printf("%d: [%s]\n", rlen, hexdump(ret, rlen)); return 0; } @@ -117,7 +132,7 @@ static int iso7816_get_challenge(unsigned char len) if (rv < 0) return rv; - printf("%d: [%s]\n", rlen, rfid_hexdump(ret, rlen)); + printf("%d: [%s]\n", rlen, hexdump(ret, rlen)); return 0; } @@ -137,7 +152,7 @@ iso7816_select_application(void) return rv; /* FIXME: parse response */ - printf("%s\n", rfid_hexdump(resp, rlen)); + printf("%s\n", hexdump(resp, rlen)); return 0; } @@ -159,7 +174,7 @@ iso7816_select_ef(u_int16_t fid) return rv; /* FIXME: parse response */ - printf("%s\n", rfid_hexdump(resp, rlen)); + printf("%s\n", hexdump(resp, rlen)); return 0; } @@ -232,7 +247,7 @@ mifare_ulight_read(struct rfid_protocol_handle *ph) if (ret < 0) return ret; - printf("Page 0x%x: %s\n", i, rfid_hexdump(buf, 4)); + printf("Page 0x%x: %s\n", i, hexdump(buf, 4)); } return 0; } @@ -251,7 +266,7 @@ mifare_classic_read(struct rfid_protocol_handle *ph) if (ret < 0) return ret; - printf("Page 0x%x: %s\n", i, rfid_hexdump(buf, len)); + printf("Page 0x%x: %s\n", i, hexdump(buf, len)); } return 0; } -- cgit v1.2.3