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);
 }