Mercurial > pidgin
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 |
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 | 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 | 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 | 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 |