diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-06-24 07:12:40 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-06-24 07:12:40 +0000 |
commit | 22eaa08ddeaf387d1b742af3b05cc39624f593c6 (patch) | |
tree | 81f0c391e319956627b2cac5ff5ae6a1ad5a0179 /pym/portage | |
parent | 463b82e15e317cd210b78886a319fbdee8981a63 (diff) | |
download | portage-22eaa08ddeaf387d1b742af3b05cc39624f593c6.tar.gz portage-22eaa08ddeaf387d1b742af3b05cc39624f593c6.tar.bz2 portage-22eaa08ddeaf387d1b742af3b05cc39624f593c6.zip |
Add support to `portageq owners` for querying paths matching a given basename.
It is natural to support this since the vartree already maintains a basename
-> owner index anyway. There are plans for the packagekit backend is to
support this type of search.
svn path=/main/trunk/; revision=13681
Diffstat (limited to 'pym/portage')
-rw-r--r-- | pym/portage/dbapi/vartree.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 139259177..5b6f54a6a 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1527,7 +1527,12 @@ class vardbapi(dbapi): return x for path in path_iter: - name = os.path.basename(path.rstrip(os.path.sep)) + is_basename = os.sep != path[:1] + if is_basename: + name = path + else: + name = os.path.basename(path.rstrip(os.path.sep)) + if not name: continue @@ -1548,8 +1553,14 @@ class vardbapi(dbapi): if current_hash != hash_value: continue - if dblink(cpv).isowner(path, root): - yield dblink(cpv), path + + if is_basename: + for p in dblink(cpv).getcontents(): + if os.path.basename(p) == name: + yield dblink(cpv), p[len(root):] + else: + if dblink(cpv).isowner(path, root): + yield dblink(cpv), path class vartree(object): "this tree will scan a var/db/pkg database located at root (passed to init)" |