1: /*
2: char id_due[] = "@(#)due.c 1.3";
3: *
4: * direct unformatted external i/o
5: */
6:
7: #include "fio.h"
8:
9: char rdue[] = "read due";
10: char wdue[] = "write due";
11:
12: s_rdue(a) cilist *a;
13: {
14: int n;
15: reading = YES;
16: if(n=c_due(a,READ)) return(n);
17: if(curunit->uwrt && ! nowreading(curunit)) err(errflag, errno, rdue);
18: return(OK);
19: }
20:
21: s_wdue(a) cilist *a;
22: {
23: int n;
24: reading = NO;
25: if(n=c_due(a,WRITE)) return(n);
26: curunit->uend = NO;
27: if(!curunit->uwrt && ! nowwriting(curunit)) err(errflag, errno, wdue)
28: return(OK);
29: }
30:
31: c_due(a,flag) cilist *a;
32: { int n;
33: lfname = NULL;
34: elist = NO;
35: sequential=formatted=NO;
36: recpos = reclen = 0;
37: external = YES;
38: errflag = a->cierr;
39: endflag = a->ciend;
40: lunit = a->ciunit;
41: if(not_legal(lunit)) err(errflag,F_ERUNIT,rdue+5);
42: curunit = &units[lunit];
43: if (!curunit->ufd && (n=fk_open(flag,DIR,UNF,(ftnint)lunit)) )
44: err(errflag,n,rdue+5)
45: cf = curunit->ufd;
46: elist = YES;
47: lfname = curunit->ufnm;
48: if (curunit->ufmt) err(errflag,F_ERNOUIO,rdue+5)
49: if (!curunit->useek || !curunit->url) err(errflag,F_ERNODIO,rdue+5)
50: if (fseek(cf, (long)((a->cirec-1)*curunit->url), 0) < 0)
51: return(due_err(rdue+5));
52: else
53: return(OK);
54: }
55:
56: e_rdue()
57: {
58: return(OK);
59: }
60:
61: e_wdue()
62: {/* This is to ensure full records. It is really necessary. */
63: int n = 0;
64: if (curunit->url!=1 && recpos!=curunit->url &&
65: (fseek(cf, (long)(curunit->url-recpos-1), 1) < 0
66: || fwrite(&n, 1, 1, cf) != 1))
67: return(due_err(rdue+5));
68: return(OK);
69: }
Defined functions
c_due
defined in line
31; used 2 times
Defined variables
rdue
defined in line
9; used 7 times
wdue
defined in line
10; used 1 times