|
|
1.1 ! root 1: /* @(#)sue.c 1.2 */ ! 2: /* 3.0 SID # 1.2 */ ! 3: #include "fio.h" ! 4: extern int reclen; ! 5: long recloc; ! 6: s_rsue(a) cilist *a; ! 7: { ! 8: int n; ! 9: if(!init) f_init(); ! 10: reading=1; ! 11: if(n=c_sue(a)) return(n); ! 12: recpos=0; ! 13: if(curunit->uwrt) (void) nowreading(curunit); ! 14: if(fread((char *)&reclen,sizeof(int),1,cf) ! 15: != 1) ! 16: { if(feof(cf)) ! 17: { curunit->uend = 1; ! 18: err(a->ciend, EOF, "start"); ! 19: } ! 20: clearerr(cf); ! 21: err(a->cierr, errno, "start"); ! 22: } ! 23: return(0); ! 24: } ! 25: s_wsue(a) cilist *a; ! 26: { ! 27: int n; ! 28: if(!init) f_init(); ! 29: if(n=c_sue(a)) return(n); ! 30: reading=0; ! 31: reclen=0; ! 32: if(!curunit->uwrt) (void) nowwriting(curunit); ! 33: recloc=ftell(cf); ! 34: (void) fseek(cf,(long)sizeof(int),1); ! 35: return(0); ! 36: } ! 37: c_sue(a) cilist *a; ! 38: { ! 39: if(a->ciunit >= MXUNIT || a->ciunit < 0) ! 40: err(a->cierr,101,"startio"); ! 41: external=sequential=1; ! 42: formatted=0; ! 43: curunit = &units[a->ciunit]; ! 44: elist=a; ! 45: if(curunit->ufd==NULL && fk_open(SEQ,UNF,a->ciunit)) ! 46: err(a->cierr,114,"sue"); ! 47: cf=curunit->ufd; ! 48: if(curunit->ufmt) err(a->cierr,103,"sue") ! 49: if(!curunit->useek) err(a->cierr,103,"sue") ! 50: return(0); ! 51: } ! 52: e_wsue() ! 53: { long loc; ! 54: (void) fwrite((char *)&reclen,sizeof(int),1,cf); ! 55: loc=ftell(cf); ! 56: (void) fseek(cf,recloc,0); ! 57: (void) fwrite((char *)&reclen,sizeof(int),1,cf); ! 58: (void) fseek(cf,loc,0); ! 59: return(0); ! 60: } ! 61: e_rsue() ! 62: { ! 63: (void) fseek(cf,(long)(reclen-recpos+sizeof(int)),1); ! 64: return(0); ! 65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.