Changeset 226fce1


Ignore:
Timestamp:
2006-05-23T07:45:14Z (18 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
da3b536
Parents:
73cf7fd
Message:

Some changes for im_api. (bim_* functions)

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • irc.c

    r73cf7fd r226fce1  
    10111011        else if( c && c->gc && c->gc->prpl )
    10121012        {
    1013                 return( serv_send_chat( irc, c->gc, c->id, s ) );
     1013                return( bim_chat_msg( c->gc, c->id, s ) );
    10141014        }
    10151015       
     
    10211021        user_t *u = data;
    10221022       
     1023        /* Shouldn't happen, but just to be sure. */
     1024        if( u->sendbuf_len < 2 )
     1025                return FALSE;
     1026       
    10231027        u->sendbuf[u->sendbuf_len-2] = 0; /* Cut off the last newline */
    1024         serv_send_im( u->gc->irc, u, u->sendbuf, u->sendbuf_flags );
     1028        bim_buddy_msg( u->gc, u->handle, u->sendbuf, u->sendbuf_flags );
    10251029       
    10261030        g_free( u->sendbuf );
     
    10301034        u->sendbuf_flags = 0;
    10311035       
    1032         return( FALSE );
     1036        return FALSE;
    10331037}
    10341038
     
    10431047                if( u->sendbuf_len > 0 && u->sendbuf_flags != flags)
    10441048                {
    1045                         //Flush the buffer
     1049                        /* Flush the buffer */
    10461050                        g_source_remove( u->sendbuf_timer );
    10471051                        buddy_send_handler_delayed( u );
     
    10511055                {
    10521056                        u->sendbuf_len = strlen( msg ) + 2;
    1053                         u->sendbuf = g_new (char, u->sendbuf_len );
     1057                        u->sendbuf = g_new( char, u->sendbuf_len );
    10541058                        u->sendbuf[0] = 0;
    10551059                        u->sendbuf_flags = flags;
     
    10581062                {
    10591063                        u->sendbuf_len += strlen( msg ) + 1;
    1060                         u->sendbuf = g_renew ( char, u->sendbuf, u->sendbuf_len );
     1064                        u->sendbuf = g_renew( char, u->sendbuf, u->sendbuf_len );
    10611065                }
    10621066               
     
    10741078        else
    10751079        {
    1076                 serv_send_im( irc, u, msg, flags );
     1080                bim_buddy_msg( u->gc, u->handle, msg, flags );
    10771081        }
    10781082}
  • irc_commands.c

    r73cf7fd r226fce1  
    448448               
    449449                if( gc && gc->flags & OPT_LOGGED_IN )
    450                         proto_away( gc, u->away );
     450                        bim_set_away( gc, u->away );
    451451        }
    452452}
  • protocols/nogaim.c

    r73cf7fd r226fce1  
    3838#include <ctype.h>
    3939
    40 static char *proto_away_alias[8][5] =
    41 {
    42         { "Away from computer", "Away", "Extended away", NULL },
    43         { "NA", "N/A", "Not available", NULL },
    44         { "Busy", "Do not disturb", "DND", "Occupied", NULL },
    45         { "Be right back", "BRB", NULL },
    46         { "On the phone", "Phone", "On phone", NULL },
    47         { "Out to lunch", "Lunch", "Food", NULL },
    48         { "Invisible", "Hidden" },
    49         { NULL }
    50 };
    51 static char *proto_away_alias_find( GList *gcm, char *away );
    52 
    5340static int remove_chat_buddy_silent( struct conversation *b, char *handle );
    5441
     
    158145GSList *get_connections() { return connections; }
    159146
    160 int proto_away( struct gaim_connection *gc, char *away )
    161 {
    162         GList *m, *ms;
    163         char *s;
    164        
    165         if( !away ) away = "";
    166         ms = m = gc->prpl->away_states( gc );
    167        
    168         while( m )
    169         {
    170                 if( *away )
    171                 {
    172                         if( g_strncasecmp( m->data, away, strlen( m->data ) ) == 0 )
    173                                 break;
    174                 }
    175                 else
    176                 {
    177                         if( g_strcasecmp( m->data, "Available" ) == 0 )
    178                                 break;
    179                         if( g_strcasecmp( m->data, "Online" ) == 0 )
    180                                 break;
    181                 }
    182                 m = m->next;
    183         }
    184        
    185         if( m )
    186         {
    187                 gc->prpl->set_away( gc, m->data, *away ? away : NULL );
    188         }
    189         else
    190         {
    191                 s = proto_away_alias_find( ms, away );
    192                 if( s )
    193                 {
    194                         gc->prpl->set_away( gc, s, away );
    195                         if( set_getint( gc->irc, "debug" ) )
    196                                 serv_got_crap( gc, "Setting away state to %s", s );
    197                 }
    198                 else
    199                         gc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );
    200         }
    201        
    202         g_list_free( ms );
    203        
    204         return( 1 );
    205 }
    206 
    207 static char *proto_away_alias_find( GList *gcm, char *away )
    208 {
    209         GList *m;
    210         int i, j;
    211        
    212         for( i = 0; *proto_away_alias[i]; i ++ )
    213         {
    214                 for( j = 0; proto_away_alias[i][j]; j ++ )
    215                         if( g_strncasecmp( away, proto_away_alias[i][j], strlen( proto_away_alias[i][j] ) ) == 0 )
    216                                 break;
    217                
    218                 if( !proto_away_alias[i][j] )   /* If we reach the end, this row */
    219                         continue;               /* is not what we want. Next!    */
    220                
    221                 /* Now find an entry in this row which exists in gcm */
    222                 for( j = 0; proto_away_alias[i][j]; j ++ )
    223                 {
    224                         m = gcm;
    225                         while( m )
    226                         {
    227                                 if( g_strcasecmp( proto_away_alias[i][j], m->data ) == 0 )
    228                                         return( proto_away_alias[i][j] );
    229                                 m = m->next;
    230                         }
    231                 }
    232         }
    233        
    234         return( NULL );
    235 }
    236 
    237147/* multi.c */
    238148
     
    359269        /* Also necessary when we're not away, at least for some of the
    360270           protocols. */
    361         proto_away( gc, u->away );
     271        bim_set_away( gc, u->away );
    362272}
    363273
     
    1031941}
    1032942
    1033 int serv_send_im( irc_t *irc, user_t *u, char *msg, int flags )
     943
     944
     945
     946/* The plan is to not allow straight calls to prpl functions anymore, but do
     947   them all from some wrappers. We'll start to define some down here: */
     948
     949int bim_buddy_msg( struct gaim_connection *gc, char *handle, char *msg, int flags )
    1034950{
    1035951        char *buf = NULL;
    1036952        int st;
    1037953       
    1038         if( ( u->gc->flags & OPT_CONN_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) )
     954        if( ( gc->flags & OPT_CONN_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) )
    1039955        {
    1040956                buf = escape_html( msg );
     
    1042958        }
    1043959       
    1044         st = ((struct gaim_connection *)u->gc)->prpl->send_im( u->gc, u->handle, msg, strlen( msg ), flags );
     960        st = gc->prpl->send_im( gc, handle, msg, strlen( msg ), flags );
    1045961        g_free( buf );
    1046962       
     
    1048964}
    1049965
    1050 int serv_send_chat( irc_t *irc, struct gaim_connection *gc, int id, char *msg )
     966int bim_chat_msg( struct gaim_connection *gc, int id, char *msg )
    1051967{
    1052968        char *buf = NULL;
     
    1064980        return st;
    1065981}
     982
     983static char *bim_away_alias_find( GList *gcm, char *away );
     984
     985int bim_set_away( struct gaim_connection *gc, char *away )
     986{
     987        GList *m, *ms;
     988        char *s;
     989       
     990        if( !away ) away = "";
     991        ms = m = gc->prpl->away_states( gc );
     992       
     993        while( m )
     994        {
     995                if( *away )
     996                {
     997                        if( g_strncasecmp( m->data, away, strlen( m->data ) ) == 0 )
     998                                break;
     999                }
     1000                else
     1001                {
     1002                        if( g_strcasecmp( m->data, "Available" ) == 0 )
     1003                                break;
     1004                        if( g_strcasecmp( m->data, "Online" ) == 0 )
     1005                                break;
     1006                }
     1007                m = m->next;
     1008        }
     1009       
     1010        if( m )
     1011        {
     1012                gc->prpl->set_away( gc, m->data, *away ? away : NULL );
     1013        }
     1014        else
     1015        {
     1016                s = bim_away_alias_find( ms, away );
     1017                if( s )
     1018                {
     1019                        gc->prpl->set_away( gc, s, away );
     1020                        if( set_getint( gc->irc, "debug" ) )
     1021                                serv_got_crap( gc, "Setting away state to %s", s );
     1022                }
     1023                else
     1024                        gc->prpl->set_away( gc, GAIM_AWAY_CUSTOM, away );
     1025        }
     1026       
     1027        g_list_free( ms );
     1028       
     1029        return( 1 );
     1030}
     1031
     1032static char *bim_away_alias_list[8][5] =
     1033{
     1034        { "Away from computer", "Away", "Extended away", NULL },
     1035        { "NA", "N/A", "Not available", NULL },
     1036        { "Busy", "Do not disturb", "DND", "Occupied", NULL },
     1037        { "Be right back", "BRB", NULL },
     1038        { "On the phone", "Phone", "On phone", NULL },
     1039        { "Out to lunch", "Lunch", "Food", NULL },
     1040        { "Invisible", "Hidden" },
     1041        { NULL }
     1042};
     1043
     1044static char *bim_away_alias_find( GList *gcm, char *away )
     1045{
     1046        GList *m;
     1047        int i, j;
     1048       
     1049        for( i = 0; *bim_away_alias_list[i]; i ++ )
     1050        {
     1051                for( j = 0; bim_away_alias_list[i][j]; j ++ )
     1052                        if( g_strncasecmp( away, bim_away_alias_list[i][j], strlen( bim_away_alias_list[i][j] ) ) == 0 )
     1053                                break;
     1054               
     1055                if( !bim_away_alias_list[i][j] )        /* If we reach the end, this row */
     1056                        continue;                       /* is not what we want. Next!    */
     1057               
     1058                /* Now find an entry in this row which exists in gcm */
     1059                for( j = 0; bim_away_alias_list[i][j]; j ++ )
     1060                {
     1061                        m = gcm;
     1062                        while( m )
     1063                        {
     1064                                if( g_strcasecmp( bim_away_alias_list[i][j], m->data ) == 0 )
     1065                                        return( bim_away_alias_list[i][j] );
     1066                                m = m->next;
     1067                        }
     1068                }
     1069        }
     1070       
     1071        return( NULL );
     1072}
  • protocols/nogaim.h

    r73cf7fd r226fce1  
    194194
    195195/* nogaim.c */
    196 int serv_send_im(irc_t *irc, user_t *u, char *msg, int flags);
    197 int serv_send_chat(irc_t *irc, struct gaim_connection *gc, int id, char *msg );
     196int bim_set_away( struct gaim_connection *gc, char *away );
     197int bim_buddy_msg( struct gaim_connection *gc, char *handle, char *msg, int flags );
     198int bim_chat_msg( struct gaim_connection *gc, int id, char *msg );
    198199
    199200void nogaim_init();
    200 int proto_away( struct gaim_connection *gc, char *away );
    201201char *set_eval_away_devoice( irc_t *irc, set_t *set, char *value );
    202202
Note: See TracChangeset for help on using the changeset viewer.