Home | History | Annotate | Download | only in zlib

Lines Matching refs:state

68 /* Reset gzip file state */
69 local void gz_reset(gz_statep state) {
70 state->x.have = 0; /* no output data available */
71 if (state->mode == GZ_READ) { /* for reading ... */
72 state->eof = 0; /* not at end of file */
73 state->past = 0; /* have not read past end yet */
74 state->how = LOOK; /* look for gzip header */
77 state->reset = 0; /* no deflateReset pending */
78 state->seek = 0; /* no seek request pending */
79 gz_error(state, Z_OK, NULL); /* clear error */
80 state->x.pos = 0; /* no uncompressed data yet */
81 state->strm.avail_in = 0; /* no input data yet */
86 gz_statep state;
101 state = (gz_statep)malloc(sizeof(gz_state));
102 if (state == NULL)
104 state->size = 0; /* no buffers allocated yet */
105 state->want = GZBUFSIZE; /* requested buffer size */
106 state->msg = NULL; /* no error message yet */
109 state->mode = GZ_NONE;
110 state->level = Z_DEFAULT_COMPRESSION;
111 state->strategy = Z_DEFAULT_STRATEGY;
112 state->direct = 0;
115 state->level = *mode - '0';
119 state->mode = GZ_READ;
123 state->mode = GZ_WRITE;
126 state->mode = GZ_APPEND;
130 free(state);
145 state->strategy = Z_FILTERED;
148 state->strategy = Z_HUFFMAN_ONLY;
151 state->strategy = Z_RLE;
154 state->strategy = Z_FIXED;
157 state->direct = 1;
166 if (state->mode == GZ_NONE) {
167 free(state);
172 if (state->mode == GZ_READ) {
173 if (state->direct) {
174 free(state);
177 state->direct = 1; /* for empty file */
190 state->path = (char *)malloc(len + 1);
191 if (state->path == NULL) {
192 free(state);
198 wcstombs(state->path, path, len + 1);
200 *(state->path) = 0;
204 (void)snprintf(state->path, len + 1, "%s", (const char *)path);
206 strcpy(state->path, path);
220 (state->mode == GZ_READ ?
226 (state->mode == GZ_WRITE ?
231 state->fd = fd > -1 ? fd : (
236 if (state->fd == -1) {
237 free(state->path);
238 free(state);
241 if (state->mode == GZ_APPEND) {
242 LSEEK(state->fd, 0, SEEK_END); /* so gzoffset() is correct */
243 state->mode = GZ_WRITE; /* simplify later checks */
247 if (state->mode == GZ_READ) {
248 state->start = LSEEK(state->fd, 0, SEEK_CUR);
249 if (state->start == -1) state->start = 0;
253 gz_reset(state);
256 return (gzFile)state;
295 gz_statep state;
300 state = (gz_statep)file;
301 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
305 if (state->size != 0)
313 state->want = size;
319 gz_statep state;
324 state = (gz_statep)file;
327 if (state->mode != GZ_READ ||
328 (state->err != Z_OK && state->err != Z_BUF_ERROR))
332 if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
334 gz_reset(state);
342 gz_statep state;
347 state = (gz_statep)file;
348 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
352 if (state->err != Z_OK && state->err != Z_BUF_ERROR)
361 offset -= state->x.pos;
362 else if (state->seek)
363 offset += state->skip;
364 state->seek = 0;
367 if (state->mode == GZ_READ && state->how == COPY &&
368 state->x.pos + offset >= 0) {
369 ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
372 state->x.have = 0;
373 state->eof = 0;
374 state->past = 0;
375 state->seek = 0;
376 gz_error(state, Z_OK, NULL);
377 state->strm.avail_in = 0;
378 state->x.pos += offset;
379 return state->x.pos;
384 if (state->mode != GZ_READ) /* writing -- can't go backwards */
386 offset += state->x.pos;
394 if (state->mode == GZ_READ) {
395 n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
396 (unsigned)offset : state->x.have;
397 state->x.have -= n;
398 state->x.next += n;
399 state->x.pos += n;
405 state->seek = 1;
406 state->skip = offset;
408 return state->x.pos + offset;
421 gz_statep state;
426 state = (gz_statep)file;
427 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
431 return state->x.pos + (state->seek ? state->skip : 0);
445 gz_statep state;
450 state = (gz_statep)file;
451 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
455 offset = LSEEK(state->fd, 0, SEEK_CUR);
458 if (state->mode == GZ_READ) /* reading */
459 offset -= state->strm.avail_in; /* don't count buffered input */
473 gz_statep state;
478 state = (gz_statep)file;
479 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
482 /* return end-of-file state */
483 return state->mode == GZ_READ ? state->past : 0;
488 gz_statep state;
493 state = (gz_statep)file;
494 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
499 *errnum = state->err;
500 return state->err == Z_MEM_ERROR ? "out of memory" :
501 (state->msg == NULL ? "" : state->msg);
506 gz_statep state;
511 state = (gz_statep)file;
512 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
516 if (state->mode == GZ_READ) {
517 state->eof = 0;
518 state->past = 0;
520 gz_error(state, Z_OK, NULL);
523 /* Create an error message in allocated memory and set state->err and
524 state->msg accordingly. Free any previous error message already there. Do
529 void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) {
531 if (state->msg != NULL) {
532 if (state->err != Z_MEM_ERROR)
533 free(state->msg);
534 state->msg = NULL;
537 /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
539 state->x.have = 0;
542 state->err = err;
551 if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
553 state->err = Z_MEM_ERROR;
557 (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
558 "%s%s%s", state->path, ": ", msg);
560 strcpy(state->msg, state->path);
561 strcat(state->msg, ": ");
562 strcat(state->msg, msg);