Daily bump.
[official-gcc.git] / libf2c / libI77 / iio.c
blob931f15aab6310c2b683e677590784eb2055c5bb7
1 #include "f2c.h"
2 #include "fio.h"
3 #include "fmt.h"
4 extern char *f__icptr;
5 char *f__icend;
6 extern icilist *f__svic;
7 int f__icnum;
8 extern int f__hiwater;
9 z_getc(Void)
11 if(f__recpos++ < f__svic->icirlen) {
12 if(f__icptr >= f__icend) err(f__svic->iciend,(EOF),"endfile");
13 return(*(unsigned char *)f__icptr++);
15 return '\n';
18 void
19 #ifdef KR_headers
20 z_putc(c)
21 #else
22 z_putc(int c)
23 #endif
25 if (f__icptr < f__icend && f__recpos++ < f__svic->icirlen)
26 *f__icptr++ = c;
28 z_rnew(Void)
30 f__icptr = f__svic->iciunit + (++f__icnum)*f__svic->icirlen;
31 f__recpos = 0;
32 f__cursor = 0;
33 f__hiwater = 0;
34 return 1;
37 static int
38 z_endp(Void)
40 (*f__donewrec)();
41 return 0;
44 #ifdef KR_headers
45 c_si(a) icilist *a;
46 #else
47 c_si(icilist *a)
48 #endif
50 if (f__init & 2)
51 f__fatal (131, "I/O recursion");
52 f__init |= 2;
53 f__elist = (cilist *)a;
54 f__fmtbuf=a->icifmt;
55 f__curunit = 0;
56 f__sequential=f__formatted=1;
57 f__external=0;
58 if(pars_f(f__fmtbuf)<0)
59 err(a->icierr,100,"startint");
60 fmt_bg();
61 f__cblank=f__cplus=f__scale=0;
62 f__svic=a;
63 f__icnum=f__recpos=0;
64 f__cursor = 0;
65 f__hiwater = 0;
66 f__icptr = a->iciunit;
67 f__icend = f__icptr + a->icirlen*a->icirnum;
68 f__cf = 0;
69 return(0);
72 int
73 iw_rev(Void)
75 if(f__workdone)
76 z_endp();
77 f__hiwater = f__recpos = f__cursor = 0;
78 return(f__workdone=0);
81 #ifdef KR_headers
82 integer s_rsfi(a) icilist *a;
83 #else
84 integer s_rsfi(icilist *a)
85 #endif
86 { int n;
87 if(n=c_si(a)) return(n);
88 f__reading=1;
89 f__doed=rd_ed;
90 f__doned=rd_ned;
91 f__getn=z_getc;
92 f__dorevert = z_endp;
93 f__donewrec = z_rnew;
94 f__doend = z_endp;
95 return(0);
98 z_wnew(Void)
100 if (f__recpos < f__hiwater) {
101 f__icptr += f__hiwater - f__recpos;
102 f__recpos = f__hiwater;
104 while(f__recpos++ < f__svic->icirlen)
105 *f__icptr++ = ' ';
106 f__recpos = 0;
107 f__cursor = 0;
108 f__hiwater = 0;
109 f__icnum++;
110 return 1;
112 #ifdef KR_headers
113 integer s_wsfi(a) icilist *a;
114 #else
115 integer s_wsfi(icilist *a)
116 #endif
117 { int n;
118 if(n=c_si(a)) return(n);
119 f__reading=0;
120 f__doed=w_ed;
121 f__doned=w_ned;
122 f__putn=z_putc;
123 f__dorevert = iw_rev;
124 f__donewrec = z_wnew;
125 f__doend = z_endp;
126 return(0);
128 integer e_rsfi(Void)
129 { int n;
130 f__init &= ~2;
131 n = en_fio();
132 f__fmtbuf = NULL;
133 return(n);
135 integer e_wsfi(Void)
137 int n;
138 f__init &= ~2;
139 n = en_fio();
140 f__fmtbuf = NULL;
141 if(f__svic->icirnum != 1
142 && (f__icnum > f__svic->icirnum
143 || (f__icnum == f__svic->icirnum && (f__recpos | f__hiwater))))
144 err(f__svic->icierr,110,"inwrite");
145 if (f__recpos < f__hiwater)
146 f__recpos = f__hiwater;
147 if (f__recpos >= f__svic->icirlen)
148 err(f__svic->icierr,110,"recend");
149 if (!f__recpos && f__icnum)
150 return n;
151 while(f__recpos++ < f__svic->icirlen)
152 *f__icptr++ = ' ';
153 return n;