|
|
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.