Lines Matching refs:state

71 /* Reset gzip file state */
72 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 */
89 gz_statep state;
104 state = (gz_statep)malloc(sizeof(gz_state));
105 if (state == NULL)
107 state->size = 0; /* no buffers allocated yet */
108 state->want = GZBUFSIZE; /* requested buffer size */
109 state->msg = NULL; /* no error message yet */
112 state->mode = GZ_NONE;
113 state->level = Z_DEFAULT_COMPRESSION;
114 state->strategy = Z_DEFAULT_STRATEGY;
115 state->direct = 0;
118 state->level = *mode - '0';
122 state->mode = GZ_READ;
126 state->mode = GZ_WRITE;
129 state->mode = GZ_APPEND;
133 free(state);
148 state->strategy = Z_FILTERED;
151 state->strategy = Z_HUFFMAN_ONLY;
154 state->strategy = Z_RLE;
157 state->strategy = Z_FIXED;
160 state->direct = 1;
169 if (state->mode == GZ_NONE) {
170 free(state);
175 if (state->mode == GZ_READ) {
176 if (state->direct) {
177 free(state);
180 state->direct = 1; /* for empty file */
193 state->path = (char *)malloc(len + 1);
194 if (state->path == NULL) {
195 free(state);
201 wcstombs(state->path, path, len + 1);
203 *(state->path) = 0;
207 (void)snprintf(state->path, len + 1, "%s", (const char *)path);
209 strcpy(state->path, path);
223 (state->mode == GZ_READ ?
229 (state->mode == GZ_WRITE ?
234 state->fd = fd > -1 ? fd : (
239 if (state->fd == -1) {
240 free(state->path);
241 free(state);
244 if (state->mode == GZ_APPEND) {
245 LSEEK(state->fd, 0, SEEK_END); /* so gzoffset() is correct */
246 state->mode = GZ_WRITE; /* simplify later checks */
250 if (state->mode == GZ_READ) {
251 state->start = LSEEK(state->fd, 0, SEEK_CUR);
252 if (state->start == -1) state->start = 0;
256 gz_reset(state);
259 return (gzFile)state;
298 gz_statep state;
303 state = (gz_statep)file;
304 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
308 if (state->size != 0)
316 state->want = size;
322 gz_statep state;
327 state = (gz_statep)file;
330 if (state->mode != GZ_READ ||
331 (state->err != Z_OK && state->err != Z_BUF_ERROR))
335 if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
337 gz_reset(state);
345 gz_statep state;
350 state = (gz_statep)file;
351 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
355 if (state->err != Z_OK && state->err != Z_BUF_ERROR)
364 offset -= state->x.pos;
365 else if (state->seek)
366 offset += state->skip;
367 state->seek = 0;
370 if (state->mode == GZ_READ && state->how == COPY &&
371 state->x.pos + offset >= 0) {
372 ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
375 state->x.have = 0;
376 state->eof = 0;
377 state->past = 0;
378 state->seek = 0;
379 gz_error(state, Z_OK, NULL);
380 state->strm.avail_in = 0;
381 state->x.pos += offset;
382 return state->x.pos;
387 if (state->mode != GZ_READ) /* writing -- can't go backwards */
389 offset += state->x.pos;
397 if (state->mode == GZ_READ) {
398 n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
399 (unsigned)offset : state->x.have;
400 state->x.have -= n;
401 state->x.next += n;
402 state->x.pos += n;
408 state->seek = 1;
409 state->skip = offset;
411 return state->x.pos + offset;
424 gz_statep state;
429 state = (gz_statep)file;
430 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
434 return state->x.pos + (state->seek ? state->skip : 0);
448 gz_statep state;
453 state = (gz_statep)file;
454 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
458 offset = LSEEK(state->fd, 0, SEEK_CUR);
461 if (state->mode == GZ_READ) /* reading */
462 offset -= state->strm.avail_in; /* don't count buffered input */
476 gz_statep state;
481 state = (gz_statep)file;
482 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
485 /* return end-of-file state */
486 return state->mode == GZ_READ ? state->past : 0;
491 gz_statep state;
496 state = (gz_statep)file;
497 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
502 *errnum = state->err;
503 return state->err == Z_MEM_ERROR ? "out of memory" :
504 (state->msg == NULL ? "" : state->msg);
509 gz_statep state;
514 state = (gz_statep)file;
515 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
519 if (state->mode == GZ_READ) {
520 state->eof = 0;
521 state->past = 0;
523 gz_error(state, Z_OK, NULL);
526 /* Create an error message in allocated memory and set state->err and
527 state->msg accordingly. Free any previous error message already there. Do
532 void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) {
534 if (state->msg != NULL) {
535 if (state->err != Z_MEM_ERROR)
536 free(state->msg);
537 state->msg = NULL;
540 /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
542 state->x.have = 0;
545 state->err = err;
554 if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
556 state->err = Z_MEM_ERROR;
560 (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
561 "%s%s%s", state->path, ": ", msg);
563 strcpy(state->msg, state->path);
564 strcat(state->msg, ": ");
565 strcat(state->msg, msg);