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