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

Reply via email to