s->transparent = 1; if (c != EOF) s->stream.avail_in++, s->stream.next_in--;
if (len != 0) s->stream.avail_in++, s->stream.next_in--; if (c != EOF) { s->stream.avail_in++, s->stream.next_in--; s->transparent = 1; }
local void check_header(s)    gz_stream *s;{    int method; /* method byte */    int flags;  /* flags byte */    uInt len;    int c;    /* Check the gzip magic header */    for (len = 0; len < 2; len++) {	c = get_byte(s);	if (c != gz_magic[len]) {	    s->transparent = 1;	    if (c != EOF) s->stream.avail_in++, s->stream.next_in--;	    s->z_err = s->stream.avail_in != 0 ? Z_OK : Z_STREAM_END;	    return;	}    }    method = get_byte(s);    flags = get_byte(s);    if (method != Z_DEFLATED || (flags & RESERVED) != 0) {	s->z_err = Z_DATA_ERROR;	return;    }    /* Discard time, xflags and OS code: */    for (len = 0; len < 6; len++) (void)get_byte(s);    if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */	len  =  (uInt)get_byte(s);	len += ((uInt)get_byte(s))<<8;	/* len is garbage if EOF but the loop below will quit anyway */	while (len-- != 0 && get_byte(s) != EOF) ;    }    if ((flags & ORIG_NAME) != 0) { /* skip the original file name */	while ((c = get_byte(s)) != 0 && c != EOF) ;    }    if ((flags & COMMENT) != 0) {   /* skip the .gz file comment */	while ((c = get_byte(s)) != 0 && c != EOF) ;    }    if ((flags & HEAD_CRC) != 0) {  /* skip the header crc */	for (len = 0; len < 2; len++) (void)get_byte(s);    }    s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;}