summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/ansisys.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/ansisys.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/ansisys.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/ansisys.c b/reference/C/CONTRIB/SNIP/ansisys.c
new file mode 100755
index 0000000..d90322f
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/ansisys.c
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ *
+ * program that detects the presence (or absence) of an ANSI device driver.
+ *
+ * Returns:
+ *
+ * errorlevel 0: Ansi devicedriver not detected.
+ * errorlevel 1: Ansi devicedriver detected.
+ *
+ *****************************************************************************
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <conio.h>
+
+
+
+/********************************** print () *********************************
+ *
+ * A dum print string routine
+ *
+ *****************************************************************************
+ */
+
+void print(char *p)
+{
+ while(*p)
+ putchar(*p++);
+ fflush(stdout); /* necessary for ZTC */
+
+} /* print () */
+
+/********************************** main () **********************************
+ *
+ * Detect whether ANSI.SYS is present and return 1 if so, else returns 0
+ *
+ *****************************************************************************
+ */
+
+int main(void)
+{
+ char buffer [31]; /* temporary buffer */
+ int nr=0; /* counter */
+
+ print("\x1b[6n\r \r"); /* ask for ansi device report */
+
+ while ((0 !=kbhit()) && (nr<30))/* read whatever input is present */
+ buffer[nr++] = (char)getch();
+
+ buffer[nr]='\0'; /* zero terminate string */
+
+ if (strstr(buffer, "\x1b[")) /* check precense of device report */
+ return 1; /* signal ANSI.SYS present */
+ else return 0; /* signal ANSI.SYS not present */
+
+
+} /* main () */
+
+/********************************** end *************************************/