|
|
1.1 root 1: /*
2: * unformatted external i/o
3: */
4:
5: #include "fio.h"
6:
7: char *eor = "eor/uio";
8: char *uio = "uio";
9:
10: do_us(number,ptr,len) ftnint *number; ftnlen len; char *ptr; /* sequential */
11: {
12: if(reading)
13: {
14: recpos += *number * len;
15: if (recpos > reclen)
16: err(errflag,110,eor);
17:
18: if (fread(ptr,(int)len,(int)(*number),cf) != *number)
19: return(due_err(uio));
20: }
21: else
22: {
23: reclen += *number * len;
24: fwrite(ptr,(int)len,(int)(*number),cf);
25: }
26: return(OK);
27: }
28:
29: do_uio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
30: {
31: if(sequential)
32: return(do_us(number,ptr,len));
33: else
34: return(do_ud(number,ptr,len));
35: }
36:
37: do_ud(number,ptr,len) ftnint *number; ftnlen len; char *ptr; /* direct */
38: {
39: recpos += *number * len;
40: if(recpos > curunit->url && curunit->url!=1)
41: err(errflag,110,eor);
42: if(reading)
43: {
44: if (fread(ptr, (int)len, (int)(*number), cf) != *number)
45: return(due_err(uio));
46: }
47: else
48: fwrite(ptr,(int)len,(int)(*number),cf);
49: return(OK);
50: }
51:
52: due_err(s) char *s;
53: {
54: if(feof(cf))
55: err(endflag,EOF,s)
56: else
57: { clearerr(cf);
58: err(errflag,errno,s)
59: }
60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.