Wireshark mailing list archives

Re: Regenerating packet-parlay.c


From: Luke Mewburn <luke () mewburn net>
Date: Fri, 1 May 2020 12:13:26 +1000

On 20-04-30 20:30, Jaap Keuter wrote:
  | On 4/30/20 2:41 AM, Luke Mewburn wrote:
  | > On 20-04-30 10:35, Luke Mewburn wrote:
  | >   | As to the problem; looking at the use of .keys() in wireshark_gen.py,
  | >   | there's a couple of places where the code is either:
  | >   | - get_intlist(), sorted:
  | >   |       ret = list(ex_hash.keys())
  | >   |       ret.sort()
  | >   |       return ret
  | >   | - get_exceptionList(), unsorted:
  | >   |       ret = list(ex_hash.keys())
  | >   |       return ret
  | >   | 
  | >   | Both could be simplified to an ordered result using sorted():
  | >   |       ret = sorted(ex_hash.keys())
  | >   |       return ret
  | > 
  | > I actually meant:
  | >   ret = sorted(ex_hash)
  | >   return ret
  | > 
  | > Because sorted() takes an iterable.
  | > That seems to work in both python2 and python3.
  | > 
  | > 
  | > Luke.
  | 
  | Hi,
  | 
  | tried this, but: in get_exceptionList
  | ret = sorted(ex_hash.keys())
  | TypeError: '<' not supported between instances of 'Exception' and 'Exception'

I've reproduced the problem; the correct invocation is:
        ret = sorted(ex_hash, key=lambda ex: ex.identifier())
        return ret


However, looking at the code some more, it appears that generally
wireshark_gen.py generates code in the order the operations are defined;
the exception (hah!) is the user exceptions.

If I instead add at the top
        import collections
and change get_exceptionList() from
        ex_hash = {}  # holds a hash of unique exceptions.
to
        ex_hash = collections.OrderedDict()  # holds a hash of unique exceptions.

This results in consistent generated code with both python 2.7 (CentOS 7)
and python 3.7 (Fedora 31).

I've also fixed a whitespace issue in the generated code by indenting
the break in template_helper_switch_msgtype_default_end, so that it
matches the epan/dissectors code and other default statements.


Here's a patch with my suggested fixes.
Or would you prefer a commit/pull request (etc)?


regards,
Luke.

Attachment: 0001-idl2wrs-generation-improvements.patch
Description:

Attachment: _bin
Description:

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

Current thread: