diff --git a/composer.json b/composer.json
index 1e8c01e34..ba9ff9453 100644
--- a/composer.json
+++ b/composer.json
@@ -42,7 +42,7 @@
"microsoft/azure-storage-blob": "^1.5.4",
"mlocati/ip-lib": "^1.22",
"nextcloud/lognormalizer": "^3.0.1",
- "pear/archive_tar": "^1.4.9",
+ "pear/archive_tar": "^1.6.0",
"pear/pear-core-minimal": "^1.10",
"php-http/guzzle7-adapter": "^1.1.0",
"php-opencloud/openstack": "^3.14",
diff --git a/composer.lock b/composer.lock
index 218ad28ff..8c21c1b39 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "b47e22e2def372440b2f2044e1c016d2",
+ "content-hash": "6bdc7bba417a037a299d4e3c3527bf31",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -2460,21 +2460,21 @@
},
{
"name": "pear/archive_tar",
- "version": "1.5.0",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/pear/Archive_Tar.git",
- "reference": "b439c859564f5cbb0f64ad6002d0afe84a889602"
+ "reference": "dc3285537f1832da8ddbbe45f5a007248b6cc00e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b439c859564f5cbb0f64ad6002d0afe84a889602",
- "reference": "b439c859564f5cbb0f64ad6002d0afe84a889602",
+ "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/dc3285537f1832da8ddbbe45f5a007248b6cc00e",
+ "reference": "dc3285537f1832da8ddbbe45f5a007248b6cc00e",
"shasum": ""
},
"require": {
"pear/pear-core-minimal": "^1.10.0alpha2",
- "php": ">=5.2.0"
+ "php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "*"
@@ -2526,7 +2526,7 @@
"issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar",
"source": "https://github.com/pear/Archive_Tar"
},
- "time": "2024-03-16T16:21:40+00:00"
+ "time": "2025-07-19T14:49:16+00:00"
},
{
"name": "pear/console_getopt",
@@ -2581,16 +2581,16 @@
},
{
"name": "pear/pear-core-minimal",
- "version": "v1.10.16",
+ "version": "v1.10.18",
"source": {
"type": "git",
"url": "https://github.com/pear/pear-core-minimal.git",
- "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033"
+ "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c0f51b45f50683bf5bbf558036854ebc9b54d033",
- "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033",
+ "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c7b55789d01de0ce090d289b73f1bbd6a2f113b1",
+ "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1",
"shasum": ""
},
"require": {
@@ -2626,7 +2626,7 @@
"issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR",
"source": "https://github.com/pear/pear-core-minimal"
},
- "time": "2024-11-24T22:27:58+00:00"
+ "time": "2025-12-14T20:37:07+00:00"
},
{
"name": "pear/pear_exception",
diff --git a/composer/installed.json b/composer/installed.json
index 00439f648..c309c6efc 100644
--- a/composer/installed.json
+++ b/composer/installed.json
@@ -2562,22 +2562,22 @@
},
{
"name": "pear/archive_tar",
- "version": "1.5.0",
- "version_normalized": "1.5.0.0",
+ "version": "1.6.0",
+ "version_normalized": "1.6.0.0",
"source": {
"type": "git",
"url": "https://github.com/pear/Archive_Tar.git",
- "reference": "b439c859564f5cbb0f64ad6002d0afe84a889602"
+ "reference": "dc3285537f1832da8ddbbe45f5a007248b6cc00e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b439c859564f5cbb0f64ad6002d0afe84a889602",
- "reference": "b439c859564f5cbb0f64ad6002d0afe84a889602",
+ "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/dc3285537f1832da8ddbbe45f5a007248b6cc00e",
+ "reference": "dc3285537f1832da8ddbbe45f5a007248b6cc00e",
"shasum": ""
},
"require": {
"pear/pear-core-minimal": "^1.10.0alpha2",
- "php": ">=5.2.0"
+ "php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "*"
@@ -2587,7 +2587,7 @@
"ext-xz": "Lzma2 compression support.",
"ext-zlib": "Gzip compression support."
},
- "time": "2024-03-16T16:21:40+00:00",
+ "time": "2025-07-19T14:49:16+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -2689,17 +2689,17 @@
},
{
"name": "pear/pear-core-minimal",
- "version": "v1.10.16",
- "version_normalized": "1.10.16.0",
+ "version": "v1.10.18",
+ "version_normalized": "1.10.18.0",
"source": {
"type": "git",
"url": "https://github.com/pear/pear-core-minimal.git",
- "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033"
+ "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c0f51b45f50683bf5bbf558036854ebc9b54d033",
- "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033",
+ "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c7b55789d01de0ce090d289b73f1bbd6a2f113b1",
+ "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1",
"shasum": ""
},
"require": {
@@ -2710,7 +2710,7 @@
"replace": {
"rsky/pear-core-min": "self.version"
},
- "time": "2024-11-24T22:27:58+00:00",
+ "time": "2025-12-14T20:37:07+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
diff --git a/composer/installed.php b/composer/installed.php
index c0b1a2807..400828358 100644
--- a/composer/installed.php
+++ b/composer/installed.php
@@ -350,9 +350,9 @@
),
),
'pear/archive_tar' => array(
- 'pretty_version' => '1.5.0',
- 'version' => '1.5.0.0',
- 'reference' => 'b439c859564f5cbb0f64ad6002d0afe84a889602',
+ 'pretty_version' => '1.6.0',
+ 'version' => '1.6.0.0',
+ 'reference' => 'dc3285537f1832da8ddbbe45f5a007248b6cc00e',
'type' => 'library',
'install_path' => __DIR__ . '/../pear/archive_tar',
'aliases' => array(),
@@ -368,9 +368,9 @@
'dev_requirement' => false,
),
'pear/pear-core-minimal' => array(
- 'pretty_version' => 'v1.10.16',
- 'version' => '1.10.16.0',
- 'reference' => 'c0f51b45f50683bf5bbf558036854ebc9b54d033',
+ 'pretty_version' => 'v1.10.18',
+ 'version' => '1.10.18.0',
+ 'reference' => 'c7b55789d01de0ce090d289b73f1bbd6a2f113b1',
'type' => 'library',
'install_path' => __DIR__ . '/../pear/pear-core-minimal',
'aliases' => array(),
@@ -601,7 +601,7 @@
'rsky/pear-core-min' => array(
'dev_requirement' => false,
'replaced' => array(
- 0 => 'v1.10.16',
+ 0 => 'v1.10.18',
),
),
'sabre/dav' => array(
diff --git a/pear/archive_tar/Archive/Tar.php b/pear/archive_tar/Archive/Tar.php
index 03daa39f0..7ce09491d 100644
--- a/pear/archive_tar/Archive/Tar.php
+++ b/pear/archive_tar/Archive/Tar.php
@@ -48,27 +48,6 @@
define('ARCHIVE_TAR_ATT_SEPARATOR', 90001);
define('ARCHIVE_TAR_END_BLOCK', pack("a512", ''));
-if (!function_exists('gzopen') && function_exists('gzopen64')) {
- function gzopen($filename, $mode, $use_include_path = 0)
- {
- return gzopen64($filename, $mode, $use_include_path);
- }
-}
-
-if (!function_exists('gztell') && function_exists('gztell64')) {
- function gztell($zp)
- {
- return gztell64($zp);
- }
-}
-
-if (!function_exists('gzseek') && function_exists('gzseek64')) {
- function gzseek($zp, $offset, $whence = SEEK_SET)
- {
- return gzseek64($zp, $offset, $whence);
- }
-}
-
/**
* Creates a (compressed) Tar archive
*
@@ -244,7 +223,7 @@ public function __construct($p_tarname, $p_compress = null, $buffer_length = 512
"a8checksum/a1typeflag/a100link/a6magic/a2version/" .
"a32uname/a32gname/a8devmajor/a8devminor/a131prefix";
} else {
- $this->_fmt = "Z100filename/Z8mode/Z8uid/Z8gid/Z12size/Z12mtime/" .
+ $this->_fmt = "Z100filename/Z8mode/Z8uid/Z8gid/a12size/Z12mtime/" .
"Z8checksum/Z1typeflag/Z100link/Z6magic/Z2version/" .
"Z32uname/Z32gname/Z8devmajor/Z8devminor/Z131prefix";
}
@@ -991,48 +970,45 @@ public function _writeBlock($p_binary_data, $p_len = null)
{
if (is_resource($this->_file)) {
if ($p_len === null) {
- if ($this->_compress_type == 'gz') {
- @gzputs($this->_file, $p_binary_data);
- } else {
- if ($this->_compress_type == 'bz2') {
- @bzwrite($this->_file, $p_binary_data);
- } else {
- if ($this->_compress_type == 'lzma2') {
- @xzwrite($this->_file, $p_binary_data);
- } else {
- if ($this->_compress_type == 'none') {
- @fputs($this->_file, $p_binary_data);
- } else {
- $this->_error(
- 'Unknown or missing compression type ('
- . $this->_compress_type . ')'
- );
- }
- }
- }
- }
- } else {
- if ($this->_compress_type == 'gz') {
- @gzputs($this->_file, $p_binary_data, $p_len);
- } else {
- if ($this->_compress_type == 'bz2') {
- @bzwrite($this->_file, $p_binary_data, $p_len);
- } else {
- if ($this->_compress_type == 'lzma2') {
- @xzwrite($this->_file, $p_binary_data, $p_len);
- } else {
- if ($this->_compress_type == 'none') {
- @fputs($this->_file, $p_binary_data, $p_len);
- } else {
- $this->_error(
- 'Unknown or missing compression type ('
- . $this->_compress_type . ')'
- );
- }
- }
- }
- }
+ switch ($this->_compress_type)
+ {
+ case 'gz':
+ $bytes = @gzwrite($this->_file, $p_binary_data);
+ break;
+ case 'bz2':
+ $bytes = @bzwrite($this->_file, $p_binary_data);
+ break;
+ case 'lzma2':
+ $bytes = @xzwrite($this->_file, $p_binary_data);
+ break;
+ case 'none':
+ $bytes = @fwrite($this->_file, $p_binary_data);
+ break;
+ default:
+ $this->_error('Unknown or missing compression type (' . $this->_compress_type . ')');
+ return false;
+ }
+ } else {
+ switch ($this->_compress_type)
+ {
+ case 'gz':
+ $bytes = @gzwrite($this->_file, $p_binary_data, $p_len);
+ break;
+ case 'bz2':
+ $bytes = @bzwrite($this->_file, $p_binary_data, $p_len);
+ break;
+ case 'lzma2':
+ $bytes = @xzwrite($this->_file, $p_binary_data, $p_len);
+ break;
+ case 'none':
+ $bytes = @fwrite($this->_file, $p_binary_data, $p_len);
+ break;
+ default:
+ $this->_error('Unknown or missing compression type (' . $this->_compress_type . ')');
+ return false;
+ }
}
+ return $bytes !== false;
}
return true;
}
@@ -1117,7 +1093,7 @@ public function _writeFooter()
if (is_resource($this->_file)) {
// ----- Write the last 0 filled block for end of archive
$v_binary_data = pack('a1024', '');
- $this->_writeBlock($v_binary_data);
+ return $this->_writeBlock($v_binary_data);
}
return true;
}
@@ -1279,7 +1255,9 @@ public function _addFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir, $v_
$pack_format = sprintf('a%d', $this->buffer_length);
}
$v_binary_data = pack($pack_format, "$v_buffer");
- $this->_writeBlock($v_binary_data);
+ if(!$this->_writeBlock($v_binary_data)) {
+ return false;
+ }
}
fclose($v_file);
@@ -1341,7 +1319,9 @@ public function _addString($p_filename, $p_string, $p_datetime = false, $p_param
$i = 0;
while (($v_buffer = substr($p_string, (($i++) * 512), 512)) != '') {
$v_binary_data = pack("a512", $v_buffer);
- $this->_writeBlock($v_binary_data);
+ if (!$this->_writeBlock($v_binary_data)) {
+ return false;
+ }
}
return true;
diff --git a/pear/archive_tar/package.xml b/pear/archive_tar/package.xml
index a997f41d8..93ba5d325 100644
--- a/pear/archive_tar/package.xml
+++ b/pear/archive_tar/package.xml
@@ -38,10 +38,10 @@ Also Lzma2 compressed archives are supported with xz extension.
stig@php.net
no
- 2024-03-16
+ 2025-07-19
- 1.5.0
- 1.5.0
+ 1.6.0
+ 1.6.0
stable
@@ -49,8 +49,11 @@ Also Lzma2 compressed archives are supported with xz extension.
New BSD License
-* PR #42: fix @return true... to @return bool true... on some functions
-* PR #46: use 775 default for mkdirs, to avoid world-write
+This release drops support for PHP 5.4 and 5.5.
+
+* PR #51: big file support
+* PR #53: Fix return value of _writeBlock
+* PR #58: Remove gzopen/gztell/gzseek shim
@@ -71,15 +74,34 @@ Also Lzma2 compressed archives are supported with xz extension.
- 5.2.0
+ 5.6.0
- 1.9.0
+ 1.10.0
+
+
+ 1.6.0
+ 1.6.0
+
+
+ stable
+ stable
+
+ 2025-07-19
+ New BSD License
+
+ This release drops support for PHP 5.4 and 5.5.
+
+ * PR #51: big file support
+ * PR #53: Fix return value of _writeBlock
+ * PR #58: Remove gzopen/gztell/gzseek shim
+
+
1.5.0
diff --git a/pear/pear-core-minimal/src/PEAR.php b/pear/pear-core-minimal/src/PEAR.php
index 43c65dbdb..0c9ab5694 100644
--- a/pear/pear-core-minimal/src/PEAR.php
+++ b/pear/pear-core-minimal/src/PEAR.php
@@ -216,9 +216,13 @@ function _PEAR() {
public function __call($method, $arguments)
{
if (!isset(self::$bivalentMethods[$method])) {
- trigger_error(
- 'Call to undefined method PEAR::' . $method . '()', E_USER_ERROR
- );
+ if (PHP_VERSION_ID < 70000) {
+ trigger_error(
+ 'Call to undefined method PEAR::' . $method . '()', E_USER_ERROR
+ );
+ } else {
+ throw new Error('Call to undefined method PEAR::' . $method . '()');
+ }
}
return call_user_func_array(
array(__CLASS__, '_' . $method),
@@ -229,9 +233,13 @@ public function __call($method, $arguments)
public static function __callStatic($method, $arguments)
{
if (!isset(self::$bivalentMethods[$method])) {
- trigger_error(
- 'Call to undefined method PEAR::' . $method . '()', E_USER_ERROR
- );
+ if (PHP_VERSION_ID < 70000) {
+ trigger_error(
+ 'Call to undefined method PEAR::' . $method . '()', E_USER_ERROR
+ );
+ } else {
+ throw new Error('Call to undefined method PEAR::' . $method . '()');
+ }
}
return call_user_func_array(
array(__CLASS__, '_' . $method),