From 683382bd68bf7bb84d5b1e4f1f9685c35740145b Mon Sep 17 00:00:00 2001 From: david Date: Wed, 25 Mar 2009 16:33:50 +0000 Subject: [PATCH] Revert r12572. I remember why I split the element handlers into a helper function. It was to make it easy to return out of the handler on error and still have startElement and endElement maintain the element stack. --- ndiff/ndiff | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/ndiff/ndiff b/ndiff/ndiff index 81560ef98..c936e0367 100755 --- a/ndiff/ndiff +++ b/ndiff/ndiff @@ -659,6 +659,21 @@ class NmapContentHandler(xml.sax.handler.ContentHandler): return self.element_stack[-1] def startElement(self, name, attrs): + """This method keeps track of element_stack. The real parsing work is + done in startElementAux. This is to make it easy for startElementAux to + bail out on error.""" + self.startElementAux(name, attrs) + + self.element_stack.append(name) + + def endElement(self, name): + """This method keeps track of element_stack. The real parsing work is + done in endElementAux.""" + self.element_stack.pop() + + self.endElementAux(name) + + def startElementAux(self, name, attrs): if name == u"nmaprun": assert self.parent_element() == None if attrs.has_key(u"start"): @@ -778,11 +793,7 @@ class NmapContentHandler(xml.sax.handler.ContentHandler): end_timestamp = int(attrs.get(u"time")) self.scan.end_date = datetime.datetime.fromtimestamp(end_timestamp) - self.element_stack.append(name) - - def endElement(self, name): - self.element_stack.pop() - + def endElementAux(self, name): if name == u"nmaprun": self.scanned_ports = None elif name == u"host":