cellog Sat Jan 7 17:51:55 2006 UTC Added files: (Branch: PHP_4_4) /php-src/pear/packages PEAR-1.4.6.tar
Removed files: /php-src/pear/packages PEAR-1.4.5.tar Modified files: /php-src/pear install-pear.php /php-src/pear/PEAR Dependency2.php Installer.php Registry.php /php-src/pear/PEAR/Command Install.php /php-src/pear/PEAR/Downloader Package.php Log: update to PEAR 1.4.6, add support for --packagingroot to local PEAR installer (needed for INSTALL_ROOT)
http://cvs.php.net/viewcvs.cgi/php-src/pear/install-pear.php?r1=1.6.2.14.4.6&r2=1.6.2.14.4.7&diff_format=u Index: php-src/pear/install-pear.php diff -u php-src/pear/install-pear.php:1.6.2.14.4.6 php-src/pear/install-pear.php:1.6.2.14.4.7 --- php-src/pear/install-pear.php:1.6.2.14.4.6 Mon Jan 2 15:24:33 2006 +++ php-src/pear/install-pear.php Sat Jan 7 17:51:54 2006 @@ -1,6 +1,6 @@ <?php -/* $Id: install-pear.php,v 1.6.2.14.4.6 2006/01/02 15:24:33 cellog Exp $ */ +/* $Id: install-pear.php,v 1.6.2.14.4.7 2006/01/07 17:51:54 cellog Exp $ */ error_reporting(E_ALL); $pear_dir = dirname(__FILE__); @@ -46,6 +46,9 @@ } elseif ($arg == '-b') { $bin_dir = $argv[$i+1]; $i++; + } elseif ($arg == '-p') { + $php_bin = $argv[$i+1]; + $i++; } elseif ($arg == '--debug') { $debug = 1; } elseif ($arg == '--extremedebug') { @@ -89,6 +92,9 @@ $config->set('cache_dir', $cdir); } } +if (!empty($php_bin)) { + $config->set('php_bin', $php_bin); +} /* Print PEAR Conf (useful for debuging do NOT REMOVE) */ if ($debug) { sort($keys); @@ -107,11 +113,12 @@ $options['upgrade'] = true; $install_root = getenv('INSTALL_ROOT'); if (!empty($install_root)) { - $options['installroot'] = $install_root; - $config->setInstallRoot($install_root); + $options['packagingroot'] = $install_root; + $reg = &new PEAR_Registry($options['packagingroot']); +} else { + $reg = $config->getRegistry('default'); } -$reg = $config->getRegistry('default'); $ui = &PEAR_Frontend::singleton('PEAR_Frontend_CLI'); $installer = &new PEAR_Installer($ui); $pkg = &new PEAR_PackageFile($config, $debug); http://cvs.php.net/viewcvs.cgi/php-src/pear/PEAR/Dependency2.php?r1=1.1.2.2&r2=1.1.2.3&diff_format=u Index: php-src/pear/PEAR/Dependency2.php diff -u php-src/pear/PEAR/Dependency2.php:1.1.2.2 php-src/pear/PEAR/Dependency2.php:1.1.2.3 --- php-src/pear/PEAR/Dependency2.php:1.1.2.2 Sat Nov 5 18:03:10 2005 +++ php-src/pear/PEAR/Dependency2.php Sat Jan 7 17:51:54 2006 @@ -15,7 +15,7 @@ * @author Greg Beaver <[EMAIL PROTECTED]> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Dependency2.php,v 1.1.2.2 2005/11/05 18:03:10 cellog Exp $ + * @version CVS: $Id: Dependency2.php,v 1.1.2.3 2006/01/07 17:51:54 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 1.4.0a1 */ @@ -85,11 +85,18 @@ $state = PEAR_VALIDATE_INSTALLING) { $this->_config = &$config; - $this->_registry = &$config->getRegistry(); if (!class_exists('PEAR_DependencyDB')) { require_once 'PEAR/DependencyDB.php'; } + if (isset($installoptions['packagingroot'])) { + // make sure depdb is in the right location + $config->setInstallRoot($installoptions['packagingroot']); + } + $this->_registry = &$config->getRegistry(); $this->_dependencydb = &PEAR_DependencyDB::singleton($config); + if (isset($installoptions['packagingroot'])) { + $config->setInstallRoot(false); + } $this->_options = $installoptions; $this->_state = $state; if (!class_exists('OS_Guess')) { http://cvs.php.net/viewcvs.cgi/php-src/pear/PEAR/Installer.php?r1=1.81.2.27.2.2&r2=1.81.2.27.2.3&diff_format=u Index: php-src/pear/PEAR/Installer.php diff -u php-src/pear/PEAR/Installer.php:1.81.2.27.2.2 php-src/pear/PEAR/Installer.php:1.81.2.27.2.3 --- php-src/pear/PEAR/Installer.php:1.81.2.27.2.2 Sat Nov 5 18:24:20 2005 +++ php-src/pear/PEAR/Installer.php Sat Jan 7 17:51:54 2006 @@ -18,7 +18,7 @@ * @author Greg Beaver <[EMAIL PROTECTED]> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Installer.php,v 1.81.2.27.2.2 2005/11/05 18:24:20 cellog Exp $ + * @version CVS: $Id: Installer.php,v 1.81.2.27.2.3 2006/01/07 17:51:54 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 0.1 */ @@ -282,6 +282,15 @@ DIRECTORY_SEPARATOR), array($dest_file, $orig_file)); $final_dest_file = $installed_as = $dest_file; + if (isset($this->_options['packagingroot'])) { + $installedas_dest_dir = dirname($final_dest_file); + $installedas_dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); + $final_dest_file = $this->_prependPath($final_dest_file, + $this->_options['packagingroot']); + } else { + $installedas_dest_dir = dirname($final_dest_file); + $installedas_dest_file = $installedas_dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); + } $dest_dir = dirname($final_dest_file); $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); // }}} @@ -429,7 +438,7 @@ $atts['role'] == 'ext')); // Store the full path where the file was installed for easy unistall $this->addFileOperation("installed_as", array($file, $installed_as, - $save_destdir, dirname(substr($dest_file, strlen($save_destdir))))); + $save_destdir, dirname(substr($installedas_dest_file, strlen($save_destdir))))); //$this->log(2, "installed: $dest_file"); return PEAR_INSTALLER_OK; @@ -474,6 +483,10 @@ list($save_destdir, $dest_dir, $dest_file, $orig_file) = $info; } $final_dest_file = $installed_as = $dest_file; + if (isset($this->_options['packagingroot'])) { + $final_dest_file = $this->_prependPath($final_dest_file, + $this->_options['packagingroot']); + } $dest_dir = dirname($final_dest_file); $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); // }}} @@ -980,22 +993,38 @@ $pkgname = $pkg->getName(); $channel = $pkg->getChannel(); + if (isset($this->_options['packagingroot'])) { + $packrootphp_dir = $this->_prependPath( + $this->config->get('php_dir', null, 'pear.php.net'), + $this->_options['packagingroot']); + } if (isset($options['installroot'])) { $this->config->setInstallRoot($options['installroot']); $this->_registry = &$this->config->getRegistry(); + $installregistry = &$this->_registry; $this->installroot = ''; // all done automagically now } else { $this->config->setInstallRoot(false); $this->_registry = &$this->config->getRegistry(); + if (isset($this->_options['packagingroot'])) { + $installregistry = &new PEAR_Registry($packrootphp_dir); + $php_dir = $packrootphp_dir; + } else { + $installregistry = &$this->_registry; + $php_dir = $this->config->get('php_dir', null, $channel); + } $this->installroot = ''; } - $php_dir = $this->config->get('php_dir', null, $channel); // {{{ checks to do when not in "force" mode if (empty($options['force']) && @is_dir($this->config->get('php_dir'))) { $testp = $channel == 'pear.php.net' ? $pkgname : array($channel, $pkgname); - $test = $this->_registry->checkFileMap($pkg->getInstallationFileList(true), $testp, '1.1'); + $instfilelist = $pkg->getInstallationFileList(true); + if (PEAR::isError($instfilelist)) { + return $instfilelist; + } + $test = $installregistry->checkFileMap($instfilelist, $testp, '1.1'); if (PEAR::isError($test)) { return $test; } @@ -1010,7 +1039,7 @@ } if ($found) { // subpackages can conflict with earlier versions of parent packages - $parentreg = $this->_registry->packageInfo($param->getPackage(), null, $param->getChannel()); + $parentreg = $installregistry->packageInfo($param->getPackage(), null, $param->getChannel()); $tmp = $test; foreach ($tmp as $file => $info) { if (is_array($info)) { @@ -1031,7 +1060,7 @@ } $pfk = &new PEAR_PackageFile($this->config); $parentpkg = &$pfk->fromArray($parentreg); - $this->_registry->updatePackage2($parentpkg); + $installregistry->updatePackage2($parentpkg); } if ($param->getChannel() == 'pecl.php.net' && isset($options['upgrade'])) { $tmp = $test; @@ -1073,12 +1102,12 @@ if (empty($options['upgrade']) && empty($options['soft'])) { // checks to do only when installing new packages if ($channel == 'pecl.php.net') { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); if (!$test) { - $test = $this->_registry->packageExists($pkgname, 'pear.php.net'); + $test = $installregistry->packageExists($pkgname, 'pear.php.net'); } } else { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); } if (empty($options['force']) && $test) { return $this->raiseError("$channel/$pkgname is already installed"); @@ -1086,16 +1115,16 @@ } else { $usechannel = $channel; if ($channel == 'pecl.php.net') { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); if (!$test) { - $test = $this->_registry->packageExists($pkgname, 'pear.php.net'); + $test = $installregistry->packageExists($pkgname, 'pear.php.net'); $usechannel = 'pear.php.net'; } } else { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); } if ($test) { - $v1 = $this->_registry->packageInfo($pkgname, 'version', $usechannel); + $v1 = $installregistry->packageInfo($pkgname, 'version', $usechannel); $v2 = $pkg->getVersion(); $cmp = version_compare("$v1", "$v2", 'gt'); if (empty($options['force']) && !version_compare("$v2", "$v1", 'gt')) { @@ -1151,7 +1180,7 @@ return $filelist; } $pkg->resetFilelist(); - $pkg->setLastInstalledVersion($this->_registry->packageInfo($pkg->getPackage(), + $pkg->setLastInstalledVersion($installregistry->packageInfo($pkg->getPackage(), 'version', $pkg->getChannel())); foreach ($filelist as $file => $atts) { if ($pkg->getPackagexmlVersion() == '1.0') { @@ -1211,39 +1240,39 @@ // if 'force' is used, replace the info in registry $usechannel = $channel; if ($channel == 'pecl.php.net') { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); if (!$test) { - $test = $this->_registry->packageExists($pkgname, 'pear.php.net'); + $test = $installregistry->packageExists($pkgname, 'pear.php.net'); $usechannel = 'pear.php.net'; } } else { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); } if (!empty($options['force']) && $test) { - $oldversion = $this->_registry->packageInfo($pkgname, 'version', $usechannel); - $this->_registry->deletePackage($pkgname, $usechannel); + $oldversion = $installregistry->packageInfo($pkgname, 'version', $usechannel); + $installregistry->deletePackage($pkgname, $usechannel); } - $ret = $this->_registry->addPackage2($pkg); + $ret = $installregistry->addPackage2($pkg); } else { $usechannel = $channel; if ($channel == 'pecl.php.net') { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); if (!$test) { - $test = $this->_registry->packageExists($pkgname, 'pear.php.net'); + $test = $installregistry->packageExists($pkgname, 'pear.php.net'); $usechannel = 'pear.php.net'; } } else { - $test = $this->_registry->packageExists($pkgname, $channel); + $test = $installregistry->packageExists($pkgname, $channel); } // new: upgrade installs a package if it isn't installed if (!$test) { - $ret = $this->_registry->addPackage2($pkg); + $ret = $installregistry->addPackage2($pkg); } else { if ($usechannel != $channel) { - $this->_registry->deletePackage($pkgname, $usechannel); - $ret = $this->_registry->addPackage2($pkg); + $installregistry->deletePackage($pkgname, $usechannel); + $ret = $installregistry->addPackage2($pkg); } else { - $ret = $this->_registry->updatePackage2($pkg); + $ret = $installregistry->updatePackage2($pkg); } $installphase = 'upgrade'; } http://cvs.php.net/viewcvs.cgi/php-src/pear/PEAR/Registry.php?r1=1.35.2.18.2.1&r2=1.35.2.18.2.2&diff_format=u Index: php-src/pear/PEAR/Registry.php diff -u php-src/pear/PEAR/Registry.php:1.35.2.18.2.1 php-src/pear/PEAR/Registry.php:1.35.2.18.2.2 --- php-src/pear/PEAR/Registry.php:1.35.2.18.2.1 Wed Nov 2 16:57:21 2005 +++ php-src/pear/PEAR/Registry.php Sat Jan 7 17:51:54 2006 @@ -17,7 +17,7 @@ * @author Greg Beaver <[EMAIL PROTECTED]> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Registry.php,v 1.35.2.18.2.1 2005/11/02 16:57:21 cellog Exp $ + * @version CVS: $Id: Registry.php,v 1.35.2.18.2.2 2006/01/07 17:51:54 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 0.1 */ @@ -690,7 +690,7 @@ { $fp = @fopen($this->filemap, 'r'); if (!$fp) { - return $this->raiseError('PEAR_Registry: could not open filemap', PEAR_REGISTRY_ERROR_FILE, null, null, $php_errormsg); + return $this->raiseError('PEAR_Registry: could not open filemap "' . $this->filemap . '"', PEAR_REGISTRY_ERROR_FILE, null, null, $php_errormsg); } clearstatcache(); $rt = get_magic_quotes_runtime(); http://cvs.php.net/viewcvs.cgi/php-src/pear/PEAR/Command/Install.php?r1=1.38.2.15.2.1&r2=1.38.2.15.2.2&diff_format=u Index: php-src/pear/PEAR/Command/Install.php diff -u php-src/pear/PEAR/Command/Install.php:1.38.2.15.2.1 php-src/pear/PEAR/Command/Install.php:1.38.2.15.2.2 --- php-src/pear/PEAR/Command/Install.php:1.38.2.15.2.1 Wed Nov 2 16:57:22 2005 +++ php-src/pear/PEAR/Command/Install.php Sat Jan 7 17:51:54 2006 @@ -16,7 +16,7 @@ * @author Greg Beaver <[EMAIL PROTECTED]> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Install.php,v 1.38.2.15.2.1 2005/11/02 16:57:22 cellog Exp $ + * @version CVS: $Id: Install.php,v 1.38.2.15.2.2 2006/01/07 17:51:54 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 0.1 */ @@ -81,7 +81,12 @@ 'installroot' => array( 'shortopt' => 'R', 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', + 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', + ), + 'packagingroot' => array( + 'shortopt' => 'P', + 'arg' => 'DIR', + 'doc' => 'root directory used when packaging files, like RPM packaging', ), 'ignore-errors' => array( 'doc' => 'force install even if there were errors', @@ -162,7 +167,12 @@ 'installroot' => array( 'shortopt' => 'R', 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', + 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', + ), + 'packagingroot' => array( + 'shortopt' => 'P', + 'arg' => 'DIR', + 'doc' => 'root directory used when packaging files, like RPM packaging', ), 'ignore-errors' => array( 'doc' => 'force install even if there were errors', @@ -218,7 +228,12 @@ 'installroot' => array( 'shortopt' => 'R', 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', + 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', + ), + 'packagingroot' => array( + 'shortopt' => 'P', + 'arg' => 'DIR', + 'doc' => 'root directory used when packaging files, like RPM packaging', ), 'ignore-errors' => array( 'doc' => 'force install even if there were errors', @@ -343,6 +358,12 @@ if ($command == 'upgrade') { $options['upgrade'] = true; } + if (isset($options['installroot']) && isset($options['packagingroot'])) { + return $this->raiseError('ERROR: cannot use both --installroot and --packagingroot'); + } + if (isset($options['packagingroot']) && $this->config->get('verbose') > 2) { + $this->ui->outputData('using package root: ' . $options['packagingroot']); + } $reg = &$this->config->getRegistry(); if ($command == 'upgrade-all') { $options['upgrade'] = true; http://cvs.php.net/viewcvs.cgi/php-src/pear/PEAR/Downloader/Package.php?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/pear/PEAR/Downloader/Package.php diff -u php-src/pear/PEAR/Downloader/Package.php:1.1.2.1 php-src/pear/PEAR/Downloader/Package.php:1.1.2.2 --- php-src/pear/PEAR/Downloader/Package.php:1.1.2.1 Wed Nov 2 16:57:24 2005 +++ php-src/pear/PEAR/Downloader/Package.php Sat Jan 7 17:51:54 2006 @@ -15,7 +15,7 @@ * @author Greg Beaver <[EMAIL PROTECTED]> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Package.php,v 1.1.2.1 2005/11/02 16:57:24 cellog Exp $ + * @version CVS: $Id: Package.php,v 1.1.2.2 2006/01/07 17:51:54 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 1.4.0a1 */ @@ -63,6 +63,11 @@ */ var $_registry; /** + * Used to implement packagingroot properly + * @var PEAR_Registry + */ + var $_installRegistry; + /** * @var PEAR_PackageFile_v1|PEAR_PackageFile|v2 */ var $_packagefile; @@ -117,13 +122,21 @@ var $_validated = false; /** - * @param PEAR_Config + * @param PEAR_Downloader */ function PEAR_Downloader_Package(&$downloader) { $this->_downloader = &$downloader; $this->_config = &$this->_downloader->config; $this->_registry = &$this->_config->getRegistry(); + $options = $downloader->getOptions(); + if (isset($options['packagingroot'])) { + $this->_config->setInstallRoot($options['packagingroot']); + $this->_installRegistry = &$this->_config->getRegistry(); + $this->_config->setInstallRoot(false); + } else { + $this->_installRegistry = &$this->_registry; + } $this->_valid = $this->_analyzed = false; } @@ -345,8 +358,8 @@ foreach ($params as $i => $param) { // remove self if already installed with this version // this does not need any pecl magic - we only remove exact matches - if ($param->_registry->packageExists($param->getPackage(), $param->getChannel())) { - if (version_compare($param->_registry->packageInfo($param->getPackage(), 'version', + if ($param->_installRegistry->packageExists($param->getPackage(), $param->getChannel())) { + if (version_compare($param->_installRegistry->packageInfo($param->getPackage(), 'version', $param->getChannel()), $param->getVersion(), '==')) { if (!isset($options['force'])) { $info = $param->getParsedPackage(); @@ -356,7 +369,7 @@ $param->_downloader->log(1, 'Skipping package "' . $param->getShortName() . '", already installed as version ' . - $param->_registry->packageInfo($param->getPackage(), + $param->_installRegistry->packageInfo($param->getPackage(), 'version', $param->getChannel())); } $params[$i] = false; @@ -367,7 +380,7 @@ $param->_downloader->log(1, 'Skipping package "' . $param->getShortName() . '", already installed as version ' . - $param->_registry->packageInfo($param->getPackage(), 'version', + $param->_installRegistry->packageInfo($param->getPackage(), 'version', $param->getChannel())); $params[$i] = false; } @@ -569,7 +582,7 @@ // we can't determine whether upgrade is necessary until we know what // version would be downloaded if (!isset($options['force']) && $this->isInstalled($ret, $oper)) { - $version = $this->_registry->packageInfo($dep['name'], 'version', + $version = $this->_installRegistry->packageInfo($dep['name'], 'version', $dep['channel']); $dep['package'] = $dep['name']; if (!isset($options['soft'])) { @@ -645,7 +658,7 @@ $chan = 'pecl.php.net'; $url = $this->_downloader->_getDepPackageDownloadUrl($newdep, $pname); - $obj = &$this->_registry->getPackage($dep['name']); + $obj = &$this->_installRegistry->getPackage($dep['name']); if (PEAR::isError($url)) { PEAR::popErrorHandling(); if ($obj !== null && $this->isInstalled($obj, $dep['rel'])) { @@ -724,10 +737,10 @@ 'optional'; $dep['package'] = $dep['name']; if (isset($newdep)) { - $version = $this->_registry->packageInfo($newdep['name'], 'version', + $version = $this->_installRegistry->packageInfo($newdep['name'], 'version', $newdep['channel']); } else { - $version = $this->_registry->packageInfo($dep['name'], 'version'); + $version = $this->_installRegistry->packageInfo($dep['name'], 'version'); } $dep['version'] = $url['version']; if (!isset($options['soft'])) { @@ -1075,21 +1088,21 @@ } } $options = $this->_downloader->getOptions(); - $test = $this->_registry->packageExists($package, $channel); + $test = $this->_installRegistry->packageExists($package, $channel); if (!$test && $channel == 'pecl.php.net') { // do magic to allow upgrading from old pecl packages to new ones - $test = $this->_registry->packageExists($package, 'pear.php.net'); + $test = $this->_installRegistry->packageExists($package, 'pear.php.net'); $channel = 'pear.php.net'; } if ($test) { if (isset($dep['uri'])) { - if ($this->_registry->packageInfo($package, 'uri', '__uri') == $dep['uri']) { + if ($this->_installRegistry->packageInfo($package, 'uri', '__uri') == $dep['uri']) { return true; } } if (isset($options['upgrade'])) { if ($oper == 'has') { - if (version_compare($this->_registry->packageInfo( + if (version_compare($this->_installRegistry->packageInfo( $package, 'version', $channel), $dep['version'], '>=')) { return true; @@ -1097,7 +1110,7 @@ return false; } } else { - if (version_compare($this->_registry->packageInfo( + if (version_compare($this->_installRegistry->packageInfo( $package, 'version', $channel), $dep['version'], '>=')) { return true; http://cvs.php.net/viewcvs.cgi/php-src/pear/packages/PEAR-1.4.6.tar?view=markup&rev=1.1 Index: php-src/pear/packages/PEAR-1.4.6.tar +++ php-src/pear/packages/PEAR-1.4.6.tar
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php