diff libcommon/atr.c @ 9:c9ef9e91dd8e

new libcommon, initial version
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 14 Mar 2021 06:55:38 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libcommon/atr.c	Sun Mar 14 06:55:38 2021 +0000
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+
+extern FILE *cpipeF, *rpipeF;
+extern char be_atr_string[];
+
+cmd_atr()
+{
+	char inbuf[128], *cp;
+
+	/* do we have it already? */
+	if (be_atr_string[0]) {
+		printf("ATR: %s\n", be_atr_string);
+		return(0);
+	}
+	/* nope - request it from the BE */
+	fputs("atr\n", cpipeF);
+	fflush(cpipeF);
+	/* collect BE response */
+	if (!fgets(inbuf, sizeof inbuf, rpipeF)) {
+		fprintf(stderr, "comm error: EOF reading from back end\n");
+		return(-1);
+	}
+	cp = index(inbuf, '\n');
+	if (!cp) {
+		fprintf(stderr,
+			"comm error: response from back end has no newline\n");
+		return(-1);
+	}
+	*cp = '\0';
+	if (!inbuf[0]) {
+		fprintf(stderr,
+		"comm error: response from back end is an empty line\n");
+		return(-1);
+	}
+	puts(inbuf);
+	return(0);
+}