annotate libpurple/dbus-analyze-signals.py @ 31167:060739bdc84d

Suppress msgfmt errors by removing c-format markers This is unfortunate, but it's the best that I could come up with. The translator, Khaled Hosny, informed me that C does not allow you to skip positional format string arguments, and printf(3) on my system agrees. It does work on glibc, but I'm not sure if gettext guarantees this. It does make other guarantees about the printf implementation above those from C, but this involves replacing the printf function if the native one doesn't provide it. So, even assuming that gettext's printf allows this like glibc's does, gettext may not replace the printf function if the native C printf provides positional arguments but does not allow skipping them. Finally, intltool-update does not seem to put the c-format marker back, which actually surprised me. So we'll see how this goes long-term.
author Richard Laager <rlaager@wiktel.com>
date Wed, 26 Jan 2011 18:48:19 +0000
parents 9f6b8e5998ec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27291
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
1 # This program takes a C source as the input and produces the list of
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
2 # all signals registered.
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
3 #
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
4 # Output is:
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
5 # <signal name="Changed">
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
6 # <arg name="new_value" type="b"/>
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
7 # </signal>
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
8
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
9 import re
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
10 import sys
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
11
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
12 # List "excluded" contains signals that shouldn't be exported via
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
13 # DBus. If you remove a signal from this list, please make sure
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
14 # that it does not break "make" with the configure option
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
15 # "--enable-dbus" turned on.
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
16
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
17 excluded = [\
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
18 # purple_dbus_signal_emit_purple prevents our "dbus-method-called"
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
19 # signal from being propagated to dbus.
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
20 "dbus-method-called",
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
21 ]
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
22
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
23 registerregex = re.compile("purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;")
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
24 nameregex = re.compile('[-_][a-z]')
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
25
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
26 print "/* Generated by %s. Do not edit! */" % sys.argv[0]
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
27 print "const char *dbus_signals = "
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
28 for match in registerregex.finditer(sys.stdin.read()):
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
29 signal = match.group(1)
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
30 marshal = match.group(2)
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
31 if signal in excluded:
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
32 continue
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
33
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
34 signal = nameregex.sub(lambda x:x.group()[1].upper(), '-'+signal)
31112
9f6b8e5998ec Fix dbus introspection. Fixes #13073.
pidgin@modtwo.com
parents: 27291
diff changeset
35 print "\" <signal name='%s'>\\n\""%signal
27291
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
36
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
37 args = marshal.split('_')
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
38 # ['purple', 'marshal', <return type>, '', args...]
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
39 if len(args) > 4:
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
40 for arg in args[4:]:
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
41 if arg == "POINTER":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
42 type = 'p'
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
43 elif arg == "ENUM":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
44 type = 'i'
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
45 elif arg == "INT":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
46 type = 'i'
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
47 elif arg == "UINT":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
48 type = 'u'
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
49 elif arg == "INT64":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
50 type = 'x'
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
51 elif arg == "UINT64":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
52 type = 't'
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
53 elif arg == "BOOLEAN":
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
54 type = 'b'
31112
9f6b8e5998ec Fix dbus introspection. Fixes #13073.
pidgin@modtwo.com
parents: 27291
diff changeset
55 print "\" <arg type='%s'/>\\n\""%type
27291
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
56
31112
9f6b8e5998ec Fix dbus introspection. Fixes #13073.
pidgin@modtwo.com
parents: 27291
diff changeset
57 print "\" </signal>\\n\""
27291
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
58
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
59 print ";"
3a0552df3379 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
60