Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1b1abbc993182be91f644dabd63ac1c956a41f81
commit 1b1abbc993182be91f644dabd63ac1c956a41f81 Author: Michel Hermier <[email protected]> Date: Fri Aug 15 13:07:03 2014 +0200 libpacman: Merge Database::find fast path to the generic api. diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index 93fdc17..4040812 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -180,24 +180,19 @@ Package *Database::find(const FStrMatcher *strmatcher, int packagestrmatcher_fla return ret; } -Package *Database::find(const char *target) -{ - if(_pacman_strempty(target)) { - return NULL; - } - - return _pacman_pkg_isin(target, _pacman_db_get_pkgcache(this)); -} - Package *Database::find(const char *target, int packagestrmatcher_flags, int strmatcher_flags) { Package *ret = NULL; FStrMatcher strmatcher = { NULL }; - if(!_pacman_strempty(target) && - f_strmatcher_init(&strmatcher, target, strmatcher_flags) == 0) { - ret = find(&strmatcher, packagestrmatcher_flags); - f_strmatcher_fini(&strmatcher); + if(!_pacman_strempty(target)) { + if (packagestrmatcher_flags == PM_PACKAGE_FLAG_NAME && + strmatcher_flags == F_STRMATCHER_EQUAL) { + ret = _pacman_pkg_isin(target, _pacman_db_get_pkgcache(this)); + } else if (f_strmatcher_init(&strmatcher, target, strmatcher_flags) == 0) { + ret = find(&strmatcher, packagestrmatcher_flags); + f_strmatcher_fini(&strmatcher); + } } return ret; } diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 4b25e4f..ac6e46e 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -73,8 +73,9 @@ public: FPtrList *filter(const char *target, int packagestrmatcher_flags, int strmatcher_flags = F_STRMATCHER_EQUAL); libpacman::Package *find(const FMatcher *packagestrmatcher); libpacman::Package *find(const FStrMatcher *strmatcher, int packagestrmatcher_flags); - libpacman::Package *find(const char *target); - libpacman::Package *find(const char *target, int packagestrmatcher_flags, int strmatcher_flags = F_STRMATCHER_EQUAL); + libpacman::Package *find(const char *target, + int packagestrmatcher_flags = PM_PACKAGE_FLAG_NAME, + int strmatcher_flags = F_STRMATCHER_EQUAL); 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
