Lines Matching refs:state
32 local int gz_load(gz_statep state, unsigned char *buf, unsigned len, in gz_load() argument
42 ret = read(state.state->fd, buf + *have, get); in gz_load()
48 gz_error(state, Z_ERRNO, zstrerror()); in gz_load()
52 state.state->eof = 1; in gz_load()
63 local int gz_avail(gz_statep state) in gz_avail() argument
66 z_streamp strm = &(state.state->strm); in gz_avail()
68 if (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR) in gz_avail()
70 if (state.state->eof == 0) { in gz_avail()
72 unsigned char *p = state.state->in; in gz_avail()
79 if (gz_load(state, state.state->in + strm->avail_in, in gz_avail()
80 state.state->size - strm->avail_in, &got) == -1) in gz_avail()
83 strm->next_in = state.state->in; in gz_avail()
97 local int gz_look(gz_statep state) { in gz_look() argument
98 z_streamp strm = &(state.state->strm); in gz_look()
101 if (state.state->size == 0) { in gz_look()
103 state.state->in = (unsigned char *)malloc(state.state->want); in gz_look()
104 state.state->out = (unsigned char *)malloc(state.state->want << 1); in gz_look()
105 if (state.state->in == NULL || state.state->out == NULL) { in gz_look()
106 free(state.state->out); in gz_look()
107 free(state.state->in); in gz_look()
108 gz_error(state, Z_MEM_ERROR, "out of memory"); in gz_look()
111 state.state->size = state.state->want; in gz_look()
114 state.state->strm.zalloc = Z_NULL; in gz_look()
115 state.state->strm.zfree = Z_NULL; in gz_look()
116 state.state->strm.opaque = Z_NULL; in gz_look()
117 state.state->strm.avail_in = 0; in gz_look()
118 state.state->strm.next_in = Z_NULL; in gz_look()
119 if (inflateInit2(&(state.state->strm), 15 + 16) != Z_OK) { /* gunzip */ in gz_look()
120 free(state.state->out); in gz_look()
121 free(state.state->in); in gz_look()
122 state.state->size = 0; in gz_look()
123 gz_error(state, Z_MEM_ERROR, "out of memory"); in gz_look()
130 if (gz_avail(state) == -1) in gz_look()
147 state.state->how = GZIP; in gz_look()
148 state.state->direct = 0; in gz_look()
154 if (state.state->direct == 0) { in gz_look()
156 state.state->eof = 1; in gz_look()
157 state.state->x.have = 0; in gz_look()
164 state.state->x.next = state.state->out; in gz_look()
166 memcpy(state.state->x.next, strm->next_in, strm->avail_in); in gz_look()
167 state.state->x.have = strm->avail_in; in gz_look()
170 state.state->how = COPY; in gz_look()
171 state.state->direct = 1; in gz_look()
180 local int gz_decomp(gz_statep state) { in gz_decomp() argument
183 z_streamp strm = &(state.state->strm); in gz_decomp()
189 if (strm->avail_in == 0 && gz_avail(state) == -1) in gz_decomp()
192 gz_error(state, Z_BUF_ERROR, "unexpected end of file"); in gz_decomp()
199 gz_error(state, Z_STREAM_ERROR, in gz_decomp()
204 gz_error(state, Z_MEM_ERROR, "out of memory"); in gz_decomp()
208 gz_error(state, Z_DATA_ERROR, in gz_decomp()
215 state.state->x.have = had - strm->avail_out; in gz_decomp()
216 state.state->x.next = strm->next_out - state.state->x.have; in gz_decomp()
220 state.state->how = LOOK; in gz_decomp()
232 local int gz_fetch(gz_statep state) { in gz_fetch() argument
233 z_streamp strm = &(state.state->strm); in gz_fetch()
236 switch(state.state->how) { in gz_fetch()
238 if (gz_look(state) == -1) in gz_fetch()
240 if (state.state->how == LOOK) in gz_fetch()
244 if (gz_load(state, state.state->out, state.state->size << 1, &(state.state->x.have)) in gz_fetch()
247 state.state->x.next = state.state->out; in gz_fetch()
250 strm->avail_out = state.state->size << 1; in gz_fetch()
251 strm->next_out = state.state->out; in gz_fetch()
252 if (gz_decomp(state) == -1) in gz_fetch()
255 } while (state.state->x.have == 0 && (!state.state->eof || strm->avail_in)); in gz_fetch()
260 local int gz_skip(gz_statep state, z_off64_t len) { in gz_skip() argument
266 if (state.state->x.have) { in gz_skip()
267 n = GT_OFF(state.state->x.have) || (z_off64_t)state.state->x.have > len ? in gz_skip()
268 (unsigned)len : state.state->x.have; in gz_skip()
269 state.state->x.have -= n; in gz_skip()
270 state.state->x.next += n; in gz_skip()
271 state.state->x.pos += n; in gz_skip()
276 else if (state.state->eof && state.state->strm.avail_in == 0) in gz_skip()
282 if (gz_fetch(state) == -1) in gz_skip()
292 local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { in gz_read() argument
301 if (state.state->seek) { in gz_read()
302 state.state->seek = 0; in gz_read()
303 if (gz_skip(state, state.state->skip) == -1) in gz_read()
316 if (state.state->x.have) { in gz_read()
317 if (state.state->x.have < n) in gz_read()
318 n = state.state->x.have; in gz_read()
319 memcpy(buf, state.state->x.next, n); in gz_read()
320 state.state->x.next += n; in gz_read()
321 state.state->x.have -= n; in gz_read()
325 else if (state.state->eof && state.state->strm.avail_in == 0) { in gz_read()
326 state.state->past = 1; /* tried to read past end */ in gz_read()
332 else if (state.state->how == LOOK || n < (state.state->size << 1)) { in gz_read()
334 if (gz_fetch(state) == -1) in gz_read()
342 else if (state.state->how == COPY) { /* read directly */ in gz_read()
343 if (gz_load(state, (unsigned char *)buf, n, &n) == -1) in gz_read()
349 state.state->strm.avail_out = n; in gz_read()
350 state.state->strm.next_out = (unsigned char *)buf; in gz_read()
351 if (gz_decomp(state) == -1) in gz_read()
353 n = state.state->x.have; in gz_read()
354 state.state->x.have = 0; in gz_read()
361 state.state->x.pos += n; in gz_read()
370 gz_statep state; in gzread() local
375 state.file = file; in gzread()
378 if (state.state->mode != GZ_READ || in gzread()
379 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)) in gzread()
385 gz_error(state, Z_STREAM_ERROR, "request does not fit in an int"); in gzread()
390 len = (unsigned)gz_read(state, buf, len); in gzread()
393 if (len == 0 && state.state->err != Z_OK && state.state->err != Z_BUF_ERROR) in gzread()
404 gz_statep state; in gzfread() local
409 state.file = file; in gzfread()
412 if (state.state->mode != GZ_READ || in gzfread()
413 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)) in gzfread()
419 gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t"); in gzfread()
424 return len ? gz_read(state, buf, len) / size : 0; in gzfread()
448 gz_statep state; in gzgetc() local
453 state.file = file; in gzgetc()
456 if (state.state->mode != GZ_READ || in gzgetc()
457 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)) in gzgetc()
461 if (state.state->x.have) { in gzgetc()
462 state.state->x.have--; in gzgetc()
463 state.state->x.pos++; in gzgetc()
464 return *(state.state->x.next)++; in gzgetc()
468 ret = (int)gz_read(state, buf, 1); in gzgetc()
478 gz_statep state; in gzungetc() local
483 state.file = file; in gzungetc()
486 if (state.state->mode != GZ_READ || in gzungetc()
487 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)) in gzungetc()
491 if (state.state->seek) { in gzungetc()
492 state.state->seek = 0; in gzungetc()
493 if (gz_skip(state, state.state->skip) == -1) in gzungetc()
502 if (state.state->x.have == 0) { in gzungetc()
503 state.state->x.have = 1; in gzungetc()
504 state.state->x.next = state.state->out + (state.state->size << 1) - 1; in gzungetc()
505 state.state->x.next[0] = (unsigned char)c; in gzungetc()
506 state.state->x.pos--; in gzungetc()
507 state.state->past = 0; in gzungetc()
512 if (state.state->x.have == (state.state->size << 1)) { in gzungetc()
513 gz_error(state, Z_DATA_ERROR, "out of room to push characters"); in gzungetc()
518 if (state.state->x.next == state.state->out) { in gzungetc()
519 unsigned char *src = state.state->out + state.state->x.have; in gzungetc()
520 unsigned char *dest = state.state->out + (state.state->size << 1); in gzungetc()
521 while (src > state.state->out) in gzungetc()
523 state.state->x.next = dest; in gzungetc()
525 state.state->x.have++; in gzungetc()
526 state.state->x.next--; in gzungetc()
527 state.state->x.next[0] = (unsigned char)c; in gzungetc()
528 state.state->x.pos--; in gzungetc()
529 state.state->past = 0; in gzungetc()
538 gz_statep state; in gzgets() local
543 state.file = file; in gzgets()
546 if (state.state->mode != GZ_READ || in gzgets()
547 (state.state->err != Z_OK && state.state->err != Z_BUF_ERROR)) in gzgets()
551 if (state.state->seek) { in gzgets()
552 state.state->seek = 0; in gzgets()
553 if (gz_skip(state, state.state->skip) == -1) in gzgets()
564 if (state.state->x.have == 0 && gz_fetch(state) == -1) in gzgets()
566 if (state.state->x.have == 0) { /* end of file */ in gzgets()
567 state.state->past = 1; /* read past end */ in gzgets()
572 n = state.state->x.have > left ? left : state.state->x.have; in gzgets()
573 eol = (unsigned char *)memchr(state.state->x.next, '\n', n); in gzgets()
575 n = (unsigned)(eol - state.state->x.next) + 1; in gzgets()
578 memcpy(buf, state.state->x.next, n); in gzgets()
579 state.state->x.have -= n; in gzgets()
580 state.state->x.next += n; in gzgets()
581 state.state->x.pos += n; in gzgets()
595 gz_statep state; in gzdirect() local
600 state.file = file; in gzdirect()
604 if (state.state->mode == GZ_READ && state.state->how == LOOK && state.state->x.have == 0) in gzdirect()
605 (void)gz_look(state); in gzdirect()
608 return state.state->direct; in gzdirect()
614 gz_statep state; in gzclose_r() local
619 state.file = file; in gzclose_r()
622 if (state.state->mode != GZ_READ) in gzclose_r()
626 if (state.state->size) { in gzclose_r()
627 inflateEnd(&(state.state->strm)); in gzclose_r()
628 free(state.state->out); in gzclose_r()
629 free(state.state->in); in gzclose_r()
631 err = state.state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK; in gzclose_r()
632 gz_error(state, Z_OK, NULL); in gzclose_r()
633 free(state.state->path); in gzclose_r()
634 ret = close(state.state->fd); in gzclose_r()
635 free(state.state); in gzclose_r()