summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-06-24 07:12:40 +0000
committerZac Medico <zmedico@gentoo.org>2009-06-24 07:12:40 +0000
commit22eaa08ddeaf387d1b742af3b05cc39624f593c6 (patch)
tree81f0c391e319956627b2cac5ff5ae6a1ad5a0179 /pym
parent463b82e15e317cd210b78886a319fbdee8981a63 (diff)
downloadportage-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')
-rw-r--r--pym/portage/dbapi/vartree.py17
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)"