|
|
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: {
17: err(errflag,110,eor);
18: }
19: if (fread(ptr,(int)len,(int)(*number),cf) != *number)
20: { if(feof(cf)) err(endflag,EOF,uio)
21: else
22: { clearerr(cf);
23: err(errflag,errno,uio)
24: }
25: }
26: }
27: else
28: {
29: reclen += *number * len;
30: fwrite(ptr,(int)len,(int)(*number),cf);
31: }
32: return(OK);
33: }
34:
35: do_uio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
36: {
37: if(sequential)
38: return(do_us(number,ptr,len));
39: else return(do_ud(number,ptr,len));
40: }
41:
42: do_ud(number,ptr,len) ftnint *number; ftnlen len; char *ptr; /* direct */
43: {
44: recpos += *number * len;
45: if(recpos > curunit->url && curunit->url!=1)
46: err(errflag,110,eor);
47: if(reading)
48: {
49: if(fread(ptr,(int)len,(int)(*number),cf) != *number)
50: { if(feof(cf)) err(endflag,EOF,uio)
51: else
52: { clearerr(cf);
53: err(errflag,errno,uio)
54: }
55: }
56: }
57: else fwrite(ptr,(int)len,(int)(*number),cf);
58: return(OK);
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.