Mercurial > pidgin
view libpurple/dbus-analyze-signals.py @ 28859:50256289be74
*** Plucked rev 1cd91846f484f7d7090d25b0e65d851a0dadcb90 (e894e488d2219b69664de488ee1af7f275f8817d):
Improved handling of the 0x00d charset in AIM, which is sent by mobile devices speaking ISO-8859-1. Try UTF-8 first (the encoding sent by iChat in a Direct IM with non-ASCII characters), then fall back to ISO-8859-1. Fixes #a13544, a bug created with the fix for iChat DIM encoding new in libpurple 2.6.4
applied changes from 6f3a1b3c52803e11d4cda1e0537c1270599e8d8e
through ed0a2a35c7e22519df27c50069c22b03e01c027a
*** Plucked rev e8ba4281669ae86859fd4e29f5d8ea0286af3903 (f05c54b03e6bbfdbff38c01697fbd353a969e05e):
Changelog the AIM/ICQ issue. Refs #10900.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 07 Jan 2010 23:43:26 +0000 |
parents | 3a0552df3379 |
children | 9f6b8e5998ec |
line wrap: on
line source
# This program takes a C source as the input and produces the list of # all signals registered. # # Output is: # <signal name="Changed"> # <arg name="new_value" type="b"/> # </signal> import re import sys # List "excluded" contains signals that shouldn't be exported via # DBus. If you remove a signal from this list, please make sure # that it does not break "make" with the configure option # "--enable-dbus" turned on. excluded = [\ # purple_dbus_signal_emit_purple prevents our "dbus-method-called" # signal from being propagated to dbus. "dbus-method-called", ] registerregex = re.compile("purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;") nameregex = re.compile('[-_][a-z]') print "/* Generated by %s. Do not edit! */" % sys.argv[0] print "const char *dbus_signals = " for match in registerregex.finditer(sys.stdin.read()): signal = match.group(1) marshal = match.group(2) if signal in excluded: continue signal = nameregex.sub(lambda x:x.group()[1].upper(), '-'+signal) print "\"<signal name='%s'>\\n\""%signal args = marshal.split('_') # ['purple', 'marshal', <return type>, '', args...] if len(args) > 4: for arg in args[4:]: if arg == "POINTER": type = 'p' elif arg == "ENUM": type = 'i' elif arg == "INT": type = 'i' elif arg == "UINT": type = 'u' elif arg == "INT64": type = 'x' elif arg == "UINT64": type = 't' elif arg == "BOOLEAN": type = 'b' print "\"<arg type='%s'/>\\n\""%type print "\"</signal>\\n\"" print ";"