summaryrefslogtreecommitdiff
path: root/src/enquiry.c
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2012-04-27 05:30:00 +0200
committerGuillem Jover <guillem@debian.org>2012-04-27 10:04:24 +0200
commitf45abe4758e705b6c3231ba9a34ac066530b27e4 (patch)
treeec0c9ea214eaac66d5b71a7170b37cf543daf39d /src/enquiry.c
parent63d60245748acb6095e8e28ae2d86bfffd2e9fad (diff)
downloaddpkg-f45abe4758e705b6c3231ba9a34ac066530b27e4.tar.gz
dpkg: Add missing list and md5sums database file checks to --audit
This will report about any package missing the list or md5sums files from the database, so that they can be reinstalled.
Diffstat (limited to 'src/enquiry.c')
-rw-r--r--src/enquiry.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/enquiry.c b/src/enquiry.c
index 1dfa6c41c..e039529a0 100644
--- a/src/enquiry.c
+++ b/src/enquiry.c
@@ -47,6 +47,7 @@
#include <dpkg/options.h>
#include "filesdb.h"
+#include "infodb.h"
#include "main.h"
struct badstatinfo {
@@ -73,6 +74,14 @@ bsyn_status(struct pkginfo *pkg, const struct badstatinfo *bsi)
}
static bool
+bsyn_infofile(struct pkginfo *pkg, const struct badstatinfo *bsi)
+{
+ if (pkg->status < stat_halfinstalled)
+ return false;
+ return !pkg_infodb_has_file(pkg, &pkg->installed, bsi->value.string);
+}
+
+static bool
bsyn_arch(struct pkginfo *pkg, const struct badstatinfo *bsi)
{
if (pkg->status < stat_halfinstalled)
@@ -124,6 +133,18 @@ static const struct badstatinfo badstatinfos[]= {
"has not yet been done. Trigger processing can be requested using\n"
"dselect or dpkg --configure --pending (or dpkg --triggers-only):\n")
}, {
+ .yesno = bsyn_infofile,
+ .value.string = LISTFILE,
+ .explanation = N_(
+ "The following packages are missing the list control file in the\n"
+ "database, they need to be reinstalled:\n")
+ }, {
+ .yesno = bsyn_infofile,
+ .value.string = HASHFILE,
+ .explanation = N_(
+ "The following packages are missing the md5sums control file in the\n"
+ "database, they need to be reinstalled:\n")
+ }, {
.yesno = bsyn_arch,
.value.number = arch_none,
.explanation = N_("The following packages do not have an architecture:\n")