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

  1. #include "fio.h"
  2. extern int reclen;
  3. long recloc;
  4. s_rsue(a) cilist *a;
  5. {
  6.     int n;
  7.     if(!init) f_init();
  8.     if(n=c_sue(a,READ)) return(n);
  9.     reading=1;
  10.     recpos=0;
  11.     if(curunit->uwrt) nowreading(curunit);
  12.     if(fread(&reclen,sizeof(int),1,cf)
  13.         != 1)
  14.     {    if(feof(cf))
  15.         {    curunit->uend = 1;
  16.             err(a->ciend, EOF, "start");
  17.         }
  18.         clearerr(cf);
  19.         err(a->cierr, errno, "start");
  20.     }
  21.     return(0);
  22. }
  23. s_wsue(a) cilist *a;
  24. {
  25.     int n;
  26.     if(!init) f_init();
  27.     if(n=c_sue(a,WRITE)) return(n);
  28.     reading=0;
  29.     reclen=0;
  30.     if(!curunit->uwrt) nowwriting(curunit);
  31.     recloc=ftell(cf);
  32.     fseek(cf,(long)sizeof(int),1);
  33.     return(0);
  34. }
  35. c_sue(a,flag) cilist *a;
  36. {
  37.     if(a->ciunit >= MXUNIT || a->ciunit < 0)
  38.         err(a->cierr,101,"startio");
  39.     external=sequential=1;
  40.     formatted=0;
  41.     curunit = &units[a->ciunit];
  42.     elist=a;
  43.     if(curunit->ufd==NULL && fk_open(flag,SEQ,UNF,a->ciunit))
  44.         err(a->cierr,114,"sue");
  45.     cf=curunit->ufd;
  46.     if(curunit->ufmt) err(a->cierr,103,"sue")
  47.     if(!curunit->useek) err(a->cierr,103,"sue")
  48.     return(0);
  49. }
  50. e_wsue()
  51. {    long loc;
  52.     fwrite(&reclen,sizeof(int),1,cf);
  53.     loc=ftell(cf);
  54.     fseek(cf,recloc,0);
  55.     fwrite(&reclen,sizeof(int),1,cf);
  56.     fseek(cf,loc,0);
  57.     return(0);
  58. }
  59. e_rsue()
  60. {
  61.     fseek(cf,(long)(reclen-recpos+sizeof(int)),1);
  62.     return(0);
  63. }
  64.