Use the stored action in packagemeta::action_caption(), rather than working backwards from desired/installed/picked. --- package_meta.cc | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/package_meta.cc b/package_meta.cc index 8fad50d..b417fb0 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -426,19 +426,23 @@ packagemeta::LDesc () const std::string packagemeta::action_caption () const { - if (!desired && installed) - return "Uninstall"; - else if (!desired) - return "Skip"; - else if (desired == installed && picked()) - return packagedb::task == PackageDB_Install ? "Reinstall" : "Retrieve"; - else if (desired == installed && desired.sourcePackage() && srcpicked()) - /* FIXME: Redo source should come up if the tarball is already present locally */ - return "Source"; - else if (desired == installed) /* and neither src nor bin */ - return "Keep"; - else - return desired.Canonical_version (); + switch (_action) + { + case Uninstall_action: + return "Uninstall"; + case NoChange_action: + if (!desired) + return "Skip"; + if (desired.sourcePackage() && srcpicked()) + /* FIXME: Redo source should come up if the tarball is already present locally */ + return "Source"; + return "Keep"; + case Reinstall_action: + return packagedb::task == PackageDB_Install ? "Reinstall" : "Retrieve"; + case Install_action: + return desired.Canonical_version (); + } + return "Unknown"; } void -- 2.21.0