diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-25 01:26:33 +0200 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-25 01:26:33 +0200 |
commit | 8b0121711986494410bb9d224e90a5dab1dcc601 (patch) | |
tree | d95384e6b7735f9523eff72de90feabcc804d90c /protocols/msn/msn_util.c | |
parent | f1f7b5e5d7f99419fc9b1a3d3ee3bce6e8602b10 (diff) |
MSN supports having people in multiple groups and BitlBee does not. When
moving people between groups, make sure they *are* removed from their old
group.
Diffstat (limited to 'protocols/msn/msn_util.c')
-rw-r--r-- | protocols/msn/msn_util.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/protocols/msn/msn_util.c b/protocols/msn/msn_util.c index 24f7e10e..cf119b1a 100644 --- a/protocols/msn/msn_util.c +++ b/protocols/msn/msn_util.c @@ -108,12 +108,24 @@ int msn_buddy_list_add( struct im_connection *ic, const char *list, const char * return msn_write( ic, buf, strlen( buf ) ); } -int msn_buddy_list_remove( struct im_connection *ic, char *list, char *who ) +int msn_buddy_list_remove( struct im_connection *ic, char *list, const char *who, const char *group ) { struct msn_data *md = ic->proto_data; - char buf[1024]; + char buf[1024], groupid[8]; + + *groupid = '\0'; + if( group ) + { + int i; + for( i = 0; i < md->groupcount; i ++ ) + if( g_strcasecmp( md->grouplist[i], group ) == 0 ) + { + g_snprintf( groupid, sizeof( groupid ), " %d", i ); + break; + } + } - g_snprintf( buf, sizeof( buf ), "REM %d %s %s\r\n", ++md->trId, list, who ); + g_snprintf( buf, sizeof( buf ), "REM %d %s %s%s\r\n", ++md->trId, list, who, groupid ); if( msn_write( ic, buf, strlen( buf ) ) ) return( 1 ); |