X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Farchive.inc;h=1b9e11efe4735753b7c1d8979e77a4b446f921ae;hb=57f7d4930f7c579c85272d88eddd9a5bede8ef19;hp=d8316d39877150fb4f217498a6c615679e358a2f;hpb=cef4b4de401511a4195b7b8ad04b47bec1895b20;p=fa-stable.git diff --git a/includes/archive.inc b/includes/archive.inc index d8316d39..1b9e11ef 100644 --- a/includes/archive.inc +++ b/includes/archive.inc @@ -16,7 +16,7 @@ class archive { - function archive($name) + function __construct($name) { $this->options = array ( 'basedir' => ".", @@ -238,9 +238,9 @@ class archive class tar_file extends archive { - function tar_file($name) + function __construct($name) { - $this->archive($name); + parent::__construct($name); $this->options['type'] = "tar"; } @@ -322,9 +322,12 @@ class tar_file extends archive while ($block = fread($fp, 512)) { - $temp = unpack("a100name/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1type/a100symlink/a6magic/a2temp/a32temp/a32temp/a8temp/a8temp/a155prefix/a12temp", $block); + if (version_compare(PHP_VERSION, '5.5.0') >= 0) + $temp = unpack("Z100name/Z8mode/Z8uid/Z8gid/Z12size/Z12mtime/Z8checksum/Z1type/Z100symlink/Z6magic/Z2temp/Z32temp/Z32temp/Z8temp/Z8temp/Z155prefix/Z12temp", $block); + else + $temp = unpack("a100name/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1type/a100symlink/a6magic/a2temp/a32temp/a32temp/a8temp/a8temp/a155prefix/a12temp", $block); $file = array ( - 'name' => $temp['prefix'] . $temp['name'], + 'name' => rtrim($temp['prefix']) . rtrim($temp['name']), 'stat' => array ( 2 => octdec($temp['mode']), 4 => octdec($temp['uid']), @@ -395,7 +398,8 @@ class tar_file extends archive else if ($new = @fopen($file['name'], "wb")) { fwrite($new, fread($fp, $file['stat'][7])); - fread($fp, (512 - $file['stat'][7] % 512) == 512 ? 0 : (512 - $file['stat'][7] % 512)); + if ($file['stat'][7] % 512) + fread($fp, 512 - $file['stat'][7] % 512); fclose($new); @chmod($file['name'], $file['stat'][2]); } @@ -415,7 +419,6 @@ class tar_file extends archive } else $this->error[] = "Could not open file {$this->options['name']}"; - error_log('3'); return $flist; } @@ -428,9 +431,9 @@ class tar_file extends archive class gzip_file extends tar_file { - function gzip_file($name) + function __construct($name) { - $this->tar_file($name); + parent::__construct($name); $this->options['type'] = "gzip"; } @@ -463,4 +466,3 @@ class gzip_file extends tar_file } } -?> \ No newline at end of file