diff options
-rw-r--r-- | debian.Changelog | 7 | ||||
-rwxr-xr-x | debian.rules | 2 | ||||
-rw-r--r-- | dselect/pkgdepcon.cc | 3 | ||||
-rw-r--r-- | dselect/pkgdisplay.cc | 6 | ||||
-rw-r--r-- | dselect/pkglist.cc | 16 | ||||
-rw-r--r-- | dselect/pkglist.h | 1 |
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 }; |