FreeCalypso > hg > fc-pcsc-tools
diff simtool/readcmd.c @ 107:f1836c8d36cb
hexdump output commands reworked to support redirection
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 19 Feb 2021 06:43:01 +0000 |
parents | 5390dce9faa4 |
children | 4d747b86da00 |
line wrap: on
line diff
--- a/simtool/readcmd.c Fri Feb 19 06:24:06 2021 +0000 +++ b/simtool/readcmd.c Fri Feb 19 06:43:01 2021 +0000 @@ -5,8 +5,9 @@ #include "simresp.h" #include "curfile.h" -cmd_readbin(argc, argv) +cmd_readbin(argc, argv, outf) char **argv; + FILE *outf; { unsigned offset, len; int rc; @@ -24,12 +25,13 @@ rc = readbin_op(offset, len); if (rc < 0) return(rc); - display_sim_resp_in_hex(); + display_sim_resp_in_hex(outf); return(0); } -cmd_readrec(argc, argv) +cmd_readrec(argc, argv, outf) char **argv; + FILE *outf; { unsigned recno, len; int rc; @@ -58,12 +60,13 @@ rc = readrec_op(recno, 0x04, len); if (rc < 0) return(rc); - display_sim_resp_in_hex(); + display_sim_resp_in_hex(outf); return(0); } -cmd_readef(argc, argv) +cmd_readef(argc, argv, outf) char **argv; + FILE *outf; { int file_id, rc; unsigned readlen; @@ -89,13 +92,15 @@ "error: readef command is only for transparent EFs\n"); return(-1); } - printf("Transparent EF of %u byte(s)\n", curfile_total_size); - printf("File status: %02X\n", sim_resp_data[11]); - show_access_conditions("UPDATE", sim_resp_data[8] & 0xF); - show_access_conditions("READ & SEEK", sim_resp_data[8] >> 4); - show_access_conditions("INCREASE", sim_resp_data[9] >> 4); - show_access_conditions("INVALIDATE", sim_resp_data[10] & 0xF); - show_access_conditions("REHABILITATE", sim_resp_data[10] >> 4); + if (outf == stdout) { + printf("Transparent EF of %u byte(s)\n", curfile_total_size); + printf("File status: %02X\n", sim_resp_data[11]); + show_access_conditions("UPDATE", sim_resp_data[8] & 0xF); + show_access_conditions("READ & SEEK", sim_resp_data[8] >> 4); + show_access_conditions("INCREASE", sim_resp_data[9] >> 4); + show_access_conditions("INVALIDATE", sim_resp_data[10] & 0xF); + show_access_conditions("REHABILITATE", sim_resp_data[10] >> 4); + } if (!curfile_total_size) return(0); readlen = curfile_total_size; @@ -104,6 +109,6 @@ rc = readbin_op(0, readlen); if (rc < 0) return(rc); - display_sim_resp_in_hex(); + display_sim_resp_in_hex(outf); return(0); }