static void fancy_reverse_deps(const pkgCache::PkgIterator pkg, const pkgCache::VerIterator ver, callback_t callback) { for (pkgCache::DepIterator dep = pkg.RevDependsList(); !dep.end(); ++dep) { if (dep.IsSatisfied(ver)) callback(dep); } for (pkgCache::PrvIterator prv = ver.ProvidesList(); !prv.end(); ++prv) { for (pkgCache::DepIterator dep = prv.ParentPkg().RevDependsList(); !dep.end(); ++dep) { if (dep.IsSatisfied(prv)) callback(dep); } } }