Commit | Line | Data |
---|---|---|
2a706e03 | 1 | /* |
161423a6 RE |
2 | * Copyright (c) 1980 Regents of the University of California. |
3 | * All rights reserved. The Berkeley software License Agreement | |
4 | * specifies the terms and conditions for redistribution. | |
2a706e03 | 5 | * |
161423a6 RE |
6 | * @(#)rdfe.c 5.1 %G% |
7 | */ | |
8 | ||
9 | /* | |
2a706e03 DL |
10 | * read direct formatted external i/o |
11 | */ | |
12 | ||
13 | #include "fio.h" | |
14 | ||
15 | extern int rd_ed(),rd_ned(); | |
16 | int y_getc(),y_rnew(),y_tab(); | |
17 | ||
18 | LOCAL char rdfe[] = "read dfe"; | |
19 | ||
20 | s_rdfe(a) cilist *a; | |
21 | { | |
22 | int n; | |
23 | reading = YES; | |
24 | if(n=c_dfe(a,READ,rdfe)) return(n); | |
25 | if(curunit->uwrt && ! nowreading(curunit)) err(errflag, errno, rdfe) | |
26 | getn = y_getc; | |
27 | doed = rd_ed; | |
28 | doned = rd_ned; | |
29 | dotab = y_tab; | |
30 | dorevert = doend = donewrec = y_rnew; | |
31 | if(pars_f()) err(errflag,F_ERFMT,rdfe) | |
32 | fmt_bg(); | |
33 | return(OK); | |
34 | } | |
35 | ||
36 | e_rdfe() | |
37 | { | |
38 | en_fio(); | |
39 | return(OK); | |
40 | } | |
41 | ||
42 | LOCAL | |
43 | y_getc() | |
44 | { | |
45 | int ch; | |
46 | if(curunit->uend) return(EOF); | |
47 | if(curunit->url==1 || recpos++ < curunit->url) | |
48 | { | |
49 | if((ch=getc(cf))!=EOF) | |
50 | { | |
51 | return(ch); | |
52 | } | |
53 | if(feof(cf)) | |
54 | { | |
55 | curunit->uend = YES; | |
56 | return(EOF); | |
57 | } | |
58 | err(errflag,errno,rdfe); | |
59 | } | |
60 | else return(' '); | |
61 | } | |
62 | ||
63 | /* | |
64 | /*y_rev() | |
65 | /*{ /*what about work done?*/ | |
66 | /* if(curunit->url==1) return(0); | |
67 | /* while(recpos<curunit->url) (*putn)(' '); | |
68 | /* recpos=0; | |
69 | /* return(0); | |
70 | /*} | |
71 | /* | |
72 | /*y_err() | |
73 | /*{ | |
74 | /* err(errflag, F_EREREC, rdfe+5); | |
75 | /*} | |
76 | */ | |
77 | ||
78 | LOCAL | |
79 | y_rnew() | |
80 | { if(curunit->url != 1) | |
81 | { fseek(cf,(long)curunit->url*(++recnum),0); | |
82 | recpos = reclen = cursor = 0; | |
83 | } | |
84 | return(OK); | |
85 | } |