diff options
author | pabs <pabs@pablotron.org> | 2007-09-20 23:46:01 -0400 |
---|---|---|
committer | pabs <pabs@pablotron.org> | 2007-09-20 23:46:01 -0400 |
commit | 86a515ea891675214769419835b196a0cbb14442 (patch) | |
tree | 318ca61c5216b47d8a3dd95ad3b9b8783b2d8d70 | |
parent | 7bd75d7b9acab8b31443361c5d2a67a19cd41c26 (diff) | |
download | zipstream-php-86a515ea891675214769419835b196a0cbb14442.tar.bz2 zipstream-php-86a515ea891675214769419835b196a0cbb14442.zip |
Fix crc32 calculation.
-rw-r--r-- | zipstream.php | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/zipstream.php b/zipstream.php index 5b8965f..1fe72dd 100644 --- a/zipstream.php +++ b/zipstream.php @@ -319,6 +319,7 @@ class ZipStream { function add_large_file($name, $path, $opt = array()) { $st = stat($path); $block_size = 1048576; # process in 1 megabyte chunks + $algo = 'crc32b'; # calculate header attributes $zlen = $len = $st['size']; @@ -327,14 +328,15 @@ class ZipStream { if ($meth_str == 'store') { # store method $meth = 0x00; - $crc = hash_file('crc32', $path); + $crc = unpack('V', hash_file($algo, $path, true)); + $crc = $crc[1]; } elseif ($meth_str == 'deflate') { # deflate method $meth = 0x08; # open file, calculate crc and compressed file length $fh = fopen($path, 'rb'); - $hash_ctx = hash_init('crc32'); + $hash_ctx = hash_init($algo); $zlen = 0; # read each block, update crc and zlen @@ -346,7 +348,8 @@ class ZipStream { # close file and finalize crc fclose($fh); - $crc = hash_final($hash_ctx); + $crc = unpack('V', hash_final($hash_ctx, true)); + $crc = $crc[1]; } else { die("unknown large_file_method: $meth_str"); } |