|
|
1.1 root 1: #include "f2c.h"
2: #include "fio.h"
3: #include "fmt.h"
4:
5: y_rsk(Void)
6: {
7: if(f__curunit->uend || f__curunit->url <= f__recpos
8: || f__curunit->url == 1) return 0;
9: do {
10: getc(f__cf);
11: } while(++f__recpos < f__curunit->url);
12: return 0;
13: }
14: y_getc(Void)
15: {
16: int ch;
17: if(f__curunit->uend) return(-1);
18: if((ch=getc(f__cf))!=EOF)
19: {
20: f__recpos++;
21: if(f__curunit->url>=f__recpos ||
22: f__curunit->url==1)
23: return(ch);
24: else return(' ');
25: }
26: if(feof(f__cf))
27: {
28: f__curunit->uend=1;
29: errno=0;
30: return(-1);
31: }
32: err(f__elist->cierr,errno,"readingd");
33: }
34: #ifdef KR_headers
35: y_putc(c)
36: #else
37: y_putc(int c)
38: #endif
39: {
40: f__recpos++;
41: if(f__recpos <= f__curunit->url || f__curunit->url==1)
42: putc(c,f__cf);
43: else
44: err(f__elist->cierr,110,"dout");
45: return(0);
46: }
47: y_rev(Void)
48: { /*what about work done?*/
49: if(f__curunit->url==1 || f__recpos==f__curunit->url)
50: return(0);
51: while(f__recpos<f__curunit->url)
52: (*f__putn)(' ');
53: f__recpos=0;
54: return(0);
55: }
56: y_err(Void)
57: {
58: err(f__elist->cierr, 110, "dfe");
59: }
60:
61: y_newrec(Void)
62: {
63: if(f__curunit->url == 1 || f__recpos == f__curunit->url) {
64: f__hiwater = f__recpos = f__cursor = 0;
65: return(1);
66: }
67: if(f__hiwater > f__recpos)
68: f__recpos = f__hiwater;
69: y_rev();
70: f__hiwater = f__cursor = 0;
71: return(1);
72: }
73:
74: #ifdef KR_headers
75: c_dfe(a) cilist *a;
76: #else
77: c_dfe(cilist *a)
78: #endif
79: {
80: f__sequential=0;
81: f__formatted=f__external=1;
82: f__elist=a;
83: f__cursor=f__scale=f__recpos=0;
84: if(a->ciunit>MXUNIT || a->ciunit<0)
85: err(a->cierr,101,"startchk");
86: f__curunit = &f__units[a->ciunit];
87: if(f__curunit->ufd==NULL && fk_open(DIR,FMT,a->ciunit))
88: err(a->cierr,104,"dfe");
89: f__cf=f__curunit->ufd;
90: if(!f__curunit->ufmt) err(a->cierr,102,"dfe")
91: if(!f__curunit->useek) err(a->cierr,104,"dfe")
92: f__fmtbuf=a->cifmt;
93: (void) fseek(f__cf,(long)f__curunit->url * (a->cirec-1),SEEK_SET);
94: f__curunit->uend = 0;
95: return(0);
96: }
97: #ifdef KR_headers
98: integer s_rdfe(a) cilist *a;
99: #else
100: integer s_rdfe(cilist *a)
101: #endif
102: {
103: int n;
104: if(!f__init) f_init();
105: if(n=c_dfe(a))return(n);
106: f__reading=1;
107: if(f__curunit->uwrt && f__nowreading(f__curunit))
108: err(a->cierr,errno,"read start");
109: f__getn = y_getc;
110: f__doed = rd_ed;
111: f__doned = rd_ned;
112: f__dorevert = f__donewrec = y_err;
113: f__doend = y_rsk;
114: if(pars_f(f__fmtbuf)<0)
115: err(a->cierr,100,"read start");
116: fmt_bg();
117: return(0);
118: }
119: #ifdef KR_headers
120: integer s_wdfe(a) cilist *a;
121: #else
122: integer s_wdfe(cilist *a)
123: #endif
124: {
125: int n;
126: if(!f__init) f_init();
127: if(n=c_dfe(a)) return(n);
128: f__reading=0;
129: if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
130: err(a->cierr,errno,"startwrt");
131: f__putn = y_putc;
132: f__doed = w_ed;
133: f__doned= w_ned;
134: f__dorevert = y_err;
135: f__donewrec = y_newrec;
136: f__doend = y_rev;
137: if(pars_f(f__fmtbuf)<0)
138: err(a->cierr,100,"startwrt");
139: fmt_bg();
140: return(0);
141: }
142: integer e_rdfe(Void)
143: {
144: (void) en_fio();
145: return(0);
146: }
147: integer e_wdfe(Void)
148: {
149: (void) en_fio();
150: return(0);
151: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.