summaryrefslogtreecommitdiff
path: root/src/repo.c
diff options
context:
space:
mode:
authorMichael Schroeder <mls@suse.de>2009-07-16 14:08:55 +0200
committerMichael Schroeder <mls@suse.de>2009-07-16 14:08:55 +0200
commit0996af64d6d7a6900b78a835c05945a86e589a28 (patch)
tree90b97951882b02c732ac7511ebff8512a79dca6b /src/repo.c
parent336a60ce0be198f8a0aa910a8ec0c27737f2a346 (diff)
downloadlibsolv-0996af64d6d7a6900b78a835c05945a86e589a28.tar.gz
libsolv-0996af64d6d7a6900b78a835c05945a86e589a28.tar.bz2
libsolv-0996af64d6d7a6900b78a835c05945a86e589a28.zip
- bring argument parsing up-to-speed, now supports globs, relations
- fix repo.c filelist handling
Diffstat (limited to 'src/repo.c')
-rw-r--r--src/repo.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/repo.c b/src/repo.c
index bfac9f3..f7eb125 100644
--- a/src/repo.c
+++ b/src/repo.c
@@ -784,6 +784,19 @@ repo_search_md(Repo *repo, Id p, Id keyname, struct matchdata *md)
continue;
if (keyname && !repodata_precheck_keyname(data, keyname))
continue;
+ if (keyname == SOLVABLE_FILELIST && !(md->flags & SEARCH_COMPLETE_FILELIST))
+ {
+ /* do not search filelist extensions */
+ if (data->state != REPODATA_AVAILABLE)
+ continue;
+ if (!repodata_precheck_keyname(data, REPOSITORY_EXTERNAL))
+ continue;
+ for (j = 0; j < data->nkeys; j++)
+ if (data->keys[j].name == REPOSITORY_EXTERNAL)
+ break;
+ if (j == data->nkeys)
+ continue;
+ }
if (data->state == REPODATA_STUB)
{
if (keyname)
@@ -805,13 +818,6 @@ repo_search_md(Repo *repo, Id p, Id keyname, struct matchdata *md)
repodata_search(data, p, keyname, md->flags, repo_matchvalue, md);
if (md->stop > SEARCH_NEXT_KEY)
break;
- if (keyname == SOLVABLE_FILELIST)
- {
- if (!(md->flags & SEARCH_COMPLETE_FILELIST))
- break;
- if (md->matcher.match && (md->flags & (SEARCH_STRINGMASK|SEARCH_NOCASE)) == SEARCH_STRING && repodata_filelistfilter_matches(data, md->matcher.match))
- break;
- }
}
}