summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2014-07-05 12:49:32 (EDT)
committer P. J. McDermott <pj@pehjota.net>2014-07-05 13:49:16 (EDT)
commitb3947aab31c9a43b308bd414dfa1ece3fae1d3c9 (patch)
treed82a6a20f248fbdbc9a0ba53bb67a2c10bb0d857
parent1f351455e2cf55306a6b0d200595b9f4ef076b6b (diff)
pkg_hash_fetch_installed_by_name_vec: New function
-rw-r--r--libopkg/pkg_hash.c24
-rw-r--r--libopkg/pkg_hash.h1
2 files changed, 25 insertions, 0 deletions
diff --git a/libopkg/pkg_hash.c b/libopkg/pkg_hash.c
index 4618869..ac4c422 100644
--- a/libopkg/pkg_hash.c
+++ b/libopkg/pkg_hash.c
@@ -574,6 +574,30 @@ pkg_hash_fetch_installed_by_name_dest(const char *pkg_name, pkg_dest_t *dest)
return NULL;
}
+pkg_vec_t *
+pkg_hash_fetch_installed_by_name_vec(const char *pkg_name)
+{
+ pkg_vec_t *vec, *ret;
+ int i;
+ int found = 0;
+
+ if (!(vec = pkg_vec_fetch_by_name(pkg_name))) {
+ return NULL;
+ }
+
+ ret = pkg_vec_alloc();
+
+ for (i = 0; i < vec->len; i++) {
+ if (vec->pkgs[i]->state_status == SS_INSTALLED
+ || vec->pkgs[i]->state_status == SS_UNPACKED) {
+ pkg_vec_insert(ret, vec->pkgs[i]);
+ found = 1;
+ }
+ }
+
+ return found ? ret : NULL;
+}
+
pkg_t *
pkg_hash_fetch_installed_by_name(const char *pkg_name)
{
diff --git a/libopkg/pkg_hash.h b/libopkg/pkg_hash.h
index ed010ef..2f24eb3 100644
--- a/libopkg/pkg_hash.h
+++ b/libopkg/pkg_hash.h
@@ -48,6 +48,7 @@ pkg_t *pkg_hash_fetch_best_installation_candidate(abstract_pkg_t *apkg,
int (*constraint_fcn)(pkg_t *pkg, void *data), void *cdata, int quiet);
pkg_t *pkg_hash_fetch_best_installation_candidate_by_name(const char *name);
pkg_t *pkg_hash_fetch_installed_by_name(const char *pkg_name);
+pkg_vec_t *pkg_hash_fetch_installed_by_name_vec(const char *pkg_name);
pkg_t *pkg_hash_fetch_installed_by_name_dest(const char *pkg_name,
pkg_dest_t *dest);