|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)douio.c 5.1 6/7/85 ! 7: */ ! 8: ! 9: /* ! 10: * unformatted external i/o ! 11: */ ! 12: ! 13: #include "fio.h" ! 14: ! 15: LOCAL char *eor = "eor/uio"; ! 16: LOCAL char *uio = "uio"; ! 17: ! 18: LOCAL ! 19: do_us(number,ptr,len) ftnint *number; ftnlen len; char *ptr; /* sequential */ ! 20: { ! 21: if(reading) ! 22: { ! 23: recpos += *number * len; ! 24: if (recpos > reclen) { ! 25: recpos -= *number * len; ! 26: e_rsue(); /* in case tries another read */ ! 27: err(errflag,F_EREREC,eor); ! 28: } ! 29: ! 30: if (fread(ptr,(int)len,(int)(*number),cf) != *number) ! 31: return(due_err(uio)); ! 32: } ! 33: else ! 34: { ! 35: reclen += *number * len; ! 36: fwrite(ptr,(int)len,(int)(*number),cf); ! 37: } ! 38: return(OK); ! 39: } ! 40: ! 41: do_uio(number,ptr,len) ftnint *number; ftnlen len; char *ptr; ! 42: { ! 43: if(sequential) ! 44: return(do_us(number,ptr,len)); ! 45: else ! 46: return(do_ud(number,ptr,len)); ! 47: } ! 48: ! 49: LOCAL ! 50: do_ud(number,ptr,len) ftnint *number; ftnlen len; char *ptr; /* direct */ ! 51: { ! 52: recpos += *number * len; ! 53: if(recpos > curunit->url && curunit->url!=1) ! 54: err(errflag,F_EREREC,eor); ! 55: if(reading) ! 56: { ! 57: if (fread(ptr, (int)len, (int)(*number), cf) != *number) ! 58: return(due_err(uio)); ! 59: } ! 60: else ! 61: fwrite(ptr,(int)len,(int)(*number),cf); ! 62: return(OK); ! 63: } ! 64: ! 65: due_err(s) char *s; ! 66: { ! 67: if(feof(cf)) ! 68: err(endflag,EOF,s) ! 69: else ! 70: { clearerr(cf); ! 71: err(errflag,errno,s) ! 72: } ! 73: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.