Lines Matching refs:state

24 local int gz_load(state, buf, len, have)  in gz_load()  argument
25 gz_statep state; in gz_load()
38 ret = read(state.state->fd, buf + *have, get);
44 gz_error(state, Z_ERRNO, zstrerror());
48 state.state->eof = 1;
59 local int gz_avail(state) in gz_avail() argument
60 gz_statep state; in gz_avail()
63 z_streamp strm = &(state.state->strm);
65 if (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)
67 if (state.state->eof == 0) {
69 unsigned char *p = state.state->in;
76 if (gz_load(state, state.state->in + strm->avail_in,
77 state.state->size - strm->avail_in, &got) == -1)
80 strm->next_in = state.state->in;
94 local int gz_look(state) in gz_look() argument
95 gz_statep state; in gz_look()
97 z_streamp strm = &(state.state->strm);
100 if (state.state->size == 0) {
102 state.state->in = (unsigned char *)malloc(state.state->want);
103 state.state->out = (unsigned char *)malloc(state.state->want << 1);
104 if (state.state->in == NULL || state.state->out == NULL) {
105 free(state.state->out);
106 free(state.state->in);
107 gz_error(state, Z_MEM_ERROR, "out of memory");
110 state.state->size = state.state->want;
113 state.state->strm.zalloc = Z_NULL;
114 state.state->strm.zfree = Z_NULL;
115 state.state->strm.opaque = Z_NULL;
116 state.state->strm.avail_in = 0;
117 state.state->strm.next_in = Z_NULL;
118 if (inflateInit2(&(state.state->strm), 15 + 16) != Z_OK) { /* gunzip */
119 free(state.state->out);
120 free(state.state->in);
121 state.state->size = 0;
122 gz_error(state, Z_MEM_ERROR, "out of memory");
129 if (gz_avail(state) == -1)
146 state.state->how = GZIP;
147 state.state->direct = 0;
153 if (state.state->direct == 0) {
155 state.state->eof = 1;
156 state.state->x.have = 0;
163 state.state->x.next = state.state->out;
165 memcpy(state.state->x.next, strm->next_in, strm->avail_in);
166 state.state->x.have = strm->avail_in;
169 state.state->how = COPY;
170 state.state->direct = 1;
179 local int gz_decomp(state) in gz_decomp() argument
180 gz_statep state; in gz_decomp()
184 z_streamp strm = &(state.state->strm);
190 if (strm->avail_in == 0 && gz_avail(state) == -1)
193 gz_error(state, Z_BUF_ERROR, "unexpected end of file");
200 gz_error(state, Z_STREAM_ERROR,
205 gz_error(state, Z_MEM_ERROR, "out of memory");
209 gz_error(state, Z_DATA_ERROR,
216 state.state->x.have = had - strm->avail_out;
217 state.state->x.next = strm->next_out - state.state->x.have;
221 state.state->how = LOOK;
233 local int gz_fetch(state) in gz_fetch() argument
234 gz_statep state; in gz_fetch()
236 z_streamp strm = &(state.state->strm);
239 switch(state.state->how) {
241 if (gz_look(state) == -1)
243 if (state.state->how == LOOK)
247 if (gz_load(state, state.state->out, state.state->size << 1, &(state.state->x.have))
250 state.state->x.next = state.state->out;
253 strm->avail_out = state.state->size << 1;
254 strm->next_out = state.state->out;
255 if (gz_decomp(state) == -1)
258 } while (state.state->x.have == 0 && (!state.state->eof || strm->avail_in));
263 local int gz_skip(state, len) in gz_skip() argument
264 gz_statep state; in gz_skip()
272 if (state.state->x.have) {
273 n = GT_OFF(state.state->x.have) || (z_off64_t)state.state->x.have > len ?
274 (unsigned)len : state.state->x.have;
275 state.state->x.have -= n;
276 state.state->x.next += n;
277 state.state->x.pos += n;
282 else if (state.state->eof && state.state->strm.avail_in == 0)
288 if (gz_fetch(state) == -1)
298 local z_size_t gz_read(state, buf, len) in gz_read() argument
299 gz_statep state; in gz_read()
311 if (state.state->seek) {
312 state.state->seek = 0;
313 if (gz_skip(state, state.state->skip) == -1)
326 if (state.state->x.have) {
327 if (state.state->x.have < n)
328 n = state.state->x.have;
329 memcpy(buf, state.state->x.next, n);
330 state.state->x.next += n;
331 state.state->x.have -= n;
335 else if (state.state->eof && state.state->strm.avail_in == 0) {
336 state.state->past = 1; /* tried to read past end */
342 else if (state.state->how == LOOK || n < (state.state->size << 1)) {
344 if (gz_fetch(state) == -1)
352 else if (state.state->how == COPY) { /* read directly */
353 if (gz_load(state, (unsigned char *)buf, n, &n) == -1)
359 state.state->strm.avail_out = n;
360 state.state->strm.next_out = (unsigned char *)buf;
361 if (gz_decomp(state) == -1)
363 n = state.state->x.have;
364 state.state->x.have = 0;
371 state.state->x.pos += n;
384 gz_statep state; local
389 state = (gz_statep)file;
392 if (state.state->mode != GZ_READ ||
393 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR))
399 gz_error(state, Z_STREAM_ERROR, "request does not fit in an int");
404 len = (unsigned)gz_read(state, buf, len);
407 if (len == 0 && state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)
422 gz_statep state; local
427 state = (gz_statep)file;
430 if (state.state->mode != GZ_READ ||
431 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR))
437 gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t");
442 return len ? gz_read(state, buf, len) / size : 0;
468 gz_statep state; local
473 state = (gz_statep)file;
476 if (state.state->mode != GZ_READ ||
477 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR))
481 if (state.state->x.have) {
482 state.state->x.have--;
483 state.state->x.pos++;
484 return *(state.state->x.next)++;
488 ret = (unsigned)gz_read(state, buf, 1);
503 gz_statep state; local
508 state = (gz_statep)file;
511 if (state.state->mode != GZ_READ ||
512 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR))
516 if (state.state->seek) {
517 state.state->seek = 0;
518 if (gz_skip(state, state.state->skip) == -1)
527 if (state.state->x.have == 0) {
528 state.state->x.have = 1;
529 state.state->x.next = state.state->out + (state.state->size << 1) - 1;
530 state.state->x.next[0] = (unsigned char)c;
531 state.state->x.pos--;
532 state.state->past = 0;
537 if (state.state->x.have == (state.state->size << 1)) {
538 gz_error(state, Z_DATA_ERROR, "out of room to push characters");
543 if (state.state->x.next == state.state->out) {
544 unsigned char *src = state.state->out + state.state->x.have;
545 unsigned char *dest = state.state->out + (state.state->size << 1);
546 while (src > state.state->out)
548 state.state->x.next = dest;
550 state.state->x.have++;
551 state.state->x.next--;
552 state.state->x.next[0] = (unsigned char)c;
553 state.state->x.pos--;
554 state.state->past = 0;
567 gz_statep state; local
572 state = (gz_statep)file;
575 if (state.state->mode != GZ_READ ||
576 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR))
580 if (state.state->seek) {
581 state.state->seek = 0;
582 if (gz_skip(state, state.state->skip) == -1)
593 if (state.state->x.have == 0 && gz_fetch(state) == -1)
595 if (state.state->x.have == 0) { /* end of file */
596 state.state->past = 1; /* read past end */
601 n = state.state->x.have > left ? left : state.state->x.have;
602 eol = (unsigned char *)memchr(state.state->x.next, '\n', n);
604 n = (unsigned)(eol - state.state->x.next) + 1;
607 memcpy(buf, state.state->x.next, n);
608 state.state->x.have -= n;
609 state.state->x.next += n;
610 state.state->x.pos += n;
626 gz_statep state; local
631 state = (gz_statep)file;
635 if (state.state->mode == GZ_READ && state.state->how == LOOK && state.state->x.have == 0)
636 (void)gz_look(state);
639 return state.state->direct;
647 gz_statep state; local
652 state = (gz_statep)file;
655 if (state.state->mode != GZ_READ)
659 if (state.state->size) {
660 inflateEnd(&(state.state->strm));
661 free(state.state->out);
662 free(state.state->in);
664 err = state.state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK;
665 gz_error(state, Z_OK, NULL);
666 free(state.state->path);
667 ret = close(state.state->fd);
668 free(state.state);