]> granicus.if.org Git - php/commitdiff
files that are not installed should be removed from the
authorTomas V.V.Cox <cox@php.net>
Tue, 21 May 2002 09:19:46 +0000 (09:19 +0000)
committerTomas V.V.Cox <cox@php.net>
Tue, 21 May 2002 09:19:46 +0000 (09:19 +0000)
registered file list (TODO--)

pear/PEAR/Installer.php

index 1426097bbaa62ee269c0095e7e1fa4e23b3da8dd..86bf72f44e5dd1343f294d70bad998d1834cd6eb 100644 (file)
@@ -23,10 +23,6 @@ require_once 'PEAR/Common.php';
 require_once 'PEAR/Registry.php';
 require_once 'PEAR/Dependency.php';
 
-// TODO:
-// * files that are not installed should be removed from the
-//   registered file list.
-
 /**
  * Administration class used to install PEAR packages and maintain the
  * installed package database.
@@ -427,7 +423,7 @@ class PEAR_Installer extends PEAR_Common
         // Copy files to dest dir ---------------------------------------
 
         // info from the package it self we want to access from _installFile
-        $this->pkginfo = $pkginfo;
+        $this->pkginfo = &$pkginfo;
         if (empty($options['register-only'])) {
             if (!is_dir($this->config->get('php_dir'))) {
                 return $this->raiseError("no script destination directory\n",
@@ -450,8 +446,13 @@ class PEAR_Installer extends PEAR_Common
 
             foreach ($pkginfo['filelist'] as $file => $atts) {
                 $res = $this->_installFile($file, $atts, $tmp_path);
-                if (!$res && empty($options['force'])) {
-                    return null;
+                if (!$res) {
+                    // If file can't be installed and 'force' is not set, abort
+                    if (empty($options['force'])) {
+                        return null;
+                    }
+                    // Do not register not installed files
+                    unset($pkginfo['filelist'][$file]);
                 }
             }
         }
@@ -462,9 +463,9 @@ class PEAR_Installer extends PEAR_Common
             if (!empty($options['force']) && $this->registry->packageExists($pkgname)) {
                 $this->registry->deletePackage($pkgname);
             }
-            $ret = $this->registry->addPackage($pkgname, $this->pkginfo);
+            $ret = $this->registry->addPackage($pkgname, $pkginfo);
         } else {
-            $ret = $this->registry->updatePackage($pkgname, $this->pkginfo, false);
+            $ret = $this->registry->updatePackage($pkgname, $pkginfo, false);
         }
         if (!$ret) {
             return null;