]> git.saurik.com Git - apt.git/commitdiff
Show "Manual-Installed: {yes|no}" in apt show
authorMichael Vogt <mvo@debian.org>
Fri, 24 Jan 2014 20:03:49 +0000 (21:03 +0100)
committerMichael Vogt <mvo@debian.org>
Fri, 24 Jan 2014 20:03:49 +0000 (21:03 +0100)
apt-private/private-show.cc
test/integration/test-apt-cli-show

index 244347421eb9ff9eb813a22fff7e21f6f71f7214..cee1328430cf215454667734289d66ed95c3a52d 100644 (file)
@@ -37,6 +37,9 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V,
    pkgCache *Cache = CacheFile.GetPkgCache();
    if (unlikely(Cache == NULL))
       return false;
+   pkgDepCache *depCache = CacheFile.GetDepCache();
+   if (unlikely(depCache == NULL))
+      return false;
 
    // Find an appropriate file
    pkgCache::VerFileIterator Vf = V.FileList();
@@ -73,6 +76,13 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V,
    else
       package_size = _("unknown");
 
+   pkgDepCache::StateCache &state = (*depCache)[V.ParentPkg()];
+   bool is_installed = V.ParentPkg().CurrentVer() == V;
+   const char *manual_installed;
+   if (is_installed)
+      manual_installed = !(state.Flags & pkgCache::Flag::Auto) ? "yes" : "no";
+   else
+      manual_installed = 0;
    std::string suite = GetArchiveSuite(CacheFile, V);
    TFRewriteData RW[] = {
       {"Conffiles",0},
@@ -81,8 +91,10 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V,
       {"Installed-Size", installed_size.c_str(), 0},
       {"Size", package_size.c_str(), "Download-Size"},
       {"Archive-Origin", suite.c_str(), 0},
+      {"Manual-Installed", manual_installed, 0},
       {}
    };
+
    if(TFRewrite(stdout, Tags, NULL, RW) == false)
       return _error->Error("Internal Error, Unable to parse a package record");
 
index ba56e3260efe92f7476d12da4aad2360edeb02ac..11a93f26811fa32fa6d5b4212c06d404b8486979 100755 (executable)
@@ -10,12 +10,14 @@ configarchitecture "i386"
 DESCR='Some description 
  That has multiple lines'
 insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR"
+insertinstalledpackage 'foo' 'all' '1.0'
 
 setupaptarchive
 
 APTARCHIVE=$(readlink -f ./aptarchive)
 
 # note that we do not display Description-md5 with the "apt" cmd
+# and also show some additional fields that are calculated
 testequal "Package: foo
 Priority: optional
 Section: other
@@ -25,7 +27,8 @@ Architecture: all
 Version: 1.0
 Filename: pool/main/foo/foo_1.0_all.deb
 Download-Size: unknown
-Archive-Origin: unstable
+Archive-Origin: unstable,now
+Manual-Installed: yes
 Description: Some description 
  That has multiple lines
 " apt show foo