summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/iscons.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/iscons.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/iscons.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/iscons.c b/reference/C/CONTRIB/SNIP/iscons.c
new file mode 100755
index 0000000..b757d89
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/iscons.c
@@ -0,0 +1,39 @@
+/*
+** iscons()
+**
+** A function to determine if a specified stream refers to the console.
+**
+** Original Copyright 1988-1991 by Bob Stout as part of
+** the MicroFirm Function Library (MFL)
+**
+** This subset version is hereby donated to the public domain.
+*/
+
+#include <stdio.h>
+#include <dos.h>
+
+#define BOOL(x) (!(!(x)))
+
+int iscons(FILE *fp)
+{
+ union REGS regs;
+
+ regs.x.ax = 0x4400;
+ regs.x.bx = (unsigned)fileno(fp);
+ intdos(&regs, &regs);
+ if (0 == (regs.x.ax & 0x80))
+ return 0;
+ return BOOL(regs.x.ax & 0x13);
+}
+
+#ifdef TEST
+
+int main(void)
+{
+ fprintf(stderr, "stdin is%s redirected\n",
+ iscons(stdin) ? " not" : "");
+ fprintf(stderr, "stdout is%s redirected\n",
+ iscons(stdout) ? " not" : "");
+}
+
+#endif /* TEST */