rd_ed(p
,ptr
,len
) char *ptr
; struct syl
*p
; ftnlen len
;
for(;cursor
>0;cursor
--) if((ch
=(*getn
)())<0) return(ch
);
{ if(recpos
+cursor
< 0) err(elist
->cierr
,110,"fmt")
if(curunit
->useek
) fseek(cf
,(long) cursor
,1);
else err(elist
->cierr
,106,"fmt");
default: fprintf(stderr
,"rd_ed, unexpected code: %d\n%s\n",
case I
: ch
= (rd_I(ptr
,p
->p1
,len
));
case IM
: ch
= (rd_I(ptr
,p
->p1
,len
));
case L
: ch
= (rd_L(ptr
,p
->p1
));
case A
: ch
= (rd_A(ptr
,len
));
ch
= (rd_AW(ptr
,p
->p1
,len
));
case F
: ch
= (rd_F(ptr
,p
->p1
,p
->p2
,len
));
else if(feof(cf
)) return(EOF
);
rd_ned(p
,ptr
) char *ptr
; struct syl
*p
;
default: fprintf(stderr
,"rd_ned, unexpected code: %d\n%s\n",
case H
: return(rd_H(p
->p1
,p
->p2
));
case SLASH
: return((*donewrec
)());
case T
: cursor
=p
->p1
-recpos
;
case TL
: cursor
-= p
->p1
;
rd_I(n
,w
,len
) ftnlen len
; uint
*n
;
if((ch
=(*getn
)())<0) return(ch
);
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
if(len
==sizeof(short)) n
->is
=x
;
{ if((ch
=(*getn
)())<0) return(ch
);
if(ch
=='t' && v
==-1) v
=1;
else if(ch
=='f' && v
==-1) v
=0;
else if(ch
==',') return(0);
rd_F(p
,w
,d
,len
) ftnlen len
; ufloat
*p
;
int i
,sx
,sz
,ch
,dot
,ny
,z
,sawz
;
if((ch
=(*getn
)())<0) return(ch
);
else if(ch
==' ' && !cblank
|| ch
=='+') continue;
else if(ch
<='9' && ch
>='0')
else if(ch
=='e' || ch
=='d' || ch
=='.')
else if(cblank
&& ch
==' ') x
*=10;
else if(ch
!='\n') return(errno
=115);
while(i
<w
&& ch
!='e' && ch
!='d' && ch
!='+' && ch
!='-')
if((ch
=(*getn
)())<0) return(ch
);
else if(ch
<='9' && ch
>='0')
else if(cblank
&& ch
==' ')
else if(ch
==',') {i
=w
; break;}
else if(ch
==' ') continue;
if((ch
=(*getn
)())<0) return(ch
);
else if(ch
<='9' && ch
>='0')
else if(cblank
&& ch
==' ')
else if(ch
==' ') continue;
else if(ch
=='+') continue;
else if(ch
!='\n') return(errno
=115);
for(i
=0;i
<d
;i
++) x
/= 10;
for(i
=0;i
<ny
;i
++) y
/= 10;
else for(i
=0;i
<z
;i
++) x
*= 10;
for(i
=scale
;i
>0;i
--) x
/= 10;
for(i
=scale
;i
<0;i
++) x
*= 10;
if(len
==sizeof(float)) p
->pf
=x
;
rd_A(p
,len
) char *p
; ftnlen len
;
rd_AW(p
,w
,len
) char *p
; ftnlen len
;
for(i
=0;i
<len
-w
;i
++) *p
++=' ';
if((ch
=(*getn
)())<0) return(ch
);
else if(ch
=='\n') *s
++ = ' ';
else *s
++ = ch
=='\n'?' ':ch
;
if(*s
==quote
&& *(s
+1)!=quote
) break;
else if((ch
=(*getn
)())<0) return(ch
);
else *s
= ch
=='\n'?' ':ch
;