/*}}}*/
// Include Files /*{{{*/
#include <apt-pkg/error.h>
+#include <cassert>
#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/cachefile.h>
#include <apt-pkg/init.h>
#include <apt-pkg/progress.h>
#include <apt-pkg/sourcelist.h>
bool Stats(CommandLine &Cmd)
{
pkgCache &Cache = *GCache;
- cout << _("Total package names: ") << Cache.Head().PackageCount << " (" <<
+ cout << _("Total package names: ") << Cache.Head().GroupCount << " (" <<
+ SizeToStr(Cache.Head().GroupCount*Cache.Head().GroupSz) << ')' << endl
+ << _("Total package structures: ") << Cache.Head().PackageCount << " (" <<
SizeToStr(Cache.Head().PackageCount*Cache.Head().PackageSz) << ')' << endl;
int Normal = 0;
return _error->Error("Write to stdout failed");
return true;
}
+
+
+/* show automatically installed packages (sorted) */
+bool ShowAuto(CommandLine &CmdL)
+{
+ OpProgress op;
+ pkgDepCache DepCache(GCache);
+ DepCache.Init(&op);
+
+ std::vector<string> packages;
+ packages.reserve(GCache->HeaderP->PackageCount / 3);
+
+ for (pkgCache::PkgIterator P = GCache->PkgBegin(); P.end() == false; P++)
+ if (DepCache[P].Flags & pkgCache::Flag::Auto)
+ packages.push_back(P.Name());
+
+ std::sort(packages.begin(), packages.end());
+
+ for (vector<string>::iterator I = packages.begin(); I != packages.end(); I++)
+ cout << *I << "\n";
+
+ return true;
+}
/*}}}*/
// ShowPackage - Dump the package record to the screen /*{{{*/
// ---------------------------------------------------------------------
" unmet - Show unmet dependencies\n"
" search - Search the package list for a regex pattern\n"
" show - Show a readable record for the package\n"
+ " showauto - Display a list of automatically installed packages\n"
" depends - Show raw dependency information for a package\n"
" rdepends - Show reverse dependency information for a package\n"
" pkgnames - List the names of all packages in the system\n"
{"xvcg",&XVcg},
{"show",&ShowPackage},
{"pkgnames",&ShowPkgNames},
+ {"showauto",&ShowAuto},
{"policy",&Policy},
{"madison",&Madison},
{0,0}};