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