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
