* 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.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'.
#!/usr/bin/make -f
package=dpkg
-version=1.2.1
+version=1.2.2
archi=$(shell dpkg --print-architecture)
DIR:=$(shell pwd)
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;
"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",
void packagelist::ensurestatsortinfo() {
const struct versionrevision *veri;
const struct versionrevision *vera;
+ struct pkginfo *pkg;
int index;
if (debug) fprintf(debug,"packagelist[%p]::ensurestatsortinfos() "
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:
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;
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
};