#include "fio.h" #include "fmt.h" char *icptr,*icend; icilist *svic; extern int rd_ed(),rd_ned(),w_ed(),w_ned(),y_err(); extern int z_wnew(); int icnum,icpos; z_getc() { if(icptr >= icend) err(svic->iciend,(EOF),"endfile"); if(icpos++ < svic->icirlen) return(*icptr++); else err(svic->icierr,110,"recend"); } z_putc(c) { if(icptr >= icend) err(svic->icierr,110,"inwrite"); if(icpos++ < svic->icirlen) *icptr++ = c; else err(svic->icierr,110,"recend"); return(0); } z_rnew() { icptr = svic->iciunit + (++icnum)*svic->icirlen; icpos = 0; } s_rsfi(a) icilist *a; { int n; if(n=c_si(a)) return(n); reading=1; doed=rd_ed; doned=rd_ned; getn=z_getc; dorevert = donewrec = y_err; doend = z_rnew; return(0); } s_wsfi(a) icilist *a; { int n; if(n=c_si(a)) return(n); reading=0; doed=w_ed; doned=w_ned; putn=z_putc; dorevert = donewrec = y_err; doend = z_wnew; return(0); } c_si(a) icilist *a; { fmtbuf=a->icifmt; if(pars_f(fmtbuf)<0) err(a->icierr,100,"startint"); fmt_bg(); sequential=formatted=1; external=0; cblank=cplus=scale=0; svic=a; icnum=icpos=0; icptr=svic->iciunit; icend=icptr+svic->icirlen*svic->icirnum; return(0); } z_wnew() { while(icpos++ < svic->icirlen) *icptr++ = ' '; icpos = 0; icnum++; } e_rsfi() { int n; n = en_fio(); fmtbuf = NULL; return(n); } e_wsfi() { int n; n = en_fio(); fmtbuf = NULL; while(icpos++ < svic->icirlen) *icptr++ = ' '; return(n); } y_err() { err(elist->cierr, 110, "iio"); }