* formatted read routines
#define isdigit(c) (c>='0' && c<='9')
#define isalpha(c) (c>='a' && c<='z')
rd_ed(p
,ptr
,len
) char *ptr
; struct syl
*p
; ftnlen len
;
if(cursor
&& (n
=rd_mvcur())) return(n
);
n
= (rd_I(ptr
,p
->p1
,len
));
p
->p1
= len
; /* cheap trick */
n
= (rd_AW(ptr
,p
->p1
,len
));
n
= (rd_F(ptr
,p
->p1
,p
->p2
,len
));
if(feof(cf
)) return(EOF
);
rd_ned(p
,ptr
) char *ptr
; struct syl
*p
;
/* return(rd_POS(p->p1));
/* return(rd_H(p->p1,p->p2)); */
if(p
->p1
) cursor
= p
->p1
- recpos
- 1;
else cursor
= 8*p
->p2
- recpos
%8; /* NOT STANDARD FORT */
if(tab
) return((*dotab
)());
while(cursor
--) if((n
=(*getn
)()) < 0) return(n
);
rd_I(n
,w
,len
) ftnlen len
; uint
*n
;
if((ch
=(*getn
)())<0) return(ch
);
{ if ((c
=(ch
-'0')) < radix
)
{ if ((c
=(ch
-'a'+10)) < radix
)
if(len
==sizeof(short)) n
->is
=x
;
{ if((ch
=(*getn
)()) < 0) return(ch
);
if((ch
=lcase(ch
))=='t' && v
==-1) v
=1;
else if(ch
=='f' && v
==-1) v
=0;
if(v
==-1) return(errno
=116);
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
);
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(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_AW(p
,w
,len
) char *p
; ftnlen len
;
for(i
=0;i
<w
-len
;i
++) GET(ch
);
for(i
=0;i
<len
-w
;i
++) *p
++=' ';
/* THIS IS NOT ALLOWED IN THE NEW STANDARD 'CAUSE IT'S WEIRD */
/* if((ch=(*getn)())<0) return(ch);
/* else if(ch=='\n') for(;i<n;i++) *s++ = ' ';
/* if(*s==quote && *(s+1)!=quote) break;
/* else if((ch=(*getn)())<0) return(ch);
/* else *s = ch=='\n'?' ':ch;