(state->err != Z_OK && state->err != Z_BUF_ERROR))
return -1;
- /* try output buffer (no need to check for skip request) -- while
- this check really isn't required since the gzgetc() macro has
- already determined that x.have is zero, we leave it in for
- completeness. */
+ /* try output buffer (no need to check for skip request) */
if (state->x.have) {
state->x.have--;
state->x.pos++;
return ret < 1 ? -1 : buf[0];
}
+#undef gzgetc
+int ZEXPORT gzgetc(file)
+gzFile file;
+{
+ return gzgetc_(file);
+}
+
/* -- see zlib.h -- */
int ZEXPORT gzungetc(c, file)
int c;
int ZEXPORT gzclose_r(file)
gzFile file;
{
- int ret;
+ int ret, err;
gz_statep state;
/* get internal structure */
free(state->out);
free(state->in);
}
+ err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK;
gz_error(state, Z_OK, NULL);
free(state->path);
ret = close(state->fd);
free(state);
- return ret ? Z_ERRNO : Z_OK;
+ return ret ? Z_ERRNO : err;
}