From 74b858ba4f2ea76919fcddf33d0282360275d8a6 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Fri, 15 Jan 2010 02:27:32 +0200 Subject: [PATCH] aliasing: workaround for set_alias() libpurple doesn't implement it, so let's check directly into the prpl. Signed-off-by: Felipe Contreras --- src/connection-aliasing.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/connection-aliasing.c b/src/connection-aliasing.c index 07332bc..fe1297c 100644 --- a/src/connection-aliasing.c +++ b/src/connection-aliasing.c @@ -177,6 +177,23 @@ struct _g_hash_table_foreach_all_in_my_brain }; static void +serv_set_alias (PurpleConnection *gc, + const char *alias) +{ + PurplePlugin *prpl; + void (*set_alias) (PurpleConnection *gc, const char *alias); + + if (!gc) + return; + + prpl = purple_connection_get_prpl (gc); + if (!g_module_symbol (prpl->handle, "set_alias", (void *) &set_alias)) + return; + + set_alias (gc, alias); +} + +static void set_aliases_foreach (gpointer key, gpointer value, gpointer user_data) @@ -198,9 +215,8 @@ set_aliases_foreach (gpointer key, } else if (handle == TP_BASE_CONNECTION (data->conn)->self_handle) { - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, - "Sadly, there's no general API in libpurple to set your own " - "server alias."); + serv_set_alias (purple_account_get_connection (data->conn->account), + new_alias); } else { -- 1.6.6