home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / libI77 / close.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  774 b   |  50 lines

  1. #include "fio.h"
  2. f_clos(a) cllist *a;
  3. {    unit *b;
  4.     if(a->cunit >= MXUNIT) return(0);
  5.     b= &units[a->cunit];
  6.     if(b->ufd==NULL) return(0);
  7.     b->uend=0;
  8.     if(a->csta!=0)
  9.         switch(*a->csta)
  10.         {
  11.         default:
  12.         keep:
  13.         case 'k':
  14.             if(b->uwrt) t_runc(b);
  15.             fclose(b->ufd);
  16.             if(b->ufnm!=0) free(b->ufnm);
  17.             b->ufnm=NULL;
  18.             b->ufd=NULL;
  19.             return(0);
  20.         case 'd':
  21.         delete:
  22.             fclose(b->ufd);
  23.             if(b->ufnm!=0)
  24.             {    unlink(b->ufnm); /*SYSDEP*/
  25.                 free(b->ufnm);
  26.             }
  27.             b->ufnm=NULL;
  28.             b->ufd=NULL;
  29.             return(0);
  30.         }
  31.     else if(b->uscrtch==1) goto delete;
  32.     else goto keep;
  33. }
  34. f_exit()
  35. {    int i;
  36.     cllist xx;
  37.     xx.cerr=1;
  38.     xx.csta=NULL;
  39.     for(i=0;i<MXUNIT;i++)
  40.     {
  41.         xx.cunit=i;
  42.         f_clos(&xx);
  43.     }
  44. }
  45. flush_()
  46. {    int i;
  47.     for(i=0;i<MXUNIT;i++)
  48.         if(units[i].ufd != NULL) fflush(units[i].ufd);
  49. }
  50.