summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-private/private-output.cc49
-rwxr-xr-xtest/integration/test-apt-cli-list18
2 files changed, 33 insertions, 34 deletions
diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc
index e9b8037da..2ae112af4 100644
--- a/apt-private/private-output.cc
+++ b/apt-private/private-output.cc
@@ -190,45 +190,44 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, /*{{{*/
// raring/linux-kernel version [upradable: new-version]
// description
pkgPolicy *policy = CacheFile.GetPolicy();
- out << std::setiosflags(std::ios::left)
- << _config->Find("APT::Color::Highlight", "")
- << name_str
- << _config->Find("APT::Color::Neutral", "")
- << "/" << suite
- << " ";
+ std::string VersionStr = GetVersion(CacheFile, V);
+ std::string CandidateVerStr = GetCandidateVersion(CacheFile, P);
+ std::string InstalledVerStr = GetInstalledVersion(CacheFile, P);
+ std::string StatusStr;
if(P.CurrentVer() == V && state.Upgradable()) {
- out << GetVersion(CacheFile, V)
- << " "
- << "[" << _("installed,upgradable to: ")
- << GetCandidateVersion(CacheFile, P) << "]";
+ strprintf(StatusStr, _("[installed,upgradable to: %s]"),
+ CandidateVerStr.c_str());
} else if (P.CurrentVer() == V) {
- out << GetVersion(CacheFile, V)
- << " ";
if(!V.Downloadable())
- out << _("[installed,local]");
+ StatusStr = _("[installed,local]");
else
if(V.Automatic() && state.Garbage)
- out << _("[installed,auto-removable]");
+ StatusStr = _("[installed,auto-removable]");
else if (state.Flags & pkgCache::Flag::Auto)
- out << _("[installed,automatic]");
+ StatusStr = _("[installed,automatic]");
else
- out << _("[installed]");
+ StatusStr = _("[installed]");
} else if (P.CurrentVer() &&
policy->GetCandidateVer(P) == V &&
state.Upgradable()) {
- out << GetVersion(CacheFile, V)
- << " "
- << _("[upgradable from: ")
- << GetInstalledVersion(CacheFile, P) << "]";
+ strprintf(StatusStr, _("[upgradable from: %s]"),
+ InstalledVerStr.c_str());
} else {
if (V.ParentPkg()->CurrentState == pkgCache::State::ConfigFiles)
- out << GetVersion(CacheFile, V)
- << " "
- << _("[residual-config]");
+ StatusStr = _("[residual-config]");
else
- out << GetVersion(CacheFile, V);
+ StatusStr = "";
}
- out << " " << GetArchitecture(CacheFile, P);
+ out << std::setiosflags(std::ios::left)
+ << _config->Find("APT::Color::Highlight", "")
+ << name_str
+ << _config->Find("APT::Color::Neutral", "")
+ << "/" << suite
+ << " "
+ << VersionStr << " "
+ << GetArchitecture(CacheFile, P);
+ if (StatusStr != "")
+ out << " " << StatusStr;
if (include_summary)
{
out << std::endl
diff --git a/test/integration/test-apt-cli-list b/test/integration/test-apt-cli-list
index 8d5df9051..47507aeb8 100755
--- a/test/integration/test-apt-cli-list
+++ b/test/integration/test-apt-cli-list
@@ -18,30 +18,30 @@ setupaptarchive
APTARCHIVE=$(readlink -f ./aptarchive)
testequal "Listing...
-bar/now 1.0 [installed,local] i386
+bar/now 1.0 i386 [installed,local]
foo/unstable 1.0 all
-foobar/unstable 2.0 [upgradable from: 1.0] i386" apt list
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list
testequal "Listing...
foo/unstable 1.0 all
-foobar/unstable 2.0 [upgradable from: 1.0] i386" apt list "foo*"
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list "foo*"
testequal "Listing...
-foobar/unstable 2.0 [upgradable from: 1.0] i386" apt list --upgradable
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list --upgradable
# FIXME: hm, hm - does it make sense to have this different? shouldn't
# we use "installed,upgradable" consitently?
testequal "Listing...
-bar/now 1.0 [installed,local] i386
-foobar/now 1.0 [installed,upgradable to: 2.0] i386" apt list --installed
+bar/now 1.0 i386 [installed,local]
+foobar/now 1.0 i386 [installed,upgradable to: 2.0]" apt list --installed
testequal "Listing...
-foobar/unstable 2.0 [upgradable from: 1.0] i386
-foobar/now 1.0 [installed,upgradable to: 2.0] i386
+foobar/unstable 2.0 i386 [upgradable from: 1.0]
+foobar/now 1.0 i386 [installed,upgradable to: 2.0]
" apt list foobar --all-versions
testequal "Listing...
-bar/now 1.0 [installed,local] i386
+bar/now 1.0 i386 [installed,local]
an autogenerated dummy bar=1.0/installed
" apt list bar --verbose