Bell 32V development
[unix-history] / usr / src / libI77 / iio.c
#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");
}