Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bf4e7dbee8ad7ab79d48ca28921332f57a1c280b
commit bf4e7dbee8ad7ab79d48ca28921332f57a1c280b Author: Michel Hermier <[email protected]> Date: Fri Aug 15 10:51:15 2014 +0200 libpacman: s/Database::search/Database::filter/ diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index 0d5f809..d19d824 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -111,34 +111,7 @@ pmlist_t *Database::filter(const FStrMatcher *strmatcher, int packagestrmatcher_ return ret; } -Package *Database::find(const FMatcher *packagestrmatcher) -{ - // FIXME: search for provide in the same pass ? - pmlist_t *i; - - for(i = _pacman_db_get_pkgcache(this); i; i = i->next) { - Package *pkg = i->data; - - if(f_match(pkg, packagestrmatcher)) { - return pkg; - } - } - return NULL; -} - -Package *Database::find(const FStrMatcher *strmatcher, int packagestrmatcher_flags) -{ - Package *ret = NULL; - FMatcher packagestrmatcher; - - if(_pacman_packagestrmatcher_init(&packagestrmatcher, strmatcher, packagestrmatcher_flags) == 0) { - ret = find(&packagestrmatcher); - _pacman_packagestrmatcher_fini(&packagestrmatcher); - } - return ret; -} - -pmlist_t *Database::search(pmlist_t *needles) +FPtrList *Database::filter(const FStringList *needles, int strmatcher_flags, int packagestrmatcher_flags) { pmlist_t *i, *j, *ret = NULL; @@ -151,8 +124,8 @@ pmlist_t *Database::search(pmlist_t *needles) continue; } _pacman_log(PM_LOG_DEBUG, "searching for target '%s'\n", targ); - if(f_strmatcher_init(&strmatcher, targ, F_STRMATCHER_ALL_IGNORE_CASE) == 0 && - _pacman_packagestrmatcher_init(&packagestrmatcher, &strmatcher, PM_PACKAGE_FLAG_NAME | PM_PACKAGE_FLAG_DESCRIPTION | PM_PACKAGE_FLAG_PROVIDES) == 0) { + if(f_strmatcher_init(&strmatcher, targ, strmatcher_flags) == 0 && + _pacman_packagestrmatcher_init(&packagestrmatcher, &strmatcher, packagestrmatcher_flags) == 0) { for(j = _pacman_db_get_pkgcache(this); j; j = j->next) { Package *pkg = j->data; @@ -168,6 +141,33 @@ pmlist_t *Database::search(pmlist_t *needles) return(ret); } +Package *Database::find(const FMatcher *packagestrmatcher) +{ + // FIXME: search for provide in the same pass ? + pmlist_t *i; + + for(i = _pacman_db_get_pkgcache(this); i; i = i->next) { + Package *pkg = i->data; + + if(f_match(pkg, packagestrmatcher)) { + return pkg; + } + } + return NULL; +} + +Package *Database::find(const FStrMatcher *strmatcher, int packagestrmatcher_flags) +{ + Package *ret = NULL; + FMatcher packagestrmatcher; + + if(_pacman_packagestrmatcher_init(&packagestrmatcher, strmatcher, packagestrmatcher_flags) == 0) { + ret = find(&packagestrmatcher); + _pacman_packagestrmatcher_fini(&packagestrmatcher); + } + return ret; +} + pmlist_t *Database::test() const { /* testing sync dbs is not supported */ diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 410a5ca..cba8e49 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -27,14 +27,16 @@ #include <time.h> #include "handle.h" +#include "package.h" #include "timestamp.h" #include "kernel/fobject.h" +#include "util/fptrlist.h" +#include "util/stringlist.h" #include "fstring.h" namespace libpacman { -class Database; class Handle; class Package; @@ -65,12 +67,13 @@ public: virtual int write(libpacman::Package *info, unsigned int inforeq); // Cache operations - pmlist_t *Database::filter(const FMatcher *packagestrmatcher); - pmlist_t *Database::filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); - libpacman::Package *Database::find(const FMatcher *packagestrmatcher); - libpacman::Package *Database::find(const FStrMatcher *strmatcher, int packagestrmatcher_flags); - - pmlist_t *search(pmlist_t *needles); + pmlist_t *filter(const FMatcher *packagestrmatcher); + pmlist_t *filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); + 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); + libpacman::Package *find(const FMatcher *packagestrmatcher); + libpacman::Package *find(const FStrMatcher *strmatcher, int packagestrmatcher_flags); virtual pmlist_t *getowners(const char *filename); /* Make pure virtual */ diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h index 6a26179..f991d4e 100644 --- a/lib/libpacman/handle.h +++ b/lib/libpacman/handle.h @@ -28,7 +28,6 @@ #include "pacman.h" #include "io/ffilelock.h" -#include "db.h" #include "trans.h" #include "kernel/fobject.h" diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index cc54271..801a019 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -35,6 +35,12 @@ #include "kernel/fobject.h" +namespace libpacman { + + class Database; + +} + enum { PKG_FROM_CACHE = 1, PKG_FROM_FILE diff --git a/lib/libpacman/packages_transaction.cpp b/lib/libpacman/packages_transaction.cpp index 70fc3c9..60e52a8 100644 --- a/lib/libpacman/packages_transaction.cpp +++ b/lib/libpacman/packages_transaction.cpp @@ -21,6 +21,8 @@ #include "config.h" +#include <limits.h> /* PATH_MAX */ + #include "packages_transaction.h" #include "util.h" diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index 42203ed..8cbb244 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -1029,7 +1029,7 @@ pmlist_t *pacman_db_search(pmdb_t *_db) ASSERT(handle->needles->data != NULL, return(NULL)); ASSERT(db != NULL, return(NULL)); - ret = db->search(handle->needles); + ret = db->filter(handle->needles); FREELIST(handle->needles); return(ret); } _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
