--- ../../cvs_ro/pear-core/PEAR/Command/Registry.php	2007-03-18 20:48:19.000000000 +0100
+++ PEAR/PEAR/Command/Registry.php	2007-03-25 19:35:47.000000000 +0200
@@ -145,51 +145,35 @@
         $data = array(
             'caption' => 'Installed packages, channel ' .
                 $channel . ':',
             'border' => true,
-            'headline' => array('Package', 'Version', 'State')
+            'headline' => array('Channel', 'Package', 'Version', 'State'),
+            'channel' => $channel,
             );
         foreach ($installed as $package) {
             $pobj = $reg->getPackage(isset($package['package']) ?
                                         $package['package'] : $package['name'], $channel);
-            $data['data'][] = array($pobj->getPackage(), $pobj->getVersion(),
+            $data['data'][] = array($channel,
+                                    $pobj->getPackage(),
+                                    $pobj->getVersion(),
                                     $pobj->getState() ? $pobj->getState() : null);
         }
         if (count($installed)==0) {
-            $data = '(no packages installed from channel ' . $channel . ')';
+            unset($data['headline']);
+            $data['data'] = '(no packages installed)';
         }
         $this->ui->outputData($data, $command);
         return true;
     }
     
     function doListAll($command, $options, $params)
     {
         $reg = &$this->config->getRegistry();
-        $installed = $reg->packageInfo(null, null, null);
-        foreach ($installed as $channel => $packages) {
-            usort($packages, array($this, '_sortinfo'));
-            $i = $j = 0;
-            $data = array(
-                'caption' => 'Installed packages, channel ' . $channel . ':',
-                'border' => true,
-                'headline' => array('Package', 'Version', 'State')
-                );
-            foreach ($packages as $package) {
-                $pobj = $reg->getPackage(isset($package['package']) ?
-                                            $package['package'] : $package['name'], $channel);
-                $data['data'][] = array($pobj->getPackage(), $pobj->getVersion(),
-                                        $pobj->getState() ? $pobj->getState() : null);
-            }
-            if (count($packages)==0) {
-                $data = array(
-                    'caption' => 'Installed packages, channel ' . $channel . ':',
-                    'border' => true,
-                    'data' => array(array('(no packages installed)')),
-                    );
-            }
-            $this->ui->outputData($data, $command);
+        $channels = $reg->getChannels();
+        foreach($channels as $channel) {
+            $options['channel'] = $channel->getName();
+            $this->doList($command, $options, $params);
         }
-        return true;
     }
     
     function doFileList($command, $options, $params)
     {
