Research V7 development
[unix-history] / usr / src / libI77 / sue.c
CommitLineData
8662e665
PW
1#include "fio.h"
2extern int reclen;
3long recloc;
4s_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}
23s_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}
35c_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}
50e_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}
59e_rsue()
60{
61 fseek(cf,(long)(reclen-recpos+sizeof(int)),1);
62 return(0);
63}