1: #include "fio.h"
2: f_back(a) alist *a;
3: { unit *b;
4: int n,i;
5: long x;
6: char buf[32];
7: if(a->aunit >= MXUNIT || a->aunit < 0)
8: err(a->aerr,101,"backspace")
9: b= &units[a->aunit];
10: if(b->useek==0) err(a->aerr,106,"backspace")
11: if(b->ufd==NULL) err(a->aerr,114,"backspace")
12: if(b->uend==1)
13: { b->uend=0;
14: return(0);
15: }
16: if(b->uwrt)
17: { t_runc(b);
18: nowreading(b);
19: }
20: if(b->url>0)
21: {
22: x=ftell(b->ufd);
23: x /= b->url;
24: x *= b->url;
25: fseek(b->ufd,x,0);
26: return(0);
27: }
28: if(b->ufmt==0)
29: { fseek(b->ufd,-(long)sizeof(int),1);
30: fread((char *)&n,sizeof(int),1,b->ufd);
31: fseek(b->ufd,-(long)n-2*sizeof(int),1);
32: return(0);
33: }
34: for(;;)
35: {
36: x=ftell(b->ufd);
37: if(x<sizeof(buf)) x=0;
38: else x -= sizeof(buf);
39: fseek(b->ufd,x,0);
40: n=fread(buf,1,sizeof(buf),b->ufd);
41: for(i=n-1;i>=0;i--)
42: {
43: if(buf[i]!='\n') continue;
44: fseek(b->ufd,(long)(i-n),1);
45: return(0);
46: }
47: if(x==0) return(0);
48: else if(n==0) err(a->aerr,(EOF),"backspace")
49: else err(a->aerr,errno,"backspace");
50: }
51: }
Defined functions
f_back
defined in line
2;
never used