Add two flags: ZIP_ZF_CRC and ZIP_ZF_DECOMP to note
if we want to check the CRC of a file and if a file
should get decompressed. Adapt code. Removes some XXX.
From dillo.
--HG--
branch : HEAD
diff --git a/lib/zip_fread.c b/lib/zip_fread.c
index 11ad594..96f32c5 100644
--- a/lib/zip_fread.c
+++ b/lib/zip_fread.c
@@ -1,5 +1,5 @@
/*
- $NiH: zip_fread.c,v 1.12 2004/11/17 21:55:11 wiz Exp $
+ $NiH: zip_fread.c,v 1.13 2004/11/18 17:11:21 wiz Exp $
zip_fread.c -- read from file
Copyright (C) 1999, 2004 Dieter Baron and Thomas Klausner
@@ -56,8 +56,7 @@
if (zf->bytes_left == 0) {
zf->flags |= ZIP_ZF_EOF;
- if ((zf->flags & ZIP_ZF_COMP) == 0) {
- /* XXX: compare for stored */
+ if (zf->flags & ZIP_ZF_CRC) {
if (zf->crc != zf->crc_orig) {
_zip_error_set(&zf->error, ZIP_ER_CRC, 0);
return -1;
@@ -66,13 +65,11 @@
return 0;
}
- if (zf->flags & ZIP_ZF_COMP) {
+ if ((zf->flags & ZIP_ZF_DECOMP) == 0) {
ret = _zip_file_fillbuf(outbuf, toread, zf);
if (ret > 0) {
-#if 0
- /* XXX: compute for stored */
- zf->crc = crc32(zf->crc, outbuf, ret);
-#endif
+ if (zf->flags & ZIP_ZF_CRC)
+ zf->crc = crc32(zf->crc, outbuf, ret);
zf->bytes_left -= ret;
}
return ret;
@@ -94,7 +91,8 @@
have a header */
len = zf->zstr->total_out - out_before;
if (len >= zf->bytes_left || len >= toread) {
- zf->crc = crc32(zf->crc, outbuf, len);
+ if (zf->flags & ZIP_ZF_CRC)
+ zf->crc = crc32(zf->crc, outbuf, len);
zf->bytes_left -= len;
return len;
}