Lines Matching refs:io

138 _http_new_chunk(struct httpio *io)  in _http_new_chunk()  argument
142 if (_fetch_getln(io->conn) == -1) in _http_new_chunk()
145 if (io->conn->buflen < 2 || !ishexnumber((unsigned)*io->conn->buf)) in _http_new_chunk()
148 for (p = io->conn->buf; *p && !isspace((unsigned)*p); ++p) { in _http_new_chunk()
154 io->chunksize = io->chunksize * 16 + in _http_new_chunk()
157 io->chunksize = io->chunksize * 16 + in _http_new_chunk()
164 io->total += io->chunksize; in _http_new_chunk()
165 if (io->chunksize == 0) in _http_new_chunk()
169 __func__, (unsigned long)io->chunksize, in _http_new_chunk()
170 (unsigned long)io->total); in _http_new_chunk()
174 return (io->chunksize); in _http_new_chunk()
181 _http_growbuf(struct httpio *io, size_t len) in _http_growbuf() argument
185 if (io->bufsize >= len) in _http_growbuf()
188 if ((tmp = realloc(io->buf, len)) == NULL) in _http_growbuf()
190 io->buf = tmp; in _http_growbuf()
191 io->bufsize = len; in _http_growbuf()
199 _http_fillbuf(struct httpio *io, size_t len) in _http_fillbuf() argument
201 if (io->error) in _http_fillbuf()
203 if (io->eof) in _http_fillbuf()
206 if (io->chunked == 0) { in _http_fillbuf()
207 if (_http_growbuf(io, len) == -1) in _http_fillbuf()
209 if ((io->buflen = _fetch_read(io->conn, io->buf, len)) == -1) { in _http_fillbuf()
210 io->error = 1; in _http_fillbuf()
213 io->bufpos = 0; in _http_fillbuf()
214 return (io->buflen); in _http_fillbuf()
217 if (io->chunksize == 0) { in _http_fillbuf()
218 switch (_http_new_chunk(io)) { in _http_fillbuf()
220 io->error = 1; in _http_fillbuf()
223 io->eof = 1; in _http_fillbuf()
228 if (len > io->chunksize) in _http_fillbuf()
229 len = io->chunksize; in _http_fillbuf()
230 if (_http_growbuf(io, len) == -1) in _http_fillbuf()
232 if ((io->buflen = _fetch_read(io->conn, io->buf, len)) == -1) { in _http_fillbuf()
233 io->error = 1; in _http_fillbuf()
236 io->chunksize -= io->buflen; in _http_fillbuf()
238 if (io->chunksize == 0) { in _http_fillbuf()
241 if (_fetch_read(io->conn, endl, 2) != 2 || in _http_fillbuf()
246 io->bufpos = 0; in _http_fillbuf()
248 return (io->buflen); in _http_fillbuf()
257 struct httpio *io = (struct httpio *)v; in _http_readfn() local
260 if (io->error) in _http_readfn()
262 if (io->eof) in _http_readfn()
267 if (!io->buf || io->bufpos == io->buflen) in _http_readfn()
268 if (_http_fillbuf(io, (unsigned) len) < 1) in _http_readfn()
270 l = io->buflen - io->bufpos; in _http_readfn()
273 bcopy(io->buf + io->bufpos, buf + pos, (unsigned) l); in _http_readfn()
274 io->bufpos += l; in _http_readfn()
277 if (!pos && io->error) in _http_readfn()
288 struct httpio *io = (struct httpio *)v; in _http_writefn() local
290 return (_fetch_write(io->conn, buf, (unsigned) len)); in _http_writefn()
299 struct httpio *io = (struct httpio *)v; in _http_closefn() local
302 r = _fetch_close(io->conn); in _http_closefn()
303 if (io->buf) in _http_closefn()
304 free(io->buf); in _http_closefn()
305 free(io); in _http_closefn()
315 struct httpio *io; in _http_funopen() local
318 if ((io = calloc(1, sizeof(*io))) == NULL) { in _http_funopen()
322 io->conn = conn; in _http_funopen()
323 io->chunked = chunked; in _http_funopen()
324 f = funopen(io, _http_readfn, _http_writefn, NULL, _http_closefn); in _http_funopen()
327 free(io); in _http_funopen()