FreeCalypso > hg > fc-pcsc-tools
diff libcommon/dumpdirfunc.c @ 106:dcfec53643c5
EF_DIR dump commands support output redirection
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 19 Feb 2021 06:24:06 +0000 |
parents | 2c72709e0891 |
children |
line wrap: on
line diff
--- a/libcommon/dumpdirfunc.c Fri Feb 19 06:07:49 2021 +0000 +++ b/libcommon/dumpdirfunc.c Fri Feb 19 06:24:06 2021 +0000 @@ -7,80 +7,86 @@ #include "simresp.h" static void -dump_aid(tlv) +dump_aid(tlv, outf) u_char *tlv; + FILE *outf; { unsigned reclen, n; reclen = tlv[1]; - printf(" AID:"); + fputs(" AID:", outf); for (n = 0; n < reclen; n++) - printf(" %02X", tlv[n+2]); - putchar('\n'); + fprintf(outf, " %02X", tlv[n+2]); + putc('\n', outf); } static void -dump_label(tlv) +dump_label(tlv, outf) u_char *tlv; + FILE *outf; { int rc; unsigned textlen; - printf(" Label: "); + fputs(" Label: ", outf); rc = validate_alpha_field(tlv + 2, tlv[1], &textlen); if (rc < 0) { - printf("malformed\n"); + fputs("malformed\n", outf); return; } - print_alpha_field(tlv + 2, textlen, stdout); - putchar('\n'); + print_alpha_field(tlv + 2, textlen, outf); + putc('\n', outf); } static void -dump_unknown_tlv(tlv) +dump_unknown_tlv(tlv, outf) u_char *tlv; + FILE *outf; { unsigned reclen, n; reclen = tlv[1] + 2; - printf(" TLV:"); + fputs(" TLV:", outf); for (n = 0; n < reclen; n++) - printf(" %02X", tlv[n]); - putchar('\n'); + fprintf(outf, " %02X", tlv[n]); + putc('\n', outf); } void -dump_efdir_record() +dump_efdir_record(outf) + FILE *outf; { unsigned totlen, reclen; u_char *dp, *endp; if (sim_resp_data[0] != 0x61) { - printf(" bad: first byte != 0x61\n"); + fprintf(outf, " bad: first byte != 0x61\n"); return; } totlen = sim_resp_data[1]; if (totlen < 3 || totlen > 0x7F) { - printf(" bad: global length byte 0x%02X is invalid\n", totlen); + fprintf(outf, " bad: global length byte 0x%02X is invalid\n", + totlen); return; } if (totlen + 2 > sim_resp_data_len) { - printf(" bad: TLV global length exceeds EF record length\n"); + fprintf(outf, + " bad: TLV global length exceeds EF record length\n"); return; } dp = sim_resp_data + 2; endp = sim_resp_data + 2 + totlen; while (dp < endp) { if (endp - dp < 2) { -trunc_error: printf(" bad: truncated TLV record\n"); +trunc_error: fprintf(outf, " bad: truncated TLV record\n"); return; } if ((dp[0] & 0x1F) == 0x1F) { - printf(" bad: extended tag not supported\n"); + fprintf(outf, " bad: extended tag not supported\n"); return; } if (dp[1] & 0x80) { - printf(" bad: extended length not supported\n"); + fprintf(outf, " bad: extended length not supported\n"); return; } reclen = dp[1] + 2; @@ -88,13 +94,13 @@ goto trunc_error; switch (dp[0]) { case 0x4F: - dump_aid(dp); + dump_aid(dp, outf); break; case 0x50: - dump_label(dp); + dump_label(dp, outf); break; default: - dump_unknown_tlv(dp); + dump_unknown_tlv(dp, outf); } dp += reclen; }