Package: cupt
Version: 2.9.0~
Severity: wishlist
Tags: patch

Hi!

Some time ago I went hunting for instances of old Status field values,
and found cupt used them (probably inspired by apt's code or docs).
So let's clean this up. More details in the commit message. :)

The patch is not build-tested, and I'm not sure if this breaks ABI,
as I've not checked the structure of the source and how it percolates
into the shared library, etc.

Thanks,
Guillem
From c4c029f13c68e9e024ec51b060c4d13fdd05ad95 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guil...@debian.org>
Date: Wed, 8 Oct 2014 13:07:03 +0200
Subject: [PATCH] Update Status field values handling

Remove long obsolete (hold, hold-reinstreq, removal-failed) or just
wrong (post-inst-failed vs postinst-failed) values, that have been
autoconverted by dpkg at run-time to their new equivalents, so there
should not be any such instance in any recent system (removal-failed
since dpkg 1.1.4 in Apr 1996, hold and hold-reinstreq since dpkg
1.2.0 in May 1996). dpkg even stopped doing the mapping in 1.15.4
and 1.15.8 respectively.
---
 cpp/lib/include/cupt/system/state.hpp    | 4 ++--
 cpp/lib/src/internal/worker/packages.cpp | 2 +-
 cpp/lib/src/system/state.cpp             | 7 +------
 3 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/cpp/lib/include/cupt/system/state.hpp b/cpp/lib/include/cupt/system/state.hpp
index ac6b904..d3c638f 100644
--- a/cpp/lib/include/cupt/system/state.hpp
+++ b/cpp/lib/include/cupt/system/state.hpp
@@ -54,14 +54,14 @@ class CUPT_API State
 		struct Flag
 		{
 			/// type
-			enum Type { Ok, Reinstreq, Hold, HoldAndReinstreq, Count };
+			enum Type { Ok, Reinstreq, Count };
 		};
 		/// package installation status
 		struct Status
 		{
 			/// type
 			enum Type { NotInstalled, Unpacked, HalfConfigured, HalfInstalled, ConfigFiles,
-				PostInstFailed, RemovalFailed, Installed, TriggersPending, TriggersAwaited, Count };
+				Installed, TriggersPending, TriggersAwaited, Count };
 			static const string strings[]; ///< string values of correspoding types
 		};
 		Want::Type want;
diff --git a/cpp/lib/src/internal/worker/packages.cpp b/cpp/lib/src/internal/worker/packages.cpp
index 9e06135..ccce442 100644
--- a/cpp/lib/src/internal/worker/packages.cpp
+++ b/cpp/lib/src/internal/worker/packages.cpp
@@ -1535,7 +1535,7 @@ void __set_force_options_for_removals_if_needed(const Cache& cache,
 								packageName);
 					}
 					typedef system::State::InstalledRecord::Flag IRFlag;
-					if (installedRecord->flag == IRFlag::Reinstreq || installedRecord->flag == IRFlag::HoldAndReinstreq)
+					if (installedRecord->flag == IRFlag::Reinstreq)
 					{
 						actionGroupIt->dpkgFlags.insert("--force-remove-reinstreq");
 						removeReinstreqFlagIsSet = true;
diff --git a/cpp/lib/src/system/state.cpp b/cpp/lib/src/system/state.cpp
index db8bb2b..122e688 100644
--- a/cpp/lib/src/system/state.cpp
+++ b/cpp/lib/src/system/state.cpp
@@ -84,8 +84,6 @@ void parseStatusSubstrings(const string& packageName, const string& input, Insta
 #define CHECK_FLAG(str, value) if (current.equal(BUFFER_AND_SIZE(str))) { installedRecord->flag = InstalledRecord::Flag:: value; } else
 		CHECK_FLAG("ok", Ok)
 		CHECK_FLAG("reinstreq", Reinstreq)
-		CHECK_FLAG("hold", Hold)
-		CHECK_FLAG("hold-reinstreq", HoldAndReinstreq)
 		{ // else
 			fatal2(__("malformed '%s' status indicator (for the package '%s')"), "error", packageName);
 		}
@@ -106,8 +104,6 @@ void parseStatusSubstrings(const string& packageName, const string& input, Insta
 		CHECK_STATUS("unpacked", Unpacked)
 		CHECK_STATUS("half-configured", HalfConfigured)
 		CHECK_STATUS("half-installed", HalfInstalled)
-		CHECK_STATUS("post-inst-failed", PostInstFailed)
-		CHECK_STATUS("removal-failed", RemovalFailed)
 		CHECK_STATUS("triggers-pending", TriggersPending)
 		CHECK_STATUS("triggers-awaited", TriggersAwaited)
 		{ // else
@@ -300,7 +296,6 @@ vector< string > State::getReinstallRequiredPackageNames() const
 		const InstalledRecord::Flag::Type& flag = it->second->flag;
 		const InstalledRecord::Status::Type& status = it->second->status;
 		if (flag == InstalledRecord::Flag::Reinstreq ||
-				flag == InstalledRecord::Flag::HoldAndReinstreq ||
 				status == InstalledRecord::Status::HalfInstalled)
 		{
 			result.push_back(it->first);
@@ -317,7 +312,7 @@ string State::getArchitecture() const
 
 const string State::InstalledRecord::Status::strings[] = {
 	N__("not installed"), N__("unpacked"), N__("half-configured"), N__("half-installed"),
-	N__("config files"), N__("postinst failed"), N__("removal failed"), N__("installed")
+	N__("config files"), N__("installed")
 };
 
 }
-- 
2.1.1.391.g7a54a76

Reply via email to