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