Lines Matching refs:state
70 /* Reset gzip file state */
71 local void gz_reset(gz_statep state)
73 state->x.have = 0; /* no output data available */
74 if (state->mode == GZ_READ) { /* for reading ... */
75 state->eof = 0; /* not at end of file */
76 state->past = 0; /* have not read past end yet */
77 state->how = LOOK; /* look for gzip header */
80 state->reset = 0; /* no deflateReset pending */
81 state->seek = 0; /* no seek request pending */
82 gz_error(state, Z_OK, NULL); /* clear error */
83 state->x.pos = 0; /* no uncompressed data yet */
84 state->strm.avail_in = 0; /* no input data yet */
90 gz_statep state;
105 state = (gz_statep)malloc(sizeof(gz_state));
106 if (state == NULL)
108 state->size = 0; /* no buffers allocated yet */
109 state->want = GZBUFSIZE; /* requested buffer size */
110 state->msg = NULL; /* no error message yet */
113 state->mode = GZ_NONE;
114 state->level = Z_DEFAULT_COMPRESSION;
115 state->strategy = Z_DEFAULT_STRATEGY;
116 state->direct = 0;
119 state->level = *mode - '0';
123 state->mode = GZ_READ;
127 state->mode = GZ_WRITE;
130 state->mode = GZ_APPEND;
134 free(state);
149 state->strategy = Z_FILTERED;
152 state->strategy = Z_HUFFMAN_ONLY;
155 state->strategy = Z_RLE;
158 state->strategy = Z_FIXED;
161 state->direct = 1;
170 if (state->mode == GZ_NONE) {
171 free(state);
176 if (state->mode == GZ_READ) {
177 if (state->direct) {
178 free(state);
181 state->direct = 1; /* for empty file */
194 state->path = (char *)malloc(len + 1);
195 if (state->path == NULL) {
196 free(state);
202 wcstombs(state->path, path, len + 1);
204 *(state->path) = 0;
208 (void)snprintf(state->path, len + 1, "%s", (const char *)path);
210 strcpy(state->path, path);
224 (state->mode == GZ_READ ?
230 (state->mode == GZ_WRITE ?
235 state->fd = fd > -1 ? fd : (
240 if (state->fd == -1) {
241 free(state->path);
242 free(state);
245 if (state->mode == GZ_APPEND) {
246 LSEEK(state->fd, 0, SEEK_END); /* so gzoffset() is correct */
247 state->mode = GZ_WRITE; /* simplify later checks */
251 if (state->mode == GZ_READ) {
252 state->start = LSEEK(state->fd, 0, SEEK_CUR);
253 if (state->start == -1) state->start = 0;
257 gz_reset(state);
260 return (gzFile)state;
303 gz_statep state;
308 state = (gz_statep)file;
309 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
313 if (state->size != 0)
321 state->want = size;
327 gz_statep state;
332 state = (gz_statep)file;
335 if (state->mode != GZ_READ ||
336 (state->err != Z_OK && state->err != Z_BUF_ERROR))
340 if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
342 gz_reset(state);
351 gz_statep state;
356 state = (gz_statep)file;
357 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
361 if (state->err != Z_OK && state->err != Z_BUF_ERROR)
370 offset -= state->x.pos;
371 else if (state->seek)
372 offset += state->skip;
373 state->seek = 0;
376 if (state->mode == GZ_READ && state->how == COPY &&
377 state->x.pos + offset >= 0) {
378 ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
381 state->x.have = 0;
382 state->eof = 0;
383 state->past = 0;
384 state->seek = 0;
385 gz_error(state, Z_OK, NULL);
386 state->strm.avail_in = 0;
387 state->x.pos += offset;
388 return state->x.pos;
393 if (state->mode != GZ_READ) /* writing -- can't go backwards */
395 offset += state->x.pos;
403 if (state->mode == GZ_READ) {
404 n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
405 (unsigned)offset : state->x.have;
406 state->x.have -= n;
407 state->x.next += n;
408 state->x.pos += n;
414 state->seek = 1;
415 state->skip = offset;
417 return state->x.pos + offset;
432 gz_statep state;
437 state = (gz_statep)file;
438 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
442 return state->x.pos + (state->seek ? state->skip : 0);
458 gz_statep state;
463 state = (gz_statep)file;
464 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
468 offset = LSEEK(state->fd, 0, SEEK_CUR);
471 if (state->mode == GZ_READ) /* reading */
472 offset -= state->strm.avail_in; /* don't count buffered input */
487 gz_statep state;
492 state = (gz_statep)file;
493 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
496 /* return end-of-file state */
497 return state->mode == GZ_READ ? state->past : 0;
502 gz_statep state;
507 state = (gz_statep)file;
508 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
513 *errnum = state->err;
514 return state->err == Z_MEM_ERROR ? "out of memory" :
515 (state->msg == NULL ? "" : state->msg);
520 gz_statep state;
525 state = (gz_statep)file;
526 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
530 if (state->mode == GZ_READ) {
531 state->eof = 0;
532 state->past = 0;
534 gz_error(state, Z_OK, NULL);
537 /* Create an error message in allocated memory and set state->err and
538 state->msg accordingly. Free any previous error message already there. Do
543 void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) {
545 if (state->msg != NULL) {
546 if (state->err != Z_MEM_ERROR)
547 free(state->msg);
548 state->msg = NULL;
551 /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
553 state->x.have = 0;
556 state->err = err;
565 if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
567 state->err = Z_MEM_ERROR;
571 (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
572 "%s%s%s", state->path, ": ", msg);
574 strcpy(state->msg, state->path);
575 strcat(state->msg, ": ");
576 strcat(state->msg, msg);