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