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

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  Find out how many more files can be fopen'ed
  5. **
  6. **  public domain demo by Bob Stout
  7. */
  8.  
  9. #include "dosfiles.h"
  10.  
  11. #if defined(__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 favail(void)
  26. {
  27.       int i, count;
  28.  
  29.       for (i = count = 0; i < FCNT; ++i)
  30.       {
  31.             if (0 == STREAM_BUF[i].FLAG)
  32.                   ++count;
  33.       }
  34.       return count;
  35. }
  36.  
  37. #ifdef TEST
  38.  
  39. main()
  40. {
  41.       char *fname = "A$$$$$$$.$$$";
  42.       FILE *fp;
  43.  
  44.       do
  45.       {
  46.             int i = favail();
  47.  
  48.             printf("You can fopen %d new file%s\n", i, &"s"[i == 1]);
  49.             fp = fopen(fname, "w");
  50.             *fname += 1;
  51.       } while (fp);
  52.  
  53.       do
  54.       {
  55.             printf("removing %s\n", fname);
  56.             remove(fname);
  57.       } while ('A' <= --(*fname)) ;
  58.       return 0;
  59. }
  60.  
  61. #endif /*TEST */
  62.