diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2009-07-05 05:41:00 +0000 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2009-07-05 05:41:00 +0000 |
commit | 18bc4c3242338712c39732f670c09dffef019d97 (patch) | |
tree | 76a4cefa92f360e4ab70ca04e7063da5c13a24eb /libpurple/dbus-server.c | |
parent | c0e15f5cdf15dc13afd822794ae483bd1c131b20 (diff) | |
download | pidgin-18bc4c3242338712c39732f670c09dffef019d97.tar.gz |
Add auto-generated D-Bus signals introspection, though parameter names
are not included at the moment.
Closes #3243.
Diffstat (limited to 'libpurple/dbus-server.c')
-rw-r--r-- | libpurple/dbus-server.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libpurple/dbus-server.c b/libpurple/dbus-server.c index 930a2a591a..efe59770f2 100644 --- a/libpurple/dbus-server.c +++ b/libpurple/dbus-server.c @@ -421,6 +421,7 @@ purple_dbus_get_connection(void) } #include "dbus-bindings.c" +#include "dbus-signals.c" static gboolean purple_dbus_dispatch_cb(DBusConnection *connection, @@ -489,6 +490,9 @@ static DBusMessage *purple_dbus_introspect(DBusMessage *message) DBusMessage *reply; GString *str; GList *bindings_list, *node; + const char *signals; + const char *type; + const char *pointer_type; str = g_string_sized_new(0x1000); /* TODO: why this size? */ @@ -529,6 +533,19 @@ static DBusMessage *purple_dbus_introspect(DBusMessage *message) } } + if (sizeof(int) == sizeof(dbus_int32_t)) + pointer_type = "type='i'"; + else + pointer_type = "type='x'"; + + signals = dbus_signals; + while ((type = strstr(signals, "type='p'")) != NULL) { + g_string_append_len(str, signals, type - signals); + g_string_append(str, pointer_type); + signals = type + sizeof("type='p'") - 1; + } + g_string_append(str, signals); + g_string_append(str, "</interface>\n</node>\n"); reply = dbus_message_new_method_return(message); |