aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2005-12-25 11:12:03 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2005-12-25 11:12:03 +0000
commit4373cf2f30827e3ae0438e394d5e065a8bd13692 (patch)
tree8d5e2eeed45cee51392d5f1a8d9d315687279f7b /phpBB
parentb9b70c9ceb41925e0073199c6fec8fb70c9b796c (diff)
downloadforums-4373cf2f30827e3ae0438e394d5e065a8bd13692.tar
forums-4373cf2f30827e3ae0438e394d5e065a8bd13692.tar.gz
forums-4373cf2f30827e3ae0438e394d5e065a8bd13692.tar.bz2
forums-4373cf2f30827e3ae0438e394d5e065a8bd13692.tar.xz
forums-4373cf2f30827e3ae0438e394d5e065a8bd13692.zip
*** empty log message ***
git-svn-id: file:///svn/phpbb/trunk@5377 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/includes/functions_compress.php43
1 files changed, 26 insertions, 17 deletions
diff --git a/phpBB/includes/functions_compress.php b/phpBB/includes/functions_compress.php
index 8972f4f600..b8e1cdd9cf 100644
--- a/phpBB/includes/functions_compress.php
+++ b/phpBB/includes/functions_compress.php
@@ -159,7 +159,7 @@ class compress_zip extends compress
function extract($dst)
{
// Loop the file, looking for files and folders
- $ddTry = false;
+ $dd_try = false;
fseek($this->fp, 0);
while (true)
@@ -197,31 +197,36 @@ class compress_zip extends compress
'uc_size' => $file['uc_size'][1],
'offset' => $file['offset']
);
- break;
+ break;
+
case "\x50\x4b\x01\x02":
fread($this->fp, 24);
fread($this->fp, 12 + current(unpack("v", fread($this->fp, 2))) + current(unpack("v", fread($this->fp, 2))) + current(unpack("v", fread($this->fp, 2))));
- break;
+ break;
+
// We safely end the loop as we are totally finished with looking for files and folders
case "\x50\x4b\x05\x06":
- break 2;
+ break 2;
+
// Look for the next signature...
case 'PK00':
- continue 2;
+ continue 2;
+
// We have encountered a header that is weird. Lets look for better data...
default:
- if(!$ddTry)
+ if (!$dd_try)
{
// Unexpected header. Trying to detect wrong placed 'Data Descriptor';
- $ddTry = true;
+ $dd_try = true;
fseek($this->fp, 8, SEEK_CUR); // Jump over 'crc-32'(4) 'compressed-size'(4), 'uncompressed-size'(4)
continue 2;
}
trigger_error("Unexpected header, ending loop");
break 2;
}
- $ddTry = false;
+ $dd_try = false;
}
+
if (sizeof($seek_ary))
{
foreach ($seek_ary as $filename => $trash)
@@ -232,10 +237,12 @@ class compress_zip extends compress
{
$str = '';
$folders = explode('/', $dirname);
+
// Create and folders and subfolders if they do not exist
foreach ($folders as $folder)
{
$str = (!empty($str)) ? $str . '/' . $folder : $folder;
+
if(!is_dir("$dst$str"))
{
if (!@mkdir("$dst$str", 0777))
@@ -247,7 +254,7 @@ class compress_zip extends compress
}
}
- if(substr($filename, -1, 1) == '/')
+ if (substr($filename, -1, 1) == '/')
{
continue;
}
@@ -255,7 +262,7 @@ class compress_zip extends compress
$target_filename = "$dst$filename";
$fdetails = &$seek_ary[$filename];
- if(!$fdetails['uc_size'])
+ if (!$fdetails['uc_size'])
{
$fp = fopen($target_filename, "w");
fwrite($fp, '');
@@ -265,20 +272,22 @@ class compress_zip extends compress
fseek($this->fp, $fdetails['offset']);
$mode = $fdetails['c_method'];
$content = fread($this->fp, $fdetails['c_size']);
- switch($mode)
+
+ switch ($mode)
{
case 0:
// Not compressed
$fp = fopen($target_filename, "w");
fwrite($fp, $content);
fclose($fp);
- break;
+ break;
+
case 8:
// Deflate
$fp = fopen($target_filename, "w");
fwrite($fp, gzinflate($content, $fdetails['uc_size']));
fclose($fp);
- break;
+ break;
}
}
}
@@ -623,19 +632,19 @@ class compress_tar extends compress
{
case 'tar':
$mimetype = 'application/x-tar';
- break;
+ break;
case 'tar.gz':
$mimetype = 'application/x-gzip';
- break;
+ break;
case 'tar.bz2':
$mimetype = 'application/x-bzip2';
- break;
+ break;
default:
$mimetype = 'application/octet-stream';
- break;
+ break;
}
header('Pragma: no-cache');