home *** CD-ROM | disk | FTP | other *** search
- #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");
- }
-