Daily bump.
[official-gcc.git] / libf2c / libI77 / rsfe.c
blob1be45310f5179b0b40d61c95dcc8347ccd22fe4e
1 /* read sequential formatted external */
2 #include "config.h"
3 #include "f2c.h"
4 #include "fio.h"
5 #include "fmt.h"
7 xrd_SL(Void)
8 { int ch;
9 if(!f__curunit->uend)
10 while((ch=getc(f__cf))!='\n')
11 if (ch == EOF) {
12 f__curunit->uend = 1;
13 break;
15 f__cursor=f__recpos=0;
16 return(1);
18 x_getc(Void)
19 { int ch;
20 if(f__curunit->uend) return(EOF);
21 ch = getc(f__cf);
22 if(ch!=EOF && ch!='\n')
23 { f__recpos++;
24 return(ch);
26 if(ch=='\n')
27 { (void) ungetc(ch,f__cf);
28 return(ch);
30 if(f__curunit->uend || feof(f__cf))
31 { errno=0;
32 f__curunit->uend=1;
33 return(-1);
35 return(-1);
37 x_endp(Void)
39 xrd_SL();
40 return f__curunit->uend == 1 ? EOF : 0;
42 x_rev(Void)
44 (void) xrd_SL();
45 return(0);
47 #ifdef KR_headers
48 integer s_rsfe(a) cilist *a; /* start */
49 #else
50 integer s_rsfe(cilist *a) /* start */
51 #endif
52 { int n;
53 if(f__init != 1) f_init();
54 f__init = 3;
55 f__reading=1;
56 f__sequential=1;
57 f__formatted=1;
58 f__external=1;
59 if(n=c_sfe(a)) return(n);
60 f__elist=a;
61 f__cursor=f__recpos=0;
62 f__scale=0;
63 f__fmtbuf=a->cifmt;
64 f__curunit= &f__units[a->ciunit];
65 f__cf=f__curunit->ufd;
66 if(pars_f(f__fmtbuf)<0) err(a->cierr,100,"startio");
67 f__getn= x_getc;
68 f__doed= rd_ed;
69 f__doned= rd_ned;
70 fmt_bg();
71 f__doend=x_endp;
72 f__donewrec=xrd_SL;
73 f__dorevert=x_rev;
74 f__cblank=f__curunit->ublnk;
75 f__cplus=0;
76 if(f__curunit->uwrt && f__nowreading(f__curunit))
77 err(a->cierr,errno,"read start");
78 if(f__curunit->uend)
79 err(f__elist->ciend,(EOF),"read start");
80 return(0);