summaryrefslogtreecommitdiff
path: root/cmdline
diff options
context:
space:
mode:
authorArch Librarian <arch@canonical.com>2004-09-20 17:01:16 +0000
committerArch Librarian <arch@canonical.com>2004-09-20 17:01:16 +0000
commita7e41689162c291afc6c8b9399c159d89859fc36 (patch)
treeda74ce7ebe0424cef2d7c25e2a5063474efddd0f /cmdline
parentfe8f82e5149bba8d0166bbbd06a33733d639ad68 (diff)
apt-get now prints out suggested and recommended packages.
Author: doogie Date: 2003-04-27 01:47:10 GMT apt-get now prints out suggested and recommended packages.
Diffstat (limited to 'cmdline')
-rw-r--r--cmdline/apt-get.cc65
1 files changed, 64 insertions, 1 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 4fa8a2600..bb0414c5e 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: apt-get.cc,v 1.127 2003/04/27 01:36:14 doogie Exp $
+// $Id: apt-get.cc,v 1.128 2003/04/27 01:47:10 doogie Exp $
/* ######################################################################
apt-get - Cover for dpkg
@@ -1504,6 +1504,69 @@ bool DoInstall(CommandLine &CmdL)
ShowList(c1out,_("The following extra packages will be installed:"),List,VersionsList);
}
+ /* Print out a list of suggested and recommended packages */
+ {
+ string SuggestsList, RecommendsList, List;
+ for (unsigned J = 0; J < Cache->Head().PackageCount; J++)
+ {
+ pkgCache::PkgIterator I(Cache,Cache.List[J]);
+
+ /* Just look at the ones we want to install */
+ if ((*Cache)[I].Install() == false)
+ continue;
+
+ for (pkgCache::VerIterator V = I.VersionList(); V.end() == false; V++)
+ {
+ for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++)
+ {
+ pkgCache::DepIterator Start;
+ pkgCache::DepIterator End;
+ D.GlobOr(Start,End);
+ do
+ {
+ if (Start->Type == pkgCache::Dep::Suggests) {
+
+ /* A suggests relations, let's see if we have it
+ installed already */
+
+ string target = string(Start.TargetPkg().Name()) + " ";
+ if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install)
+ break;
+ /* Does another package suggest it as well? If so,
+ don't print it twice */
+ if (int(SuggestsList.find(target)) > -1)
+ break;
+ SuggestsList += target;
+ }
+
+ if (Start->Type == pkgCache::Dep::Recommends) {
+
+ /* A recommends relation, let's see if we have it
+ installed already */
+
+ string target = string(Start.TargetPkg().Name()) + " ";
+ if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install)
+ break;
+
+ /* Does another package recommend it as well? If so,
+ don't print it twice */
+
+ if (int(RecommendsList.find(target)) > -1)
+ break;
+ RecommendsList += target;
+ }
+ if (Start == End)
+ break;
+ Start++;
+ } while (1);
+ }
+ }
+ }
+ ShowList(c1out,_("Suggested packages:"),SuggestsList);
+ ShowList(c1out,_("Recommended packages:"),RecommendsList);
+
+ }
+
// See if we need to prompt
if (Cache->InstCount() == ExpectedInst && Cache->DelCount() == 0)
return InstallPackages(Cache,false,false);