diff -r -c -wb synaptic-0.47/common/rpackage.cc synaptic-0.47-patched/common/rpackage.cc *** synaptic-0.47/common/rpackage.cc 2003-11-27 12:29:29.000000000 +0100 --- synaptic-0.47-patched/common/rpackage.cc 2004-01-12 15:42:29.000000000 +0100 *************** *** 291,296 **** --- 291,304 ---- return status; } + pkgCache::VerIterator RPackage::getCurrentVer() { + return _package->CurrentVer(); + } + + pkgCache::VerIterator RPackage::getCandVer() { + pkgDepCache::StateCache &state = (*_depcache)[*_package]; + return state.CandidateVerIter(*_depcache); + } RPackage::PackageStatus RPackage::getStatus() { diff -r -c -wb synaptic-0.47/common/rpackagefilter.cc synaptic-0.47-patched/common/rpackagefilter.cc *** synaptic-0.47/common/rpackagefilter.cc 2003-11-27 12:36:27.000000000 +0100 --- synaptic-0.47-patched/common/rpackagefilter.cc 2004-01-12 04:27:31.000000000 +0100 *************** *** 543,548 **** --- 543,562 ---- return true; } + if (_status & UpstreamUpgradable) { + if (status == RPackage::SInstalledOutdated) { + pkgCache::VerIterator ver = pkg->getCurrentVer(); + pkgCache::VerIterator cand = pkg->getCandVer(); + const char* verStr = ver.VerStr(); + char *upstreamVer = strndup(verStr,rindex(verStr,'-')-verStr); + const char* verStr2 = cand.VerStr(); + char *upstreamVer2 = strndup(verStr2,rindex(verStr2,'-')-verStr2); + + if (strcmp(upstreamVer,upstreamVer2)!=0) + return true; + } + } + if(_status & NewPackage ) { if(ostatus & RPackage::ONew) { //cout << "pkg(" << pkg->name() << ")->isNew()" << endl; diff -r -c -wb synaptic-0.47/common/rpackage.h synaptic-0.47-patched/common/rpackage.h *** synaptic-0.47/common/rpackage.h 2003-10-24 12:23:30.000000000 +0200 --- synaptic-0.47-patched/common/rpackage.h 2004-01-12 04:22:07.000000000 +0100 *************** *** 217,222 **** --- 217,226 ---- RPackage(RPackageLister *lister, pkgDepCache *depcache, pkgRecords *records, pkgCache::PkgIterator &pkg); ~RPackage(); + + pkgCache::VerIterator RPackage::getCurrentVer(); + pkgCache::VerIterator RPackage::getCandVer(); + }; #endif diff -r -c -wb synaptic-0.47/common/rpackagelister.cc synaptic-0.47-patched/common/rpackagelister.cc *** synaptic-0.47/common/rpackagelister.cc 2003-12-01 06:52:11.000000000 +0100 --- synaptic-0.47-patched/common/rpackagelister.cc 2004-01-12 04:08:32.000000000 +0100 *************** *** 261,266 **** --- 261,273 ---- { filter = new RFilter(this); filter->preset = true; + filter->status.setStatus((int)RStatusPackageFilter::UpstreamUpgradable); + filter->setName("Upgradable (upstream)"); _("Upgradable (upstream)"); + registerFilter(filter); + } + { + filter = new RFilter(this); + filter->preset = true; filter->status.setStatus(RStatusPackageFilter::Broken); filter->setName("Broken"); _("Broken"); registerFilter(filter);