Lines Matching refs:fi
49 Filter_t* fi;
52 fi = (Filter_t*)disc;
56 if(fi->next && fi->next >= fi->endb )
57 { if((r = sfrd(f,fi->raw,sizeof(fi->raw),disc)) > 0)
58 { fi->next = fi->raw;
59 fi->endb = fi->raw+r;
63 sfset(fi->filter,SF_READ,0);
64 close(sffileno(fi->filter));
65 sfset(fi->filter,SF_READ,1);
66 fi->next = fi->endb = NIL(char*);
70 if(fi->next && (w = fi->endb - fi->next) > 0 )
72 sfset(fi->filter, SF_READ, 0);
73 r = sfpoll(&fi->filter, 1, 1);
74 sfset(fi->filter, SF_READ, 1);
78 if((w = sfwr(fi->filter, fi->next, w, 0)) > 0)
79 fi->next += w;
86 sfset(fi->filter, SF_WRITE, 0);
87 w = sfpoll(&fi->filter, 1, fi->next ? 1 : -1);
88 sfset(fi->filter, SF_WRITE, 1);
90 if(!fi->next || w == 1) /* non-blocking read */
92 if((r = sfrd(fi->filter, buf, n, 0)) > 0)
157 reg Filter_t* fi;
167 if(!(fi = (Filter_t*)malloc(sizeof(Filter_t))) )
172 fi->disc.readf = filterread;
173 fi->disc.writef = filterwrite;
174 fi->disc.seekf = filterseek;
175 fi->disc.exceptf = filterexcept;
176 fi->filter = filter;
177 fi->next = fi->endb = fi->raw;
179 if(sfdisc(f,(Sfdisc_t*)fi) != (Sfdisc_t*)fi)
181 free(fi);