diff options
-rw-r--r-- | pym/portage.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/pym/portage.py b/pym/portage.py index 2a3ec7baa..7522dc18a 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1448,9 +1448,17 @@ class config: self.configdict["pkg"][filename] = "-* "+mydata else: self.configdict["pkg"][filename] = mydata - except SystemExit, e: - raise - except: + # CATEGORY is important because it's used in doebuild + # to infer the cpv. If it's corrupted, it leads to + # strange errors later on, so we'll validate it and + # print a warning if necessary. + if filename == "CATEGORY": + matchobj = re.match("[-a-zA-Z0-9_.+]+", mydata) + if not matchobj or matchobj.start() != 0 or \ + matchobj.end() != len(mydata): + writemsg("!!! CATEGORY file is corrupt: %s\n" % \ + os.path.join(infodir, filename)) + except (OSError, IOError): writemsg("!!! Unable to read file: %s\n" % infodir+"/"+filename) pass return 1 |