Lines Matching refs:f

30 ssize_t sfwrite(Sfio_t* f, const Void_t* buf, size_t n)  in sfwrite()  argument
32 ssize_t sfwrite(f,buf,n) in sfwrite()
33 Sfio_t* f; /* write to this stream. */ in sfwrite()
41 SFMTXDECL(f);
43 SFMTXENTER(f, (ssize_t)(-1));
45 GETLOCAL(f,local);
48 SFMTXRETURN(f, (ssize_t)(n == 0 ? 0 : -1) );
51 if(f->mode&SF_PEEK)
52 { if(!(f->mode&SF_WRITE) && (f->flags&SF_RDWR) != SF_RDWR)
53 SFMTXRETURN(f, (ssize_t)(-1));
55 if((uchar*)buf != f->next &&
56 (!f->rsrv || f->rsrv->data != (uchar*)buf) )
57 SFMTXRETURN(f, (ssize_t)(-1));
59 f->mode &= ~SF_PEEK;
61 if(f->mode&SF_PKRD)
69 if((r = sysreadf(f->file,buf,r)) <= 0)
76 f->mode &= ~SF_PKRD;
77 f->endb = f->data + n;
78 f->here += n;
81 if((f->mode&SF_READ) && f->proc)
82 f->next += n;
86 for(;; f->mode &= ~SF_LOCK)
88 if(SFMODE(f,local) != SF_WRITE && _sfmode(f,SF_WRITE,local) < 0 )
90 SFMTXRETURN(f,w);
93 SFLOCK(f,local);
95 w = f->endb - f->next;
97 if(s == f->next && s < f->endb) /* after sfreserve */
100 f->next = (s += w);
106 if(w == 0 || ((f->flags&SF_WHOLE) && w < (ssize_t)n) )
107 { if(f->flags&SF_STRING) /* extend buffer */
108 { (void)SFWR(f, s, n-w, f->disc);
109 if((w = f->endb - f->next) < (ssize_t)n)
110 { if(!(f->flags&SF_STRING)) /* maybe sftmp */
111 { if(f->next > f->data)
118 else if(f->next > f->data)
120 (void)SFFLSBUF(f, -1);
121 if((w = f->endb - f->next) < (ssize_t)n &&
122 (f->flags&SF_WHOLE) && f->next > f->data )
127 if(!(f->flags&SF_STRING) && f->next == f->data &&
128 (((f->flags&SF_WHOLE) && w <= n) || SFDIRECT(f,n)) )
130 if((w = SFWR(f,s,n,f->disc)) <= 0 )
138 memmove(f->next, s, w);
139 f->next += w;
148 if(f->extent < 0 && (f->flags&SF_SHARE) && !(f->flags&SF_PUBLIC) )
149 (void)SFFLSBUF(f,-1);
152 else if(n == 0 && (f->flags&SF_LINE) && !(f->flags&SF_STRING))
153 { if((ssize_t)(n = f->next-f->data) > (w = s-begs))
156 { for(next = f->next-1; n > 0; --n, --next)
164 (void)SFFLSBUF(f,-1);
167 SFOPEN(f,local);
170 SFMTXRETURN(f,w);