|
|
1.1 ! root 1: /* @(#)iio.c 1.2 */ ! 2: #include "fio.h" ! 3: #include "fmt.h" ! 4: extern char *icptr; ! 5: char *icend; ! 6: extern icilist *svic; ! 7: extern int rd_ed(),rd_ned(),w_ed(),w_ned(),y_ierr(); ! 8: extern int z_wnew(); ! 9: int icnum; ! 10: extern int hiwater; ! 11: z_getc() ! 12: { ! 13: if(icptr >= icend) err(svic->iciend,(EOF),"endfile"); ! 14: if(recpos++ < svic->icirlen) ! 15: return(*icptr++); ! 16: else err(svic->icierr,110,"recend"); ! 17: } ! 18: z_putc(c) ! 19: { ! 20: if(icptr >= icend) err(svic->icierr,110,"inwrite"); ! 21: if(recpos++ < svic->icirlen) ! 22: *icptr++ = c; ! 23: else err(svic->icierr,110,"recend"); ! 24: return(0); ! 25: } ! 26: z_rnew() ! 27: { ! 28: icptr = svic->iciunit + (++icnum)*svic->icirlen; ! 29: recpos = 0; ! 30: cursor = 0; ! 31: hiwater = 0; ! 32: } ! 33: s_rsfi(a) icilist *a; ! 34: { int n; ! 35: if(n=c_si(a)) return(n); ! 36: reading=1; ! 37: doed=rd_ed; ! 38: doned=rd_ned; ! 39: getn=z_getc; ! 40: dorevert = y_ierr; ! 41: donewrec = doend = z_rnew; ! 42: return(0); ! 43: } ! 44: s_wsfi(a) icilist *a; ! 45: { int n; ! 46: if(n=c_si(a)) return(n); ! 47: reading=0; ! 48: doed=w_ed; ! 49: doned=w_ned; ! 50: putn=z_putc; ! 51: dorevert = y_ierr; ! 52: donewrec = doend = z_wnew; ! 53: return(0); ! 54: } ! 55: c_si(a) icilist *a; ! 56: { ! 57: fmtbuf=a->icifmt; ! 58: if(pars_f(fmtbuf)<0) ! 59: err(a->icierr,100,"startint"); ! 60: fmt_bg(); ! 61: sequential=formatted=1; ! 62: external=0; ! 63: cblank=cplus=scale=0; ! 64: svic=a; ! 65: icnum=recpos=0; ! 66: cursor = 0; ! 67: hiwater = 0; ! 68: icptr=svic->iciunit; ! 69: icend=icptr+svic->icirlen*svic->icirnum; ! 70: return(0); ! 71: } ! 72: z_wnew() ! 73: { ! 74: while(recpos++ < svic->icirlen) ! 75: *icptr++ = ' '; ! 76: recpos = 0; ! 77: cursor = 0; ! 78: hiwater = 0; ! 79: icnum++; ! 80: } ! 81: e_rsfi() ! 82: { int n; ! 83: n = en_fio(); ! 84: fmtbuf = NULL; ! 85: return(n); ! 86: } ! 87: e_wsfi() ! 88: { ! 89: int n; ! 90: n = en_fio(); ! 91: fmtbuf = NULL; ! 92: if(icnum >= svic->icirnum) ! 93: return(n); ! 94: while(recpos++ < svic->icirlen) ! 95: *icptr++ = ' '; ! 96: return(n); ! 97: } ! 98: y_ierr() ! 99: { ! 100: err(elist->cierr, 110, "iio"); ! 101: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.