From 3c208e1d0b79c0be1e911d93442c154030925f1a Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Tue, 22 Jul 2003 20:06:17 +0000 Subject: [PATCH] Save some mem when decompressing .zip git-svn-id: file:///svn/phpbb/trunk@4315 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_compress.php | 33 +++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/phpBB/includes/functions_compress.php b/phpBB/includes/functions_compress.php index b705158d16..e3228577b2 100644 --- a/phpBB/includes/functions_compress.php +++ b/phpBB/includes/functions_compress.php @@ -161,29 +161,35 @@ class compress_zip extends compress if ($attrib == 0x41FF0010) { - mkdir($dst . $filename); + if (!@mkdir($dst . $filename)) + { + trigger_error("Could not create directory $filename"); + } } else { fseek($this->fp, $offset + 30 + $strlen); // We have to fudge here for time being - - // Read buffer, prepend and append gz file header/footer - $buffer = pack('va1a1Va1a1', 0x8b1f, chr(0x08), chr(0x00), time(), chr(0x00), chr(3)) . fread($this->fp, $c_size) . pack("VV", $crc, $uc_size); - if (!($fp = fopen($dst . $filename . '.gz', 'wb'))) { - die("Could not open temporary $filename.gz"); + trigger_error("Could not open temporary $filename.gz"); } - fwrite($fp, $buffer); + + // .gz header + fwrite($fp, pack('va1a1Va1a1', 0x8b1f, chr(0x08), chr(0x00), time(), chr(0x00), chr(3))); + // data ... write it out in 1KB packets to conserve mem + while ($buffer = fread($this->fp, 1024)) + { + fwrite($fp, $buffer); + } + // .gz footer + fwrite($fp, pack("VV", $crc, $uc_size)); fclose($fp); - unset($buffer); - unset($fp); if (!($fp = fopen($dst . $filename, 'wb'))) { - die("Could not open $filename"); + trigger_error("Could not create $filename"); } if (!($gzfp = gzopen($dst . $filename . '.gz', 'rb'))) @@ -328,7 +334,10 @@ class compress_tar extends compress if ($filetype == 5) { - mkdir($dst . $filename); + if (!@mkdir($dst . $filename)) + { + trigger_error("Could not create directory $filename"); + } continue; } else @@ -338,7 +347,7 @@ class compress_tar extends compress if (!($fp = fopen($dst . $filename, 'wb'))) { - trigger_error('Could not open file for output'); + trigger_error("Could create file $filename"); } $size = 0;