Changes in protocols/msn/msn_util.c [e3413cc:70ac477]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/msn/msn_util.c
re3413cc r70ac477 51 51 } 52 52 53 int msn_buddy_list_add( struct im_connection *ic, c har *list, char *who, char *realname_)53 int msn_buddy_list_add( struct im_connection *ic, const char *list, const char *who, const char *realname_, const char *group ) 54 54 { 55 55 struct msn_data *md = ic->proto_data; 56 char buf[1024], *realname; 56 char buf[1024], *realname, groupid[8]; 57 58 *groupid = '\0'; 59 if( group ) 60 { 61 int i; 62 for( i = 0; i < md->groupcount; i ++ ) 63 if( g_strcasecmp( md->grouplist[i], group ) == 0 ) 64 { 65 g_snprintf( groupid, sizeof( groupid ), " %d", i ); 66 break; 67 } 68 69 if( *groupid == '\0' ) 70 { 71 /* Have to create this group, it doesn't exist yet. */ 72 struct msn_groupadd *ga; 73 GSList *l; 74 75 for( l = md->grpq; l; l = l->next ) 76 { 77 ga = l->data; 78 if( g_strcasecmp( ga->group, group ) == 0 ) 79 break; 80 } 81 82 ga = g_new0( struct msn_groupadd, 1 ); 83 ga->who = g_strdup( who ); 84 ga->group = g_strdup( group ); 85 md->grpq = g_slist_prepend( md->grpq, ga ); 86 87 if( l == NULL ) 88 { 89 char *groupname = msn_http_encode( group ); 90 g_snprintf( buf, sizeof( buf ), "ADG %d %s %d\r\n", ++md->trId, groupname, 0 ); 91 g_free( groupname ); 92 return msn_write( ic, buf, strlen( buf ) ); 93 } 94 else 95 { 96 /* This can happen if the user's doing lots of adds to a 97 new group at once; we're still waiting for the server 98 to confirm group creation. */ 99 return 1; 100 } 101 } 102 } 57 103 58 104 realname = msn_http_encode( realname_ ); 59 60 g_snprintf( buf, sizeof( buf ), "ADD %d %s %s %s\r\n", ++md->trId, list, who, realname ); 61 if( msn_write( ic, buf, strlen( buf ) ) ) 62 { 63 g_free( realname ); 64 65 return( 1 ); 66 } 67 105 g_snprintf( buf, sizeof( buf ), "ADD %d %s %s %s%s\r\n", ++md->trId, list, who, realname, groupid ); 68 106 g_free( realname ); 69 107 70 return ( 0);108 return msn_write( ic, buf, strlen( buf ) ); 71 109 } 72 110 … … 94 132 struct msn_buddy_ask_data *bla = data; 95 133 96 msn_buddy_list_add( bla->ic, "AL", bla->handle, bla->realname ); 97 98 if( imcb_find_buddy( bla->ic, bla->handle ) == NULL ) 99 imcb_ask_add( bla->ic, bla->handle, NULL ); 134 msn_buddy_list_add( bla->ic, "AL", bla->handle, bla->realname, NULL ); 135 136 imcb_ask_add( bla->ic, bla->handle, NULL ); 100 137 101 138 g_free( bla->handle ); … … 108 145 struct msn_buddy_ask_data *bla = data; 109 146 110 msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname );147 msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname, NULL ); 111 148 112 149 g_free( bla->handle );
Note: See TracChangeset
for help on using the changeset viewer.