00001
00002
00003
00004
00005
00006 #include <ccid.h>
00007 #include "ccid-internal.h"
00008
00009 #include <ctype.h>
00010
00011 void _hex_dumpf(FILE *f, const uint8_t *tmp, size_t len, size_t llen)
00012 {
00013 size_t i, j;
00014 size_t line;
00015
00016 if ( NULL == f || 0 == len )
00017 return;
00018
00019 for(j = 0; j < len; j += line, tmp += line) {
00020 if ( j + llen > len ) {
00021 line = len - j;
00022 }else{
00023 line = llen;
00024 }
00025
00026 fprintf(f, " | %05x : ", j);
00027
00028 for(i = 0; i < line; i++) {
00029 if ( isprint(tmp[i]) ) {
00030 fprintf(f, "%c", tmp[i]);
00031 }else{
00032 fprintf(f, ".");
00033 }
00034 }
00035
00036 for(; i < llen; i++)
00037 fprintf(f, " ");
00038
00039 for(i = 0; i < line; i++)
00040 fprintf(f, " %02x", tmp[i]);
00041
00042 fprintf(f, "\n");
00043 }
00044 fprintf(f, "\n");
00045 }
00046
00047 void hex_dumpf(FILE *f, const uint8_t *ptr, size_t len, size_t llen)
00048 {
00049 _hex_dumpf(f, ptr, len, llen);
00050 }
00051
00052 void hex_dump(const uint8_t *ptr, size_t len, size_t llen)
00053 {
00054 _hex_dumpf(stdout, ptr, len, llen);
00055 }