Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=25fe2b8a055442062c2c8603f8e29c3332328701

commit 25fe2b8a055442062c2c8603f8e29c3332328701
Author: Michel Hermier <[email protected]>
Date:   Fri Aug 15 12:07:30 2014 +0200

libpacman: Add Database::whatPackagesProvide, and an extra Database::find to 
implement it.

diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index fe775ce..8d78668 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -140,6 +140,19 @@ FPtrList *Database::filter(const FStringList *needles, int 
strmatcher_flags, int
return(ret);
}

+FPtrList *Database::filter(const char *target, int strmatcher_flags, int 
packagestrmatcher_flags)
+{
+       FPtrList *ret = NULL;
+       FStrMatcher strmatcher = { NULL };
+
+       if(!f_strempty(target) &&
+               f_strmatcher_init(&strmatcher, target, strmatcher_flags) == 0) {
+               ret = filter(&strmatcher, packagestrmatcher_flags);
+               f_strmatcher_fini(&strmatcher);
+       }
+       return(ret);
+}
+
Package *Database::find(const FMatcher *packagestrmatcher)
{
// FIXME: search for provide in the same pass ?
@@ -189,6 +202,11 @@ Package *Database::find(const char *target, int 
strmatcher_flags, int packagestr
return ret;
}

+FPtrList *Database::whatPackagesProvide(const char *target)
+{
+       return filter(target, F_STRMATCHER_EQUAL, PM_PACKAGE_FLAG_PROVIDES);
+}
+
pmlist_t *Database::test() const
{
/* testing sync dbs is not supported */
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 5b016d0..2a7896a 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -72,11 +72,13 @@ public:
FPtrList *filter(const FStringList *needles,
int strmatcher_flags = F_STRMATCHER_ALL_IGNORE_CASE,
int packagestrmatcher_flags = PM_PACKAGE_FLAG_NAME | 
PM_PACKAGE_FLAG_DESCRIPTION | PM_PACKAGE_FLAG_PROVIDES);
+       FPtrList *filter(const char *target, int strmatcher_flags, int 
packagestrmatcher_flags);
libpacman::Package *find(const FMatcher *packagestrmatcher);
libpacman::Package *find(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags);
-       Package *Database::find(const char *target);
-       Package *Database::find(const char *target, int strmatcher_flags,
+       libpacman::Package *find(const char *target);
+       libpacman::Package *find(const char *target, int strmatcher_flags,
int packagestrmatcher_flags = PM_PACKAGE_FLAG_NAME);
+       FPtrList *whatPackagesProvide(const char *target);

virtual pmlist_t *getowners(const char *filename); /* Make pure virtual */
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to