diff options
author | Michael Schroeder <mls@suse.de> | 2009-07-16 14:08:55 +0200 |
---|---|---|
committer | Michael Schroeder <mls@suse.de> | 2009-07-16 14:08:55 +0200 |
commit | 0996af64d6d7a6900b78a835c05945a86e589a28 (patch) | |
tree | 90b97951882b02c732ac7511ebff8512a79dca6b /src/repo.c | |
parent | 336a60ce0be198f8a0aa910a8ec0c27737f2a346 (diff) | |
download | libsolv-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.c | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -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; - } } } |