1
0
mirror of https://github.com/php/php-src.git synced 2026-04-21 23:18:13 +02:00

* added "register_only" option for install/uninstall

This commit is contained in:
Stig Bakken
2001-12-11 08:39:01 +00:00
parent 02c1e81a54
commit 131acf55f7
+31 -24
View File
@@ -129,7 +129,7 @@ class PEAR_Installer extends PEAR_Common
* @return bool true if successful, false if not
*/
function install($pkgfile)
function install($pkgfile, $options = array())
{
// XXX FIXME Add here code to manage packages database
//$this->loadPackageList("$this->statedir/packages.lst");
@@ -217,23 +217,27 @@ class PEAR_Installer extends PEAR_Common
}
// Copy files to dest dir ---------------------------------------
if (!is_dir($this->phpdir)) {
chdir($oldcwd);
return $this->raiseError("no script destination directory found",
null, PEAR_ERROR_DIE);
}
$tmp_path = dirname($descfile);
foreach ($pkginfo['filelist'] as $fname => $atts) {
$dest_dir = $this->phpdir . DIRECTORY_SEPARATOR;
if (isset($atts['baseinstalldir'])) {
$dest_dir .= $atts['baseinstalldir'] . DIRECTORY_SEPARATOR;
if (empty($options['register_only'])) {
if (!is_dir($this->phpdir)) {
chdir($oldcwd);
return $this->raiseError("no script destination directory\n",
null, PEAR_ERROR_DIE);
}
if (dirname($fname) != '.') {
$dest_dir .= dirname($fname) . DIRECTORY_SEPARATOR;
$tmp_path = dirname($descfile);
foreach ($pkginfo['filelist'] as $fname => $atts) {
$dest_dir = $this->phpdir . DIRECTORY_SEPARATOR;
if (isset($atts['baseinstalldir'])) {
$dest_dir .= $atts['baseinstalldir'] . DIRECTORY_SEPARATOR;
}
if (dirname($fname) != '.') {
$dest_dir .= dirname($fname) . DIRECTORY_SEPARATOR;
}
$fname = $tmp_path . DIRECTORY_SEPARATOR . $fname;
$this->_installFile($fname, $dest_dir, $atts);
}
$fname = $tmp_path . DIRECTORY_SEPARATOR . $fname;
$this->_installFile($fname, $dest_dir, $atts);
}
}
// Register that the package is installed -----------------------
$this->registry->addPackage($pkginfo['package'], $pkginfo);
chdir($oldcwd);
return true;
@@ -251,16 +255,19 @@ class PEAR_Installer extends PEAR_Common
return $this->raiseError("is not installed");
}
$info = $this->registry->packageInfo($package);
foreach ($info['filelist'] as $file => $props) {
$base = (isset($props['baseinstalldir'])) ? $props['baseinstalldir'] : '';
$path = PEAR_INSTALL_DIR . DIRECTORY_SEPARATOR . $base .
DIRECTORY_SEPARATOR . $file;
if (!@unlink($path)) {
$this->log(2, "unable to delete: $path");
} else {
$this->log(2, "+ deleted file: $path");
if (empty($options['register_only'])) {
foreach ($info['filelist'] as $file => $props) {
$base = (isset($props['baseinstalldir'])) ? $props['baseinstalldir'] : '';
$path = PEAR_INSTALL_DIR . DIRECTORY_SEPARATOR . $base .
DIRECTORY_SEPARATOR . $file;
if (!@unlink($path)) {
$this->log(2, "unable to delete: $path");
} else {
$this->log(2, "+ deleted file: $path");
}
}
}
// Register that the package is no longer installed -------------
$this->registry->deletePackage($package);
return true;
}