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

commit ee21240892509799a56c18753e96fc3c41da88a4
Author: Michel Hermier <[email protected]>
Date:   Fri Aug 15 11:18:04 2014 +0200

libpacman: More Database::find methods.

diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp
index 2cd8a8a..756c1b7 100644
--- a/lib/libpacman/cache.cpp
+++ b/lib/libpacman/cache.cpp
@@ -148,11 +148,7 @@ int _pacman_db_remove_pkgfromcache(Database *db, Package 
*pkg)
Package *_pacman_db_get_pkgfromcache(Database *db, const char *target)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));
-       if(_pacman_strempty(target)) {
-               return NULL;
-       }
-
-       return(_pacman_pkg_isin(target, _pacman_db_get_pkgcache(db)));
+       return db->find(target);
}

/* return a pmlist_t of packages in "db" that provide "package"
diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index d19d824..fe775ce 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -137,7 +137,6 @@ FPtrList *Database::filter(const FStringList *needles, int 
strmatcher_flags, int
_pacman_packagestrmatcher_fini(&packagestrmatcher);
f_strmatcher_fini(&strmatcher);
}
-
return(ret);
}

@@ -168,6 +167,28 @@ 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 strmatcher_flags, int 
packagestrmatcher_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);
+       }
+       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 cba8e49..5b016d0 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -74,6 +74,9 @@ public:
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);
+       Package *Database::find(const char *target);
+       Package *Database::find(const char *target, int strmatcher_flags,
+                       int packagestrmatcher_flags = PM_PACKAGE_FLAG_NAME);

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