Lines Matching refs:state

77 /* Reset gzip file state */
78 local void gz_reset(state)
79 gz_statep state;
81 state->x.have = 0; /* no output data available */
82 if (state->mode == GZ_READ) { /* for reading ... */
83 state->eof = 0; /* not at end of file */
84 state->past = 0; /* have not read past end yet */
85 state->how = LOOK; /* look for gzip header */
87 state->seek = 0; /* no seek request pending */
88 gz_error(state, Z_OK, NULL); /* clear error */
89 state->x.pos = 0; /* no uncompressed data yet */
90 state->strm.avail_in = 0; /* no input data yet */
99 gz_statep state;
114 state = (gz_statep)malloc(sizeof(gz_state));
115 if (state == NULL)
117 state->size = 0; /* no buffers allocated yet */
118 state->want = GZBUFSIZE; /* requested buffer size */
119 state->msg = NULL; /* no error message yet */
122 state->mode = GZ_NONE;
123 state->level = Z_DEFAULT_COMPRESSION;
124 state->strategy = Z_DEFAULT_STRATEGY;
125 state->direct = 0;
128 state->level = *mode - '0';
132 state->mode = GZ_READ;
136 state->mode = GZ_WRITE;
139 state->mode = GZ_APPEND;
143 free(state);
158 state->strategy = Z_FILTERED;
161 state->strategy = Z_HUFFMAN_ONLY;
164 state->strategy = Z_RLE;
167 state->strategy = Z_FIXED;
170 state->direct = 1;
179 if (state->mode == GZ_NONE) {
180 free(state);
185 if (state->mode == GZ_READ) {
186 if (state->direct) {
187 free(state);
190 state->direct = 1; /* for empty file */
203 state->path = (char *)malloc(len + 1);
204 if (state->path == NULL) {
205 free(state);
211 wcstombs(state->path, path, len + 1);
213 *(state->path) = 0;
217 snprintf(state->path, len + 1, "%s", (const char *)path);
219 strcpy(state->path, path);
233 (state->mode == GZ_READ ?
239 (state->mode == GZ_WRITE ?
244 state->fd = fd > -1 ? fd : (
249 if (state->fd == -1) {
250 free(state->path);
251 free(state);
254 if (state->mode == GZ_APPEND)
255 state->mode = GZ_WRITE; /* simplify later checks */
258 if (state->mode == GZ_READ) {
259 state->start = LSEEK(state->fd, 0, SEEK_CUR);
260 if (state->start == -1) state->start = 0;
264 gz_reset(state);
267 return (gzFile)state;
321 gz_statep state;
326 state = (gz_statep)file;
327 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
331 if (state->size != 0)
337 state->want = size;
345 gz_statep state;
350 state = (gz_statep)file;
353 if (state->mode != GZ_READ ||
354 (state->err != Z_OK && state->err != Z_BUF_ERROR))
358 if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
360 gz_reset(state);
372 gz_statep state;
377 state = (gz_statep)file;
378 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
382 if (state->err != Z_OK && state->err != Z_BUF_ERROR)
391 offset -= state->x.pos;
392 else if (state->seek)
393 offset += state->skip;
394 state->seek = 0;
397 if (state->mode == GZ_READ && state->how == COPY &&
398 state->x.pos + offset >= 0) {
399 ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
402 state->x.have = 0;
403 state->eof = 0;
404 state->past = 0;
405 state->seek = 0;
406 gz_error(state, Z_OK, NULL);
407 state->strm.avail_in = 0;
408 state->x.pos += offset;
409 return state->x.pos;
414 if (state->mode != GZ_READ) /* writing -- can't go backwards */
416 offset += state->x.pos;
424 if (state->mode == GZ_READ) {
425 n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
426 (unsigned)offset : state->x.have;
427 state->x.have -= n;
428 state->x.next += n;
429 state->x.pos += n;
435 state->seek = 1;
436 state->skip = offset;
438 return state->x.pos + offset;
457 gz_statep state;
462 state = (gz_statep)file;
463 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
467 return state->x.pos + (state->seek ? state->skip : 0);
485 gz_statep state;
490 state = (gz_statep)file;
491 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
495 offset = LSEEK(state->fd, 0, SEEK_CUR);
498 if (state->mode == GZ_READ) /* reading */
499 offset -= state->strm.avail_in; /* don't count buffered input */
517 gz_statep state;
522 state = (gz_statep)file;
523 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
526 /* return end-of-file state */
527 return state->mode == GZ_READ ? state->past : 0;
535 gz_statep state;
540 state = (gz_statep)file;
541 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
546 *errnum = state->err;
547 return state->err == Z_MEM_ERROR ? "out of memory" :
548 (state->msg == NULL ? "" : state->msg);
555 gz_statep state;
560 state = (gz_statep)file;
561 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
565 if (state->mode == GZ_READ) {
566 state->eof = 0;
567 state->past = 0;
569 gz_error(state, Z_OK, NULL);
572 /* Create an error message in allocated memory and set state->err and
573 state->msg accordingly. Free any previous error message already there. Do
578 void ZLIB_INTERNAL gz_error(state, err, msg)
579 gz_statep state;
584 if (state->msg != NULL) {
585 if (state->err != Z_MEM_ERROR)
586 free(state->msg);
587 state->msg = NULL;
590 /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
592 state->x.have = 0;
595 state->err = err;
604 if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
606 state->err = Z_MEM_ERROR;
610 snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
611 "%s%s%s", state->path, ": ", msg);
613 strcpy(state->msg, state->path);
614 strcat(state->msg, ": ");
615 strcat(state->msg, msg);