Bug #196537 - Make portageq check that the <root> parameter
authorZac Medico <zmedico@gentoo.org>
Sun, 21 Oct 2007 06:24:20 +0000 (06:24 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 21 Oct 2007 06:24:20 +0000 (06:24 -0000)
is an existing directory and exit gracefully if not.
(trunk r8195)

svn path=/main/branches/2.1.2/; revision=8196

bin/portageq

index 536492fbccfbdba6227e73fb371643999d32834b..18aa289568abb8e3734dc5d456225dd340c4d5ce 100755 (executable)
@@ -383,11 +383,20 @@ def main():
                sys.exit(os.EX_USAGE)
 
        cmd = sys.argv[1]
+       function = globals().get(cmd)
+       if function is None:
+               usage(sys.argv)
+               sys.exit(os.EX_USAGE)
+       function = globals()[cmd]
+       uses_root = getattr(function, "uses_root", False) and len(sys.argv) > 2
+       if uses_root:
+               if not os.path.isdir(sys.argv[2]):
+                       sys.stderr.write("Not a directory: '%s'\n" % sys.argv[2])
+                       sys.stderr.write("Run portageq with --help for info\n")
+                       sys.stderr.flush()
+                       sys.exit(os.EX_USAGE)
+               os.environ["ROOT"] = sys.argv[2]
        try:
-               function = globals()[cmd]
-               uses_root = (getattr(function, "uses_root", False) and len(sys.argv) > 2)
-               if uses_root:
-                       os.environ["ROOT"] = sys.argv[2]
                global portage
                try:
                        import portage
@@ -400,9 +409,6 @@ def main():
                retval = function(sys.argv[2:])
                if retval:
                        sys.exit(retval)
-       except KeyError:
-               usage(sys.argv)
-               sys.exit(os.EX_USAGE)
        except portage_exception.PermissionDenied, e:
                sys.stderr.write("Permission denied: '%s'\n" % str(e))
                sys.exit(e.errno)