aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/msn/msn_util.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-06-09 01:35:13 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-06-09 01:35:13 +0100
commit6acc0332708b8c844f721dbda9c7ecb94b8dd232 (patch)
tree9fcd6b595b575a5f742842981f03caa58ee15072 /protocols/msn/msn_util.c
parent46d215d562f8e1aba2b24e2d1feab27337956d50 (diff)
Moving MSN contacts between groups is now possible, but no support yet for
creating new groups.
Diffstat (limited to 'protocols/msn/msn_util.c')
-rw-r--r--protocols/msn/msn_util.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/protocols/msn/msn_util.c b/protocols/msn/msn_util.c
index a8d24b30..f9c10e72 100644
--- a/protocols/msn/msn_util.c
+++ b/protocols/msn/msn_util.c
@@ -50,14 +50,26 @@ int msn_logged_in( struct im_connection *ic )
return( 0 );
}
-int msn_buddy_list_add( struct im_connection *ic, char *list, char *who, char *realname_ )
+int msn_buddy_list_add( struct im_connection *ic, const char *list, const char *who, const char *realname_, const char *group )
{
struct msn_data *md = ic->proto_data;
- char buf[1024], *realname;
+ char buf[1024], *realname, groupid[8];
realname = msn_http_encode( realname_ );
- g_snprintf( buf, sizeof( buf ), "ADD %d %s %s %s\r\n", ++md->trId, list, who, realname );
+ *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 ), "ADD %d %s %s %s%s\r\n", ++md->trId, list, who, realname, groupid );
if( msn_write( ic, buf, strlen( buf ) ) )
{
g_free( realname );
@@ -93,7 +105,7 @@ static void msn_buddy_ask_yes( void *data )
{
struct msn_buddy_ask_data *bla = data;
- msn_buddy_list_add( bla->ic, "AL", bla->handle, bla->realname );
+ msn_buddy_list_add( bla->ic, "AL", bla->handle, bla->realname, NULL );
imcb_ask_add( bla->ic, bla->handle, NULL );
@@ -106,7 +118,7 @@ static void msn_buddy_ask_no( void *data )
{
struct msn_buddy_ask_data *bla = data;
- msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname );
+ msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname, NULL );
g_free( bla->handle );
g_free( bla->realname );