Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/msn/msn_util.c

    r70ac477 re3413cc  
    5151}
    5252
    53 int msn_buddy_list_add( struct im_connection *ic, const char *list, const char *who, const char *realname_, const char *group )
     53int msn_buddy_list_add( struct im_connection *ic, char *list, char *who, char *realname_ )
    5454{
    5555        struct msn_data *md = ic->proto_data;
    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         }
     56        char buf[1024], *realname;
    10357       
    10458        realname = msn_http_encode( realname_ );
    105         g_snprintf( buf, sizeof( buf ), "ADD %d %s %s %s%s\r\n", ++md->trId, list, who, realname, groupid );
     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       
    10668        g_free( realname );
    10769       
    108         return msn_write( ic, buf, strlen( buf ) );
     70        return( 0 );
    10971}
    11072
     
    13294        struct msn_buddy_ask_data *bla = data;
    13395       
    134         msn_buddy_list_add( bla->ic, "AL", bla->handle, bla->realname, NULL );
    135        
    136         imcb_ask_add( bla->ic, bla->handle, NULL );
     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 );
    137100       
    138101        g_free( bla->handle );
     
    145108        struct msn_buddy_ask_data *bla = data;
    146109       
    147         msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname, NULL );
     110        msn_buddy_list_add( bla->ic, "BL", bla->handle, bla->realname );
    148111       
    149112        g_free( bla->handle );
Note: See TracChangeset for help on using the changeset viewer.