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

Reply via email to