summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian.Changelog7
-rwxr-xr-xdebian.rules2
-rw-r--r--dselect/pkgdepcon.cc3
-rw-r--r--dselect/pkgdisplay.cc6
-rw-r--r--dselect/pkglist.cc16
-rw-r--r--dselect/pkglist.h1
6 files changed, 27 insertions, 8 deletions
diff --git a/debian.Changelog b/debian.Changelog
index e7949505a..744f03276 100644
--- a/debian.Changelog
+++ b/debian.Changelog
@@ -1,3 +1,10 @@
+dpkg (1.2.2); priority=MEDIUM
+
+ * Fixed dselect coredump found by Erick Branderhorst (thanks).
+ * Sort obsolete removed packages separately, not under Available.
+
+ -- Ian Jackson <ian@chiark.chu.cam.ac.uk> Thu, 23 May 1996 21:31:05 +0100
+
dpkg (1.2.1); priority=MEDIUM
* `=' key in dselect really does `hold' rather than `unhold'.
diff --git a/debian.rules b/debian.rules
index 737626029..acaf38b79 100755
--- a/debian.rules
+++ b/debian.rules
@@ -1,7 +1,7 @@
#!/usr/bin/make -f
package=dpkg
-version=1.2.1
+version=1.2.2
archi=$(shell dpkg --print-architecture)
DIR:=$(shell pwd)
diff --git a/dselect/pkgdepcon.cc b/dselect/pkgdepcon.cc
index 75ea43490..bfe48c985 100644
--- a/dselect/pkgdepcon.cc
+++ b/dselect/pkgdepcon.cc
@@ -35,8 +35,9 @@ extern "C" {
static const int depdebug= 1;
int packagelist::useavailable(pkginfo *pkg) {
- if (informative(pkg,&pkg->available) &&
+ if (pkg->clientdata &&
pkg->clientdata->selected == pkginfo::want_install &&
+ informative(pkg,&pkg->available) &&
(pkg->status != pkginfo::stat_installed ||
versioncompare(&pkg->available.version,&pkg->installed.version) > 1))
return 1;
diff --git a/dselect/pkgdisplay.cc b/dselect/pkgdisplay.cc
index 89bd9f0f3..b024f6722 100644
--- a/dselect/pkgdisplay.cc
+++ b/dselect/pkgdisplay.cc
@@ -59,13 +59,15 @@ const char
"Updated",
"Obsolete/local",
"Up-to-date",
- "Available" },
+ "Available",
+ "Removed" },
*const ssastrings[]= { "Brokenly installed packages",
"Newly available packages",
"Updated packages (newer version is available)",
"Obsolete and local packages present on system",
"Up to date installed packages",
- "Available packages (not currently installed)" };
+ "Available packages (not currently installed)",
+ "Removed and no longer available packages" };
const char
*const sssstrings[]= { "Brokenly installed packages",
diff --git a/dselect/pkglist.cc b/dselect/pkglist.cc
index dc62597a2..90ed643f4 100644
--- a/dselect/pkglist.cc
+++ b/dselect/pkglist.cc
@@ -153,6 +153,7 @@ void packagelist::sortinplace() {
void packagelist::ensurestatsortinfo() {
const struct versionrevision *veri;
const struct versionrevision *vera;
+ struct pkginfo *pkg;
int index;
if (debug) fprintf(debug,"packagelist[%p]::ensurestatsortinfos() "
@@ -170,7 +171,10 @@ void packagelist::ensurestatsortinfo() {
if (debug)
fprintf(debug,"packagelist[%p]::ensurestatsortinfos() i=%d pkg=%s\n",
this,index,table[index]->pkg->name);
- switch (table[index]->pkg->status) {
+ pkg= table[index]->pkg;
+ if (!pkg->installed.valid) blankpackageperfile(&pkg->installed);
+ if (!pkg->available.valid) blankpackageperfile(&pkg->available);
+ switch (pkg->status) {
case pkginfo::stat_unpacked:
case pkginfo::stat_halfconfigured:
case pkginfo::stat_halfinstalled:
@@ -178,9 +182,13 @@ void packagelist::ensurestatsortinfo() {
break;
case pkginfo::stat_notinstalled:
case pkginfo::stat_configfiles:
- table[index]->ssavail=
- table[index]->original == pkginfo::want_unknown
- ? ssa_notinst_unseen : ssa_notinst_seen;
+ if (!informativeversion(&pkg->available.version)) {
+ table[index]->ssavail= ssa_notinst_gone;
+ } else if (table[index]->original == pkginfo::want_unknown) {
+ table[index]->ssavail= ssa_notinst_unseen;
+ } else {
+ table[index]->ssavail= ssa_notinst_seen;
+ }
break;
case pkginfo::stat_installed:
veri= &table[index]->pkg->installed.version;
diff --git a/dselect/pkglist.h b/dselect/pkglist.h
index 575638be1..c93db2535 100644
--- a/dselect/pkglist.h
+++ b/dselect/pkglist.h
@@ -46,6 +46,7 @@ enum ssavailval { // Availability sorting order, first to last:
ssa_installed_gone, // Installed but no longer available
ssa_installed_sameold, // Same or older version available as installed
ssa_notinst_seen, // Available but not installed
+ ssa_notinst_gone, // Not available, and only config files left
ssa_none=-1
};