24 state->in = (
unsigned char *)malloc(state->want << 1);
25 if (state->in == NULL) {
33 state->out = (
unsigned char *)malloc(state->want);
34 if (state->out == NULL) {
56 state->size = state->want;
60 strm->avail_out = state->size;
61 strm->next_out = state->out;
62 state->x.next = strm->next_out;
78 unsigned have, put, max = ((unsigned)-1 >> 2) + 1;
82 if (state->size == 0 &&
gz_init(state) == -1)
87 while (strm->avail_in) {
88 put = strm->avail_in > max ? max : strm->avail_in;
89 writ = write(state->fd, strm->next_in, put);
94 strm->avail_in -= (unsigned)writ;
95 strm->next_in += writ;
105 if (strm->avail_out == 0 || (flush !=
Z_NO_FLUSH &&
107 while (strm->next_out > state->x.next) {
108 put = strm->next_out - state->x.next > (int)max ? max :
109 (
unsigned)(strm->next_out - state->x.next);
110 writ = write(state->fd, state->x.next, put);
115 state->x.next += writ;
117 if (strm->avail_out == 0) {
118 strm->avail_out = state->size;
119 strm->next_out = state->out;
120 state->x.next = state->out;
125 have = strm->avail_out;
129 "internal error: deflate stream corrupt");
132 have -= strm->avail_out;
161 (
unsigned)len : state->size;
163 memset(state->in, 0, n);
167 strm->next_in = state->in;
190 if (state->size == 0 &&
gz_init(state) == -1)
196 if (
gz_zero(state, state->skip) == -1)
201 if (len < state->size) {
206 if (state->strm.avail_in == 0)
207 state->strm.next_in = state->in;
208 have = (unsigned)((state->strm.next_in + state->strm.avail_in) -
210 copy = state->size -
have;
213 memcpy(state->in +
have, buf, copy);
214 state->strm.avail_in += copy;
215 state->x.pos += copy;
216 buf = (
const char *)buf + copy;
230 unsigned n = (unsigned)-1;
233 state->strm.avail_in = n;
270 return (
int)
gz_write(state, buf, len);
294 if (size && len / size != nitems) {
300 return len ?
gz_write(state, buf, len) / size : 0;
309 unsigned char buf[1];
317 strm = &(state->strm);
326 if (
gz_zero(state, state->skip) == -1)
333 if (strm->avail_in == 0)
334 strm->next_in = state->in;
335 have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
336 if (have < state->size) {
337 state->in[
have] = (
unsigned char)c;
345 buf[0] = (
unsigned char)c;
372 return ret == 0 && len != 0 ? -1 : ret;
375 #if defined(STDC) || defined(Z_HAVE_STDARG_H)
391 strm = &(state->strm);
398 if (state->size == 0 &&
gz_init(state) == -1)
404 if (
gz_zero(state, state->skip) == -1)
411 if (strm->avail_in == 0)
412 strm->next_in = state->in;
413 next = (
char *)(state->in + (strm->next_in - state->in) + strm->avail_in);
414 next[state->size - 1] = 0;
416 # ifdef HAS_vsprintf_void
417 (void)vsprintf(
next, format, va);
418 for (len = 0; len < state->size; len++)
419 if (
next[len] == 0)
break;
421 len = vsprintf(
next, format, va);
424 # ifdef HAS_vsnprintf_void
425 (void)vsnprintf(
next, state->size, format, va);
428 len = vsnprintf(
next, state->size, format, va);
433 if (len == 0 || (
unsigned)len >= state->size ||
next[state->size - 1] != 0)
437 strm->avail_in += (unsigned)len;
439 if (strm->avail_in >= state->size) {
440 left = strm->avail_in - state->size;
441 strm->avail_in = state->size;
444 memcpy(state->in, state->in + state->size, left);
445 strm->next_in = state->in;
446 strm->avail_in = left;
456 va_start(va, format);
457 ret = gzvprintf(file, format, va);
465 int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
466 a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
469 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
470 a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
481 strm = &(state->strm);
484 if (
sizeof(
int) !=
sizeof(
void *))
492 if (state->size == 0 &&
gz_init(state) == -1)
498 if (
gz_zero(state, state->skip) == -1)
505 if (strm->avail_in == 0)
506 strm->next_in = state->in;
507 next = (
char *)(strm->next_in + strm->avail_in);
508 next[state->size - 1] = 0;
510 # ifdef HAS_sprintf_void
511 sprintf(
next, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12,
512 a13, a14, a15, a16, a17, a18, a19, a20);
513 for (len = 0; len < size; len++)
517 len = sprintf(
next, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
518 a12, a13, a14, a15, a16, a17, a18, a19, a20);
521 # ifdef HAS_snprintf_void
522 snprintf(
next, state->size, format, a1, a2, a3, a4, a5, a6, a7, a8, a9,
523 a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
526 len = snprintf(
next, state->size, format, a1, a2, a3, a4, a5, a6, a7, a8,
527 a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
532 if (len == 0 || len >= state->size ||
next[state->size - 1] != 0)
536 strm->avail_in += len;
538 if (strm->avail_in >= state->size) {
539 left = strm->avail_in - state->size;
540 strm->avail_in = state->size;
543 memcpy(state->in, state->in + state->size, left);
544 strm->next_in = state->in;
545 strm->avail_in = left;
575 if (
gz_zero(state, state->skip) == -1)
597 strm = &(state->strm);
604 if (level == state->level && strategy == state->strategy)
610 if (
gz_zero(state, state->skip) == -1)
621 state->level = level;
622 state->strategy = strategy;
645 if (
gz_zero(state, state->skip) == -1)
653 if (!state->direct) {
661 if (close(state->fd) == -1)