|
|
1.1 root 1: /*
2: * sequential unformatted external read/write routines
3: */
4:
5: #include "fio.h"
6:
7: extern int reclen;
8: long recloc;
9: char *rsue = "read sue";
10: char *sue = "sue";
11:
12: s_rsue(a) cilist *a;
13: {
14: int n;
15: reading = YES;
16: if(n=c_sue(a,READ)) return(n);
17: if(curunit->uwrt) nowreading(curunit);
18: recpos = 0;
19: if(fread(&reclen,sizeof(int),1,cf) == 1) return(OK);
20: if(feof(cf))
21: { curunit->uend = YES;
22: err(endflag, EOF, rsue)
23: }
24: clearerr(cf);
25: err(errflag, errno, rsue)
26: }
27:
28: s_wsue(a) cilist *a;
29: {
30: int n;
31: reading = NO;
32: if(n=c_sue(a,WRITE)) return(n);
33: if(!curunit->uwrt) nowwriting(curunit);
34: reclen = 0;
35: recloc=ftell(cf);
36: fseek(cf,(long)sizeof(int),1);
37: curunit->uend = NO;
38: return(OK);
39: }
40:
41: c_sue(a,flag) cilist *a;
42: { int n;
43: external = sequential = YES;
44: formatted = NO;
45: lfname = NULL;
46: elist = NO;
47: errflag = a->cierr;
48: endflag = a->ciend;
49: lunit = a->ciunit;
50: if(not_legal(lunit)) err(errflag,101,sue)
51: curunit = &units[lunit];
52: if(!curunit->ufd && (n=fk_open(flag,SEQ,UNF,(ftnint)lunit)))
53: err(errflag,n,sue)
54: cf = curunit->ufd;
55: elist = YES;
56: lfname = curunit->ufnm;
57: if(curunit->ufmt) err(errflag,103,sue)
58: if(curunit->url) err(errflag,105,sue)
59: if(!curunit->useek) err(errflag,120,sue)
60: return(OK);
61: }
62:
63: e_wsue()
64: { long loc;
65: fwrite(&reclen,sizeof(int),1,cf);
66: loc=ftell(cf);
67: fseek(cf,recloc,0);
68: fwrite(&reclen,sizeof(int),1,cf);
69: fseek(cf,loc,0);
70: return(OK);
71: }
72:
73: e_rsue()
74: {
75: fseek(cf,(long)(reclen-recpos+sizeof(int)),1);
76: return(OK);
77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.