From 5817e8848f83330c980ae855abd90b7fc786ad0f Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Sun, 26 Jun 2022 07:22:56 +0000 Subject: [PATCH] pkg: track the number of hits a package has gotten while solving for dependencies --- libpkgconf/libpkgconf.h | 2 ++ libpkgconf/pkg.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf.h index 27c5597..4634047 100644 --- a/libpkgconf/libpkgconf.h +++ b/libpkgconf/libpkgconf.h @@ -160,6 +160,8 @@ struct pkgconf_pkg_ { pkgconf_tuple_t *prefix; uint64_t serial; + + size_t hits; }; typedef bool (*pkgconf_pkg_iteration_func_t)(const pkgconf_pkg_t *pkg, void *data); diff --git a/libpkgconf/pkg.c b/libpkgconf/pkg.c index 443b59f..748f011 100644 --- a/libpkgconf/pkg.c +++ b/libpkgconf/pkg.c @@ -1473,6 +1473,7 @@ pkgconf_pkg_walk_list(pkgconf_client_t *client, if (pkgdep->serial == client->serial) { + pkgdep->hits++; pkgconf_pkg_unref(client, pkgdep); continue; } @@ -1485,6 +1486,7 @@ pkgconf_pkg_walk_list(pkgconf_client_t *client, pkgconf_audit_log_dependency(client, pkgdep, depnode); + pkgdep->hits++; pkgdep->serial = client->serial; eflags |= pkgconf_pkg_traverse_main(client, pkgdep, func, data, depth - 1, skip_flags); pkgconf_pkg_unref(client, pkgdep);