diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2008-01-27 11:37:44 +0100 |
---|---|---|
committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2008-01-27 11:37:44 +0100 |
commit | 7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch) | |
tree | b1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/CONTRIB/SNIP/iscons.c |
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/CONTRIB/SNIP/iscons.c')
-rwxr-xr-x | reference/C/CONTRIB/SNIP/iscons.c | 39 |
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(®s, ®s);
+ 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 */
|