From 5effa242aec0f47c38393de144ce277b0996f003 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 27 Nov 2023 18:05:00 +0100 Subject: [PATCH] Improved Zip::addRecursive --- snappymail/v/0.0.0/app/libraries/snappymail/stream/zip.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/stream/zip.php b/snappymail/v/0.0.0/app/libraries/snappymail/stream/zip.php index 163d4a2bc..12ae8a254 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/stream/zip.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/stream/zip.php @@ -200,11 +200,14 @@ class ZIP return true; } - public function addRecursive($dir, $ignore = '#/(\\.hg(/|$)|\\.hgignore)#') : void + public function addRecursive(string $dir, string $target_dir = '', string $ignore = '#/(\\.hg(/|$)|\\.hgignore)#') : void { \clearstatcache(); $dir = \rtrim($dir,'\\/') . '/'; $dirl = \strlen($dir); + if ($target_dir) { + $target_dir = \rtrim($target_dir,'\\/') . '/'; + } $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($dir, \FilesystemIterator::SKIP_DOTS /*| \FilesystemIterator::FOLLOW_SYMLINKS*/), \RecursiveIteratorIterator::SELF_FIRST, @@ -215,7 +218,7 @@ class ZIP continue; } if (!$ignore || !\preg_match($ignore, $name)) { - $this->addFile($name, \substr($name, $dirl)); + $this->addFile($name, $target_dir . \substr($name, $dirl)); } // like: tar --exclude-caches -czf file.tgz * if (\strpos($name, 'CACHEDIR.TAG')) {