Using regular expressions yields more compact and error-proof code when breaking the event properties into pieces.
Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> Signed-off-by: Harsh Prateek Bora <ha...@linux.vnet.ibm.com> --- scripts/tracetool.py | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/tracetool.py b/scripts/tracetool.py index c2d5c24..27d1db4 100755 --- a/scripts/tracetool.py +++ b/scripts/tracetool.py @@ -39,11 +39,6 @@ Options: ''' sys.exit(1) -def get_properties(line, sep='('): - head, sep, tail = line.partition(sep) - property, sep, name = head.rpartition(' ') - return property.split() - def get_argnames(args): nfields = 0 str = [] @@ -379,7 +374,9 @@ trace_gen = { } # A trace event -cre = re.compile("(?P<name>[^(\s]+)\((?P<args>[^)]*)\)\s*(?P<fmt>\".*)?") +cre = re.compile("((?P<props>.*)\s+)?(?P<name>[^(\s]+)\((?P<args>[^)]*)\)\s*(?P<fmt>\".*)?") + +VALID_PROPS = set(["disable"]) class Event(object): def __init__(self, line): @@ -395,7 +392,10 @@ class Event(object): self.argc = len(self.arglist) self.argnames = get_argnames(self.args) self.fmt = groups["fmt"] - self.properties = get_properties(line) + self.properties = groups["props"].split() + unknown_props = set(self.properties) - VALID_PROPS + if len(unknown_props) > 0: + raise ValueError("Unknown properties: %s" % ", ".join(unknown_props)) # Generator that yields Event objects given a trace-events file object def read_events(fobj):