summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJo-Philipp Wich2019-01-15 07:46:15 +0000
committerJo-Philipp Wich2019-01-15 07:46:15 +0000
commit34571bad205b44dc153a84b32e170e2726cd05d0 (patch)
tree349e0c86086c5dfa3775f31189971a7a235cc2d1
parent18740e62c08705f7aed12f1ec74c5c41361d8c3c (diff)
downloadopkg-lede-34571bad205b44dc153a84b32e170e2726cd05d0.tar.gz
libopkg: consider provided packages in pkg_vec_mark_if_matches()
Also consider the list of provided abstract packages when testing the package vector for name matches. This fixes the "opkg whatdepends" command with abstract provided package arguments. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--libopkg/pkg_vec.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libopkg/pkg_vec.c b/libopkg/pkg_vec.c
index ce098bc..a9e2e73 100644
--- a/libopkg/pkg_vec.c
+++ b/libopkg/pkg_vec.c
@@ -140,12 +140,24 @@ int pkg_vec_mark_if_matches(pkg_vec_t * vec, const char *pattern)
pkg_t **pkgs = vec->pkgs;
int npkgs = vec->len;
int i;
+ abstract_pkg_t **providers, *provider;
+
for (i = 0; i < npkgs; i++) {
pkg_t *pkg = pkgs[i];
if (fnmatch(pattern, pkg->name, 0) == 0) {
pkg->state_flag |= SF_MARKED;
matching_count++;
}
+ else {
+ providers = pkg_get_ptr(pkg, PKG_PROVIDES);
+ while (providers && *providers) {
+ provider = *providers++;
+ if (fnmatch(pattern, provider->name, 0) == 0) {
+ pkg->state_flag |= SF_MARKED;
+ matching_count++;
+ }
+ }
+ }
}
return matching_count;
}