home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / ISFOPEN.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  956b  |  47 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  Find out if a FILE * is valid
  5. **
  6. **  public domain demo by Bob Stout
  7. */
  8.  
  9. #include "dosfiles.h"
  10.  
  11. #ifdef __TURBOC__
  12.  #define STREAM_BUF     _streams
  13.  #define FCNT           FOPEN_MAX
  14.  #define FLAG           flags
  15. #elif defined(__WATCOMC__)
  16.  #define STREAM_BUF     __iob
  17.  #define FCNT           _NFILES
  18.  #define FLAG           _flag
  19. #else /* MSC, ZTC++ */
  20.  #define STREAM_BUF     _iob
  21.  #define FCNT           _NFILE
  22.  #define FLAG           _flag
  23. #endif
  24.  
  25. int isfopen(FILE *fp)
  26. {
  27.       int i;
  28.  
  29.       for (i = 0; i < FCNT; ++i)
  30.       {
  31.             if (0 != STREAM_BUF[i].FLAG && fp == &STREAM_BUF[i])
  32.                   return True_;
  33.       }
  34.       return False_;
  35. }
  36.  
  37. #ifdef TEST
  38.  
  39. main()
  40. {
  41.       printf("stdout is%s valid\n", isfopen(stdout) ? "":" not");
  42.       printf("buffer #10 is%s valid\n", isfopen(&STREAM_BUF[9]) ? "":" not");
  43.       return 0;
  44. }
  45.  
  46. #endif /*TEST */
  47.