diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-03-16 21:00:14 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-03-16 21:00:14 +0000 |
commit | ef96613d6924d810d555c62ddda4029a803e6555 (patch) | |
tree | 6f60448c95226a8cf6a8a073f5c8535a420c3e7b | |
parent | 071ac2deaf3804cc9a0720cfa6f7532f831a7762 (diff) | |
download | portage-ef96613d6924d810d555c62ddda4029a803e6555.tar.gz portage-ef96613d6924d810d555c62ddda4029a803e6555.tar.bz2 portage-ef96613d6924d810d555c62ddda4029a803e6555.zip |
Add package atom validation to the `emerge --config` action. Thanks to sekretarz for reporting and providing an initial patch.
svn path=/main/trunk/; revision=2908
-rwxr-xr-x | bin/emerge | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/bin/emerge b/bin/emerge index b4513a8c1..b1e103c62 100755 --- a/bin/emerge +++ b/bin/emerge @@ -1071,17 +1071,10 @@ class depgraph: elif not "--oneshot" in myopts: myfavorites.append(mykey) else: - testkey = portage.dep_getkey(x) - if testkey.startswith("null/"): - testatom = x.replace(testkey[5:], "cat/"+testkey[5:]) - elif "/" not in x: - testatom = "cat/"+x - else: - testatom = x - if not portage.isvalidatom(testatom): - print ("\n\n!!! '%s' is not a valid package atom." % x) - print "!!! Please check ebuild(5) for full details." - print "!!! (Did you specify a version but forget to prefix with '='?)" + if not is_valid_package_atom(x): + portage.writemsg("\n\n!!! '%s' is not a valid package atom.\n" % x) + portage.writemsg("!!! Please check ebuild(5) for full details.\n") + portage.writemsg("!!! (Did you specify a version but forget to prefix with '='?)\n") return (0,[]) try: mykey=portage.dep_expand(x,mydb=portage.portdb) @@ -2467,6 +2460,16 @@ def chk_updated_cfg_files(): print " "+yellow("*")+" Type "+green("emerge --help config")+" to learn how to update config files." print +def is_valid_package_atom(x): + testkey = portage.dep_getkey(x) + if testkey.startswith("null/"): + testatom = x.replace(testkey[5:], "cat/"+testkey[5:]) + elif "/" not in x: + testatom = "cat/"+x + else: + testatom = x + return portage.isvalidatom(testatom) + # general options that should be taken into account before any action if "--debug" in myopts: edebug=1 @@ -2886,7 +2889,11 @@ elif "config"==myaction: if len(myfiles) != 1 or "system" in myfiles or "world" in myfiles: print red("!!! config can only take a single package atom at this time\n") sys.exit(1) - + if not is_valid_package_atom(myfiles[0]): + portage.writemsg("!!! '%s' is not a valid package atom.\n" % myfiles[0]) + portage.writemsg("!!! Please check ebuild(5) for full details.\n") + portage.writemsg("!!! (Did you specify a version but forget to prefix with '='?)\n") + sys.exit(1) print pkgs = portage.db[portage.root]["vartree"].dbapi.match(myfiles[0]) if len(pkgs) == 0: |