Commit | Line | Data |
---|---|---|
8662e665 PW |
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 | } |