aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/bee_chat.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/bee_chat.c')
-rw-r--r--protocols/bee_chat.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/protocols/bee_chat.c b/protocols/bee_chat.c
index 39110a10..e1d07925 100644
--- a/protocols/bee_chat.c
+++ b/protocols/bee_chat.c
@@ -79,6 +79,13 @@ void imcb_chat_free( struct groupchat *c )
g_free( c );
}
+static gboolean handle_is_self( struct im_connection *ic, const char *handle )
+{
+ return ( ic->acc->prpl->handle_is_self ) ?
+ ic->acc->prpl->handle_is_self( ic, handle ) :
+ ( ic->acc->prpl->handle_cmp( ic->acc->user, handle ) == 0 );
+}
+
void imcb_chat_msg( struct groupchat *c, const char *who, char *msg, uint32_t flags, time_t sent_at )
{
struct im_connection *ic = c->ic;
@@ -88,7 +95,7 @@ void imcb_chat_msg( struct groupchat *c, const char *who, char *msg, uint32_t fl
char *s;
/* Gaim sends own messages through this too. IRC doesn't want this, so kill them */
- if( g_strcasecmp( who, ic->acc->user ) == 0 )
+ if( handle_is_self( ic, who ) )
return;
bu = bee_user_by_handle( bee, ic, who );
@@ -138,7 +145,7 @@ void imcb_chat_topic( struct groupchat *c, char *who, char *topic, time_t set_at
if( who == NULL)
bu = NULL;
- else if( g_strcasecmp( who, ic->acc->user ) == 0 )
+ else if( handle_is_self( ic, who ) )
bu = bee->user;
else
bu = bee_user_by_handle( bee, ic, who );
@@ -160,7 +167,7 @@ void imcb_chat_add_buddy( struct groupchat *c, const char *handle )
if( set_getbool( &c->ic->bee->set, "debug" ) )
imcb_log( c->ic, "User %s added to conversation %p", handle, c );
- me = ic->acc->prpl->handle_cmp( handle, ic->acc->user ) == 0;
+ me = handle_is_self( ic, handle );
/* Most protocols allow people to join, even when they're not in
your contact list. Try to handle that here */
@@ -188,7 +195,7 @@ void imcb_chat_remove_buddy( struct groupchat *c, const char *handle, const char
imcb_log( ic, "User %s removed from conversation %p (%s)", handle, c, reason ? reason : "" );
/* It might be yourself! */
- if( g_strcasecmp( handle, ic->acc->user ) == 0 )
+ if( handle_is_self( ic, handle ) )
{
if( c->joined == 0 )
return;