Lines Matching defs: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 (void)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 LSEEK(state->fd, 0, SEEK_END); /* so gzoffset() is correct */
256 state->mode = GZ_WRITE; /* simplify later checks */
260 if (state->mode == GZ_READ) {
261 state->start = LSEEK(state->fd, 0, SEEK_CUR);
262 if (state->start == -1) state->start = 0;
266 gz_reset(state);
269 return (gzFile)state;
323 gz_statep state;
328 state = (gz_statep)file;
329 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
333 if (state->size != 0)
341 state->want = size;
349 gz_statep state;
354 state = (gz_statep)file;
357 if (state->mode != GZ_READ ||
358 (state->err != Z_OK && state->err != Z_BUF_ERROR))
362 if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
364 gz_reset(state);
376 gz_statep state;
381 state = (gz_statep)file;
382 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
386 if (state->err != Z_OK && state->err != Z_BUF_ERROR)
395 offset -= state->x.pos;
396 else if (state->seek)
397 offset += state->skip;
398 state->seek = 0;
401 if (state->mode == GZ_READ && state->how == COPY &&
402 state->x.pos + offset >= 0) {
403 ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
406 state->x.have = 0;
407 state->eof = 0;
408 state->past = 0;
409 state->seek = 0;
410 gz_error(state, Z_OK, NULL);
411 state->strm.avail_in = 0;
412 state->x.pos += offset;
413 return state->x.pos;
418 if (state->mode != GZ_READ) /* writing -- can't go backwards */
420 offset += state->x.pos;
428 if (state->mode == GZ_READ) {
429 n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
430 (unsigned)offset : state->x.have;
431 state->x.have -= n;
432 state->x.next += n;
433 state->x.pos += n;
439 state->seek = 1;
440 state->skip = offset;
442 return state->x.pos + offset;
461 gz_statep state;
466 state = (gz_statep)file;
467 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
471 return state->x.pos + (state->seek ? state->skip : 0);
489 gz_statep state;
494 state = (gz_statep)file;
495 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
499 offset = LSEEK(state->fd, 0, SEEK_CUR);
502 if (state->mode == GZ_READ) /* reading */
503 offset -= state->strm.avail_in; /* don't count buffered input */
521 gz_statep state;
526 state = (gz_statep)file;
527 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
530 /* return end-of-file state */
531 return state->mode == GZ_READ ? state->past : 0;
539 gz_statep state;
544 state = (gz_statep)file;
545 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
550 *errnum = state->err;
551 return state->err == Z_MEM_ERROR ? "out of memory" :
552 (state->msg == NULL ? "" : state->msg);
559 gz_statep state;
564 state = (gz_statep)file;
565 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
569 if (state->mode == GZ_READ) {
570 state->eof = 0;
571 state->past = 0;
573 gz_error(state, Z_OK, NULL);
576 /* Create an error message in allocated memory and set state->err and
577 state->msg accordingly. Free any previous error message already there. Do
582 void ZLIB_INTERNAL gz_error(state, err, msg)
583 gz_statep state;
588 if (state->msg != NULL) {
589 if (state->err != Z_MEM_ERROR)
590 free(state->msg);
591 state->msg = NULL;
594 /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
596 state->x.have = 0;
599 state->err = err;
608 if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
610 state->err = Z_MEM_ERROR;
614 (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
615 "%s%s%s", state->path, ": ", msg);
617 strcpy(state->msg, state->path);
618 strcat(state->msg, ": ");
619 strcat(state->msg, msg);