diff --git a/experiments/powertop2tuned.py b/experiments/powertop2tuned.py index 02a5b23..70c6f0b 100755 --- a/experiments/powertop2tuned.py +++ b/experiments/powertop2tuned.py @@ -74,6 +74,8 @@ class PowertopHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs): self.lastStartTag = tag + if self.lastStartTag == "div" and dict(attrs)["id"] == "tuning": + self.inProperTable = True if self.inProperTable and tag == "td": self.tdCounter += 1 @@ -92,8 +94,6 @@ class PowertopHTMLParser(HTMLParser): def handle_data(self, data): prefix = self.prefix - if self.lastStartTag == "h2" and data == "Software settings in need of tuning": - self.inProperTable = True if self.inProperTable and self.tdCounter == 1: self.lastDesc = data if self.lastDesc.lower().find("autosuspend") != -1 and (self.lastDesc.lower().find("keyboard") != -1 or self.lastDesc.lower().find("mouse") != -1): @@ -103,10 +103,10 @@ class PowertopHTMLParser(HTMLParser): self.tdCounter = 0 if not self.inScript: self.data += "\t# " + self.lastDesc + "\n" - self.data += "\t" + prefix + data + self.data += "\t" + prefix + data.strip() self.inScript = True else: - self.data += data + self.data += data.strip() class PowertopProfile: BAD_PRIVS = 100 @@ -132,16 +132,18 @@ class PowertopProfile: return True def generateHTML(self): - f = tempfile.NamedTemporaryFile() - name = unicode(f.name) - f.close() - - ret = os.system('powertop --html="%s"' % (name)) - if ret != 0: - os.unlink(name) - return ret + proc = Popen(["powertop", "--html=/tmp/powertop"], stdout=PIPE) + output = proc.communicate()[0] + if proc.returncode != 0: + return ret + + prefix = "PowerTOP outputing using base filename " + if output.find(prefix) == -1: + return -1 - return name; + name = output[output.find(prefix)+len(prefix):-1] + #print "Parsed filename=", [name] + return name def parseHTML(self, enable_tunings): f = open(self.name)