From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/isfopen.c | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/isfopen.c (limited to 'reference/C/CONTRIB/SNIP/isfopen.c') diff --git a/reference/C/CONTRIB/SNIP/isfopen.c b/reference/C/CONTRIB/SNIP/isfopen.c new file mode 100755 index 0000000..4a88f1d --- /dev/null +++ b/reference/C/CONTRIB/SNIP/isfopen.c @@ -0,0 +1,41 @@ +/* +** Find out if a FILE * is valid +** +** public domain demo by Bob Stout +*/ + +#include + +#ifdef __TURBOC__ + #define STREAM_BUF _streams + #define FCNT FOPEN_MAX + #define FLAG flags +#else /* MSC, ZTC++ */ + #define STREAM_BUF _iob + #define FCNT _NFILE + #define FLAG _flag +#endif + +typedef enum {FALSE, TRUE} LOGICAL; + +int isfopen(FILE *fp) +{ + int i; + + for (i = 0; i < FCNT; ++i) + { + if (0 != STREAM_BUF[i].FLAG && fp == &STREAM_BUF[i]) + return TRUE; + } + return FALSE; +} + +#ifdef TEST + +void main(void) +{ + printf("stdout is%s valid\n", isfopen(stdout) ? "":" not"); + printf("buffer #10 is%s valid\n", isfopen(&STREAM_BUF[9]) ? "":" not"); +} + +#endif /*TEST */ -- cgit v1.2.3-54-g00ecf