skinny: Convert parse_xml2skinny_dissector.py to Py3

Convert parse_xml2skinny_dissector.py to Python 3.
This is mostly the output of running 2to3, but some of the
uses of dict.keys() were left as is instead of being converted
to lists, since only membership was tested.

The dissector still needs to be regenerated, which will happen
in a next commit, so that this change can be easily backported.
This commit is contained in:
John Thacker 2022-11-03 19:20:41 -04:00
parent d1e3ef36c5
commit 8c585cc228
1 changed files with 11 additions and 11 deletions

View File

@ -66,15 +66,15 @@ def xml2obj(src):
# treat single element as a list of 1 # treat single element as a list of 1
return 1 return 1
def __getitem__(self, key): def __getitem__(self, key):
if isinstance(key, basestring): if isinstance(key, str):
return self._attrs.get(key,None) return self._attrs.get(key,None)
else: else:
return [self][key] return [self][key]
def __contains__(self, name): def __contains__(self, name):
return self._attrs.has_key(name) return name in self._attrs
def __nonzero__(self): def __bool__(self):
return bool(self._attrs or self.data) return bool(self._attrs or self.data)
def __getattr__(self, name): def __getattr__(self, name):
@ -108,7 +108,7 @@ def xml2obj(src):
items = {} items = {}
if self.data: if self.data:
items.append(('data', self.data)) items.append(('data', self.data))
return u'{%s}' % ', '.join([u'%s:%s' % (k,repr(v)) for k,v in items]) return '{%s}' % ', '.join(['%s:%s' % (k,repr(v)) for k,v in items])
def __setitem__(self, key, value): def __setitem__(self, key, value):
self._attrs[key] = value self._attrs[key] = value
@ -312,7 +312,7 @@ def xml2obj(src):
if self.type in int_sizes: if self.type in int_sizes:
self.intsize = int_sizes[self.type] self.intsize = int_sizes[self.type]
else: else:
print("ERROR integer %s with type: %s, could not be found" %(self.name, self.type)) print(("ERROR integer %s with type: %s, could not be found" %(self.name, self.type)))
if self.declare == "yes" or self.make_additional_info == "yes": if self.declare == "yes" or self.make_additional_info == "yes":
if self.basemessage.declared is None or self.name not in self.basemessage.declared: if self.basemessage.declared is None or self.name not in self.basemessage.declared:
@ -422,7 +422,7 @@ def xml2obj(src):
if self.type in enum_sizes: if self.type in enum_sizes:
self.intsize = enum_sizes[self.type] self.intsize = enum_sizes[self.type]
else: else:
print("ERROR enum %s with type: %s, could not be found" %(self.name, self.type)) print(("ERROR enum %s with type: %s, could not be found" %(self.name, self.type)))
if self.declare == "yes": if self.declare == "yes":
if self.basemessage.declared is None or self.name not in self.basemessage.declared: if self.basemessage.declared is None or self.name not in self.basemessage.declared:
@ -589,14 +589,14 @@ def xml2obj(src):
ret += self.indent_out('if (%s_len > 1) {\n' %self.name) ret += self.indent_out('if (%s_len > 1) {\n' %self.name)
if self.name in si_fields.keys(): if self.name in si_fields.keys():
ret += self.indent_out(' %s = g_strdup(tvb_format_stringzpad(pinfo->pool, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), %s_len));\n' %(si_fields[self.name], self.name)) ret += self.indent_out(' %s = g_strdup(tvb_format_stringzpad(pinfo->pool, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), %s_len));\n' %(si_fields[self.name], self.name))
ret += self.indent_out(' ptvcursor_add(cursor, hf_skinny_%s, %s_len, ENC_ASCII|ENC_NA);\n' %(self.name, self.name)) ret += self.indent_out(' ptvcursor_add(cursor, hf_skinny_%s, %s_len, ENC_ASCII);\n' %(self.name, self.name))
ret += self.indent_out('} else {\n') ret += self.indent_out('} else {\n')
ret += self.indent_out(' ptvcursor_advance(cursor, 1);\n') ret += self.indent_out(' ptvcursor_advance(cursor, 1);\n')
ret += self.indent_out('}\n') ret += self.indent_out('}\n')
elif self.size_fieldname: elif self.size_fieldname:
if self.name in si_fields.keys(): if self.name in si_fields.keys():
ret += self.indent_out('%s = g_strdup(tvb_format_stringzpad(pinfo->pool, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), %s));\n' %(si_fields[self.name], self.size_fieldname)) ret += self.indent_out('%s = g_strdup(tvb_format_stringzpad(pinfo->pool, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), %s));\n' %(si_fields[self.name], self.size_fieldname))
ret += self.indent_out('ptvcursor_add(cursor, hf_skinny_%s, %s, ENC_ASCII|ENC_NA);\n' %(self.name, self.size_fieldname)) ret += self.indent_out('ptvcursor_add(cursor, hf_skinny_%s, %s, ENC_ASCII);\n' %(self.name, self.size_fieldname))
else: else:
if self.name in si_fields.keys(): if self.name in si_fields.keys():
ret += self.indent_out('%s = g_strdup(tvb_format_stringzpad(pinfo->pool, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), %s));\n' %(si_fields[self.name], self.size)) ret += self.indent_out('%s = g_strdup(tvb_format_stringzpad(pinfo->pool, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), %s));\n' %(si_fields[self.name], self.size))
@ -612,7 +612,7 @@ def xml2obj(src):
self.decr_indent() self.decr_indent()
ret += self.indent_out('}\n') ret += self.indent_out('}\n')
ret += self.indent_out('ptvcursor_add(cursor, hf_skinny_%s, %s, ENC_ASCII|ENC_NA);\n' %(self.name, self.size)) ret += self.indent_out('ptvcursor_add(cursor, hf_skinny_%s, %s, ENC_ASCII);\n' %(self.name, self.size))
return ret return ret
@ -1028,7 +1028,7 @@ def xml2obj(src):
self.current.parent = self.previous self.current.parent = self.previous
self.current.basemessage = self.basemessage self.current.basemessage = self.basemessage
# xml attributes --> python attributes # xml attributes --> python attributes
for k, v in attrs.items(): for k, v in list(attrs.items()):
self.current._add_xml_attr(_name_mangle(k), v) self.current._add_xml_attr(_name_mangle(k), v)
def endElement(self, name): def endElement(self, name):
@ -1048,7 +1048,7 @@ def xml2obj(src):
builder = TreeBuilder() builder = TreeBuilder()
xml.sax.parse(src, builder) xml.sax.parse(src, builder)
return builder.root._attrs.values()[0] return list(builder.root._attrs.values())[0]
# skinny = xml2obj('SkinnyProtocolOptimized.xml') # skinny = xml2obj('SkinnyProtocolOptimized.xml')
# for message in skinny.message: # for message in skinny.message: