[zypp-commit] r11310 - in /trunk/sat-solver/src: repo.c repo.h repodata.c repopage.c
Author: mlschroe
Date: Mon Oct 13 12:09:47 2008
New Revision: 11310
URL: http://svn.opensuse.org/viewcvs/zypp?rev=11310&view=rev
Log:
- also use matcher in repo_solv
Modified:
trunk/sat-solver/src/repo.c
trunk/sat-solver/src/repo.h
trunk/sat-solver/src/repodata.c
trunk/sat-solver/src/repopage.c
Modified: trunk/sat-solver/src/repo.c
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo.c?rev=11310&r1=11309&r2=11310&view=diff
==============================================================================
--- trunk/sat-solver/src/repo.c (original)
+++ trunk/sat-solver/src/repo.c Mon Oct 13 12:09:47 2008
@@ -569,11 +569,8 @@
struct matchdata
{
Pool *pool;
- const char *match;
int flags;
-#if 0
- regex_t regex;
-#endif
+ Datamatcher matcher;
int stop;
int (*callback)(void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv);
void *callback_data;
@@ -583,63 +580,9 @@
repo_matchvalue(void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv)
{
struct matchdata *md = cbdata;
- int flags = md->flags;
- if ((flags & SEARCH_STRINGMASK) != 0)
- {
- switch (key->type)
- {
- case REPOKEY_TYPE_ID:
- case REPOKEY_TYPE_IDARRAY:
- if (data && data->localpool)
- kv->str = stringpool_id2str(&data->spool, kv->id);
- else
- kv->str = id2str(s->repo->pool, kv->id);
- break;
- case REPOKEY_TYPE_STR:
- break;
- default:
- return 0;
- }
- switch ((flags & SEARCH_STRINGMASK))
- {
- case SEARCH_SUBSTRING:
- if (flags & SEARCH_NOCASE)
- {
- if (!strcasestr(kv->str, md->match))
- return 0;
- }
- else
- {
- if (!strstr(kv->str, md->match))
- return 0;
- }
- break;
- case SEARCH_STRING:
- if (flags & SEARCH_NOCASE)
- {
- if (strcasecmp(md->match, kv->str))
- return 0;
- }
- else
- {
- if (strcmp(md->match, kv->str))
- return 0;
- }
- break;
- case SEARCH_GLOB:
- if (fnmatch(md->match, kv->str, (flags & SEARCH_NOCASE) ? FNM_CASEFOLD : 0))
- return 0;
- break;
-#if 0
- case SEARCH_REGEX:
- if (regexec(&md->regexp, kv->str, 0, NULL, 0))
- return 0;
-#endif
- default:
- return 0;
- }
- }
+ if (md->matcher.match && !datamatcher_match(&md->matcher, data, key, kv))
+ return 0;
md->stop = md->callback(md->callback_data, s, data, key, kv);
return md->stop;
}
@@ -832,11 +775,14 @@
memset(&md, 0, sizeof(md));
md.pool = repo->pool;
- md.match = match;
md.flags = flags;
md.callback = callback;
md.callback_data = cbdata;
+ if (match)
+ datamatcher_init(&md.matcher, md.pool, match, flags);
repo_search_md(repo, p, keyname, &md);
+ if (match)
+ datamatcher_free(&md.matcher);
}
const char *
Modified: trunk/sat-solver/src/repo.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo.h?rev=11310&r1=11309&r2=11310&view=diff
==============================================================================
--- trunk/sat-solver/src/repo.h (original)
+++ trunk/sat-solver/src/repo.h Mon Oct 13 12:09:47 2008
@@ -13,8 +13,6 @@
#ifndef SATSOLVER_REPO_H
#define SATSOLVER_REPO_H
-#include
participants (1)
-
mlschroe@svn.opensuse.org