summaryrefslogtreecommitdiffstats
path: root/bin/portageq
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-10-05 04:20:14 +0000
committerZac Medico <zmedico@gentoo.org>2007-10-05 04:20:14 +0000
commitb53bd993efbd477db6b8395beb0c372d851c29a1 (patch)
tree000190b7885db6e01bb012ca22fe5ba4749d1852 /bin/portageq
parentaf9f16c82681663fe111968b7231102d0e37e9a6 (diff)
downloadportage-b53bd993efbd477db6b8395beb0c372d851c29a1.tar.gz
portage-b53bd993efbd477db6b8395beb0c372d851c29a1.tar.bz2
portage-b53bd993efbd477db6b8395beb0c372d851c29a1.zip
Bug #194764 - All the match* functions can raise
a ValueError if cpv_expand() receives an ambiguous atom. Therefore, move the ValueError handling code out of match() and use it to handle all such errors when appropriate. svn path=/main/trunk/; revision=7944
Diffstat (limited to 'bin/portageq')
-rwxr-xr-xbin/portageq22
1 files changed, 13 insertions, 9 deletions
diff --git a/bin/portageq b/bin/portageq
index 99bf49bc2..d97f08cb0 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -183,15 +183,6 @@ def match(argv):
sys.exit(2)
try:
print "\n".join(portage.db[argv[0]]["vartree"].dbapi.match(argv[1]))
- except ValueError, e:
- # Multiple matches thrown from cpv_expand
- pkgs = e.args[0]
- # An error has occurred so we writemsg to stderr and exit nonzero.
- portage.writemsg("The following packages available:\n", noiselevel=-1)
- for pkg in pkgs:
- portage.writemsg("* %s\n" % pkg, noiselevel=-1)
- portage.writemsg("\nPlease use a more specific atom.\n", noiselevel=-1)
- sys.exit(1)
except KeyError, e:
portage.writemsg("%s\n" % str(e), noiselevel=-1)
sys.exit(1)
@@ -389,6 +380,19 @@ def main():
except portage.exception.PermissionDenied, e:
sys.stderr.write("Permission denied: '%s'\n" % str(e))
sys.exit(e.errno)
+ except ValueError, e:
+ if not e.args or \
+ not hasattr(e.args[0], "__len__") or \
+ len(e.args[0]) < 2:
+ raise
+ # Multiple matches thrown from cpv_expand
+ pkgs = e.args[0]
+ # An error has occurred so we writemsg to stderr and exit nonzero.
+ portage.writemsg("The following packages available:\n", noiselevel=-1)
+ for pkg in pkgs:
+ portage.writemsg("* %s\n" % pkg, noiselevel=-1)
+ portage.writemsg("\nPlease use a more specific atom.\n", noiselevel=-1)
+ sys.exit(1)
main()