From 76895cf5fe1fd936cbfba9728acd70a529bd6deb Mon Sep 17 00:00:00 2001 From: asso-infini Date: Mon, 15 Feb 2016 21:16:22 +0100 Subject: [PATCH] Update m_bro.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gestion des archives dont l'extension est .bz, .bz2, .Z, .tgz, tbz ou tbz2 Si on a réussi à traiter l'archive, on n'essaye pas de la traiter une nouvelle fois. Dans le cas de l'utilisation de la commande tar, on utilise plutôt les id proprietaire et groupe des fichiers plutot que le nom des proprietaires et groupes des fichiers avec l'option --numeric-owner --- bureau/class/m_bro.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bureau/class/m_bro.php b/bureau/class/m_bro.php index 030809db..56210142 100644 --- a/bureau/class/m_bro.php +++ b/bureau/class/m_bro.php @@ -659,23 +659,28 @@ class m_bro { return 1; } $lfile = strtolower($file); - if (substr($lfile, -4) == ".tar" || substr($lfile, -8) == ".tar.bz2" || substr($lfile, -7) == ".tar.gz" || substr($lfile, -6) == ".tar.z") { + if (substr($lfile, -4) == ".tar" || substr($lfile, -8) == ".tar.bz2" || substr($lfile, -7) == ".tar.gz" || substr($lfile, -6) == ".tar.z" || substr($lfile, -4) == ".tgz" || substr($lfile, -4) == ".tbz" || substr($lfile, -5) == ".tbz2" ) { // TODO new version of tar supports `tar xf ...` so there is no // need to specify the compression format echo "

" . _("Uncompressing through TAR") . "

";
             $ret = 0;
-            passthru("tar -xvf " . escapeshellarg($file) . " -C " . escapeshellarg($dest) . " 2>&1", $ret);
+            passthru("tar -xvf " . escapeshellarg($file) . " --numeric-owner -C " . escapeshellarg($dest) . " 2>&1", $ret);
         }
-        if (substr($lfile, -4) == ".zip") {
+        elseif (substr($lfile, -4) == ".zip") {
             echo "

" . _("Uncompressing through UNZIP") . "

";
             $cmd = "unzip -o " . escapeshellarg($file) . " -d " . escapeshellarg($dest) . " 2>&1";
             passthru($cmd, $ret);
         }
-        if (substr($lfile, -3) == ".gz" && substr($lfile, -7) != ".tar.gz") {
+        elseif (substr($lfile, -3) == ".gz" || substr($lfile, -2) == ".Z") {
             echo "

" . _("Uncompressing through GUNZIP") . "

";
             $cmd = "gunzip " . escapeshellarg($file) . " 2>&1";
             passthru($cmd, $ret);
         }
+        elseif (substr($lfile, -3) == ".bz" || substr($lfile, -4) == ".bz2") {
+            echo "

" . _("Uncompressing through bunzip2") . "

";
+            $cmd = "bunzip2 " . escapeshellarg($file) . " 2>&1";
+            passthru($cmd, $ret);
+        }
         echo "
"; if ($ret) { $err->raise("bro", _("I cannot find a way to extract the file %s, it is an unsupported compressed format"), $file);