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

  1. #include "fio.h"
  2. s_rdue(a) cilist *a;
  3. {
  4.     int n;
  5.     if(n=c_due(a,READ)) return(n);
  6.     reading=1;
  7.     if(curunit->uwrt) nowreading(curunit);
  8.     return(0);
  9. }
  10. s_wdue(a) cilist *a;
  11. {
  12.     int n;
  13.     if(n=c_due(a,WRITE)) return(n);
  14.     reading=0;
  15.     if(!curunit->uwrt) nowwriting(curunit);
  16.     return(0);
  17. }
  18. c_due(a,flag) cilist *a;
  19. {
  20.     if(!init) f_init();
  21.     if(a->ciunit>=MXUNIT || a->ciunit<0)
  22.         err(a->cierr,101,"startio");
  23.     recpos=sequential=formatted=0;
  24.     external=1;
  25.     curunit = &units[a->ciunit];
  26.     elist=a;
  27.     if(curunit->ufd==NULL && fk_open(flag,DIR,UNF,a->ciunit) ) err(a->cierr,104,"due");
  28.     cf=curunit->ufd;
  29.     if(curunit->ufmt) err(a->cierr,102,"cdue")
  30.     if(!curunit->useek) err(a->cierr,104,"cdue")
  31.     if(curunit->ufd==NULL) err(a->cierr,114,"cdue")
  32.     fseek(cf,(long)(a->cirec-1)*curunit->url,0);
  33.     curunit->uend = 0;
  34.     return(0);
  35. }
  36. e_rdue()
  37. {
  38.     if(curunit->url==1 || recpos==curunit->url)
  39.         return(0);
  40.     fseek(cf,(long)(curunit->url-recpos),1);
  41.     if(ftell(cf)%curunit->url)
  42.         err(elist->cierr,200,"syserr");
  43.     return(0);
  44. }
  45. e_wdue()
  46. {
  47.     return(e_rdue());
  48. }
  49.