Lines Matching refs:state
19 /* Initialize state for writing a gzip file. Mark initialization by setting
20 state.state->size to non-zero. Return -1 on a memory allocation failure, or 0 on
22 local int gz_init(gz_statep state) {
24 z_streamp strm = &(state.state->strm);
27 state.state->in = (unsigned char*)malloc(state.state->want << 1);
28 if (state.state->in == NULL) {
29 gz_error(state, Z_MEM_ERROR, "out of memory");
33 /* only need output buffer and deflate state if compressing */
34 if (!state.state->direct) {
36 state.state->out = (unsigned char*)malloc(state.state->want);
37 if (state.state->out == NULL) {
38 free(state.state->in);
39 gz_error(state, Z_MEM_ERROR, "out of memory");
47 ret = deflateInit2(strm, state.state->level, Z_DEFLATED,
48 MAX_WBITS + 16, DEF_MEM_LEVEL, state.state->strategy);
50 free(state.state->out);
51 free(state.state->in);
52 gz_error(state, Z_MEM_ERROR, "out of memory");
58 /* mark state as initialized */
59 state.state->size = state.state->want;
62 if (!state.state->direct) {
63 strm->avail_out = state.state->size;
64 strm->next_out = state.state->out;
65 state.state->x.next = strm->next_out;
73 deflate() flush value. If flush is Z_FINISH, then the deflate() state is
76 local int gz_comp(gz_statep state, int flush) {
79 z_streamp strm = &(state.state->strm);
82 if (state.state->size == 0 && gz_init(state) == -1)
86 if (state.state->direct) {
89 writ = (int)write(state.state->fd, strm->next_in, put);
91 gz_error(state, Z_ERRNO, zstrerror());
107 while (strm->next_out > state.state->x.next) {
108 put = strm->next_out - state.state->x.next > (int)max ? max :
109 (unsigned)(strm->next_out - state.state->x.next);
110 writ = (int)write(state.state->fd, state.state->x.next, put);
112 gz_error(state, Z_ERRNO, zstrerror());
115 state.state->x.next += writ;
118 strm->avail_out = state.state->size;
119 strm->next_out = state.state->out;
120 state.state->x.next = state.state->out;
128 gz_error(state, Z_STREAM_ERROR,
145 local int gz_zero(gz_statep state, z_off64_t len) {
148 z_streamp strm = &(state.state->strm);
151 if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1)
157 n = GT_OFF(state.state->size) || (z_off64_t)state.state->size > len ?
158 (unsigned)len : state.state->size;
160 memset(state.state->in, 0, n);
164 strm->next_in = state.state->in;
165 state.state->x.pos += n;
166 if (gz_comp(state, Z_NO_FLUSH) == -1)
175 local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) {
183 if (state.state->size == 0 && gz_init(state) == -1)
187 if (state.state->seek) {
188 state.state->seek = 0;
189 if (gz_zero(state, state.state->skip) == -1)
194 if (len < state.state->size) {
199 if (state.state->strm.avail_in == 0)
200 state.state->strm.next_in = state.state->in;
201 have = (unsigned)((state.state->strm.next_in + state.state->strm.avail_in) -
202 state.state->in);
203 copy = state.state->size - have;
206 memcpy(state.state->in + have, buf, copy);
207 state.state->strm.avail_in += copy;
208 state.state->x.pos += copy;
211 if (len && gz_comp(state, Z_NO_FLUSH) == -1)
217 if (state.state->strm.avail_in && gz_comp(state, Z_NO_FLUSH) == -1)
221 state.state->strm.next_in = (z_const Bytef *)buf;
226 state.state->strm.avail_in = (z_uInt)n;
227 state.state->x.pos += n;
228 if (gz_comp(state, Z_NO_FLUSH) == -1)
240 gz_statep state;
245 state.file = file;
248 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
254 gz_error(state, Z_DATA_ERROR, "requested length does not fit in int");
259 return (int)gz_write(state, buf, len);
266 gz_statep state;
272 state.file = file;
275 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
281 gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t");
286 return len ? gz_write(state, buf, len) / size : 0;
293 gz_statep state;
299 state.file = file;
300 strm = &(state.state->strm);
303 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
307 if (state.state->seek) {
308 state.state->seek = 0;
309 if (gz_zero(state, state.state->skip) == -1)
313 /* try writing to input buffer for speed (state.state->size == 0 if buffer not
315 if (state.state->size) {
317 strm->next_in = state.state->in;
318 have = (unsigned)((strm->next_in + strm->avail_in) - state.state->in);
319 if (have < state.state->size) {
320 state.state->in[have] = (unsigned char)c;
322 state.state->x.pos++;
329 if (gz_write(state, buf, 1) != 1)
338 gz_statep state;
343 state.file = file;
346 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
351 ret = (int)gz_write(state, str, len);
363 gz_statep state;
369 state.file = file;
370 strm = &(state.state->strm);
373 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
377 if (state.state->size == 0 && gz_init(state) == -1)
378 return state.state->err;
381 if (state.state->seek) {
382 state.state->seek = 0;
383 if (gz_zero(state, state.state->skip) == -1)
384 return state.state->err;
389 be state.state->size bytes available after the current contents */
391 strm->next_in = state.state->in;
392 next = (char *)(state.state->in + (strm->next_in - state.state->in) + strm->avail_in);
393 next[state.state->size - 1] = 0;
397 for (len = 0; len < state.state->size; len++)
404 (void)vsnprintf(next, state.state->size, format, va);
407 len = vsnprintf(next, state.state->size, format, va);
412 if (len == 0 || (unsigned)len >= state.state->size || next[state.state->size - 1] != 0)
417 state.state->x.pos += len;
418 if (strm->avail_in >= state.state->size) {
419 left = strm->avail_in - state.state->size;
420 strm->avail_in = state.state->size;
421 if (gz_comp(state, Z_NO_FLUSH) == -1)
422 return state.state->err;
423 memcpy(state.state->in, state.state->in + state.state->size, left);
424 strm->next_in = state.state->in;
449 gz_statep state;
455 state = (gz_statep)file;
456 strm = &(state.state->strm);
463 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
467 if (state.state->size == 0 && gz_init(state) == -1)
468 return state.state->error;
471 if (state.state->seek) {
472 state.state->seek = 0;
473 if (gz_zero(state, state.state->skip) == -1)
474 return state.state->error;
479 be state.state->size bytes available after the current contents */
481 strm->next_in = state.state->in;
483 next[state.state->size - 1] = 0;
497 snprintf(next, state.state->size, format, a1, a2, a3, a4, a5, a6, a7, a8, a9,
501 len = snprintf(next, state.state->size, format, a1, a2, a3, a4, a5, a6, a7, a8,
507 if (len == 0 || len >= state.state->size || next[state.state->size - 1] != 0)
512 state.state->x.pos += len;
513 if (strm->avail_in >= state.state->size) {
514 left = strm->avail_in - state.state->size;
515 strm->avail_in = state.state->size;
516 if (gz_comp(state, Z_NO_FLUSH) == -1)
517 return state.state->err;
518 memcpy(state.state->in, state.state->in + state.state->size, left);
519 strm->next_in = state.state->in;
529 gz_statep state;
534 state.file = file;
537 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
545 if (state.state->seek) {
546 state.state->seek = 0;
547 if (gz_zero(state, state.state->skip) == -1)
548 return state.state->err;
552 (void)gz_comp(state, flush);
553 return state.state->err;
558 gz_statep state;
564 state.file = file;
565 strm = &(state.state->strm);
568 if (state.state->mode != GZ_WRITE || state.state->err != Z_OK)
572 if (level == state.state->level && strategy == state.state->strategy)
576 if (state.state->seek) {
577 state.state->seek = 0;
578 if (gz_zero(state, state.state->skip) == -1)
579 return state.state->err;
583 if (state.state->size) {
585 if (strm->avail_in && gz_comp(state, Z_BLOCK) == -1)
586 return state.state->err;
589 state.state->level = level;
590 state.state->strategy = strategy;
597 gz_statep state;
602 state.file = file;
605 if (state.state->mode != GZ_WRITE)
609 if (state.state->seek) {
610 state.state->seek = 0;
611 if (gz_zero(state, state.state->skip) == -1)
612 ret = state.state->err;
616 if (gz_comp(state, Z_FINISH) == -1)
617 ret = state.state->err;
618 if (state.state->size) {
619 if (!state.state->direct) {
620 (void)deflateEnd(&(state.state->strm));
621 free(state.state->out);
623 free(state.state->in);
625 gz_error(state, Z_OK, NULL);
626 free(state.state->path);
627 if (close(state.state->fd) == -1)
629 free(state.state);