diff options
author | Xavier Claessens <xclaesse@gmail.com> | 2009-02-20 20:15:45 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2009-04-22 18:21:13 +0800 |
commit | 2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6 (patch) | |
tree | a6aa9cf4bb2627229afd3561ccbf00e3d0813904 /libempathy/empathy-utils.c | |
parent | 82d5338954ab7bf8e7c3995d6ee04d66d5be6fc6 (diff) | |
download | gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.tar gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.tar.gz gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.tar.bz2 gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.tar.lz gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.tar.xz gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.tar.zst gsoc2013-empathy-2c9b0fdb4a5e4187e4bee87a4a12a1d5ddb98bb6.zip |
Extract protocol from the connection's object-path and correctly set the special group for xmpp-local contacts.
Diffstat (limited to 'libempathy/empathy-utils.c')
-rw-r--r-- | libempathy/empathy-utils.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 047dd931e..8b140ad43 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -378,3 +378,32 @@ empathy_check_available_state (void) return TRUE; } + +gchar * +empathy_connection_get_protocol (TpConnection *connection, + gchar **ret_cmname) +{ + const gchar *object_path; + const gchar *cmname; + const gchar *proto; + const gchar *account; + gchar *ret; + + g_return_val_if_fail (TP_IS_CONNECTION (connection), NULL); + + /* Object path is in the form: + * /org/freedesktop/Telepathy/Connection/cmname/proto/account */ + object_path = tp_proxy_get_object_path (TP_PROXY (connection)); + cmname = object_path + strlen ("/org/freedesktop/Telepathy/Connection/"); + proto = strstr (cmname, "/") + 1; + account = strstr (proto, "/") + 1; + + if (ret_cmname) { + *ret_cmname = g_strndup (cmname, proto - cmname - 1); + g_strdelimit (*ret_cmname, "_", '-'); + } + + ret = g_strndup (proto, account - proto - 1); + return g_strdelimit (ret, "_", '-'); +} + |