source: vendor/gcc/3.2.2/libf2c/libI77/iio.c

Last change on this file was 2, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.6 KB
Line 
1#include "f2c.h"
2#include "fio.h"
3#include "fmt.h"
4extern char *f__icptr;
5char *f__icend;
6extern icilist *f__svic;
7int f__icnum;
8extern int f__hiwater;
9z_getc(Void)
10{
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++);
14 }
15 return '\n';
16}
17
18 void
19#ifdef KR_headers
20z_putc(c)
21#else
22z_putc(int c)
23#endif
24{
25 if (f__icptr < f__icend && f__recpos++ < f__svic->icirlen)
26 *f__icptr++ = c;
27}
28z_rnew(Void)
29{
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;
35}
36
37 static int
38z_endp(Void)
39{
40 (*f__donewrec)();
41 return 0;
42 }
43
44#ifdef KR_headers
45c_si(a) icilist *a;
46#else
47c_si(icilist *a)
48#endif
49{
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);
70}
71
72 int
73iw_rev(Void)
74{
75 if(f__workdone)
76 z_endp();
77 f__hiwater = f__recpos = f__cursor = 0;
78 return(f__workdone=0);
79 }
80
81#ifdef KR_headers
82integer s_rsfi(a) icilist *a;
83#else
84integer 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);
96}
97
98z_wnew(Void)
99{
100 if (f__recpos < f__hiwater) {
101 f__icptr += f__hiwater - f__recpos;
102 f__recpos = f__hiwater;
103 }
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;
111}
112#ifdef KR_headers
113integer s_wsfi(a) icilist *a;
114#else
115integer 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);
127}
128integer e_rsfi(Void)
129{ int n;
130 f__init &= ~2;
131 n = en_fio();
132 f__fmtbuf = NULL;
133 return(n);
134}
135integer e_wsfi(Void)
136{
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;
154}
Note: See TracBrowser for help on using the repository browser.