From: Tomas V.V.Cox Date: Sat, 29 Sep 2001 00:38:24 +0000 (+0000) Subject: extract only the package.xml file instead of all files X-Git-Tag: php4~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3e28c8f594d3ed6b75516ae15bfb194f27c5689;p=php extract only the package.xml file instead of all files --- diff --git a/pear/PEAR/Common.php b/pear/PEAR/Common.php index 5680f55acf..24fb4dfadf 100644 --- a/pear/PEAR/Common.php +++ b/pear/PEAR/Common.php @@ -377,27 +377,17 @@ class PEAR_Common extends PEAR if (!@is_file($file)) { return $this->raiseError('no tar file supplied'); } - $tar = new Archive_Tar($file, true); - // XXX Fixme Windows - $tmpdir = '/tmp' . DIRECTORY_SEPARATOR . $file; - if (file_exists($tmpdir)) { - return $this->raiseError('Tmpdir: ' . $tmpdir .' already exists', - null, PEAR_ERROR_TRIGGER, E_USER_ERROR); - } - if (!mkdir($tmpdir, 0755)) { - return $this->raiseError("Unable to create temporary directory $tmpdir.", - null, PEAR_ERROR_TRIGGER, E_USER_ERROR); - } - $tar->extract($tmpdir); // Assume the decompressed dir name if (($pos = strrpos($file, '.')) === false) { return $this->raiseError('file doesn\'t follow the package name convention'); } $pkgdir = substr($file, 0, $pos); + $xml = $pkgdir . DIRECTORY_SEPARATOR . 'package.xml'; - $xml = $tmpdir . DIRECTORY_SEPARATOR . $pkgdir . DIRECTORY_SEPARATOR .'package.xml'; + $tar = new Archive_Tar($file, true); + $tar->extractList($xml); $info = $this->infoFromDescriptionFile($xml); - system("rm -rf $tmpdir"); // XXX FIXME Windows + unlink($xml); return $info; } }