Changeset d860a8d for protocols/nogaim.c


Ignore:
Timestamp:
2010-04-01T03:38:50Z (11 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
e63507a
Parents:
81e04e1
Message:

Restored "account" root command and restored enough stuff to be able to
send messages. Also started moving stuff out from nogaim.* into bee_* files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/nogaim.c

    r81e04e1 rd860a8d  
    546546        data->handle = g_strdup( handle );
    547547        query_add( ic->irc, ic, s, imcb_ask_add_cb_yes, imcb_ask_add_cb_no, data );
    548 #endif
    549 }
    550 
    551 void imcb_buddy_status( struct im_connection *ic, const char *handle, int flags, const char *state, const char *message )
    552 {
    553         bee_t *bee = ic->bee;
    554         bee_user_t *bu, *old;
    555        
    556         if( !( bu = bee_user_by_handle( bee, ic, handle ) ) )
    557         {
    558                 if( g_strcasecmp( set_getstr( &ic->bee->set, "handle_unknown" ), "add" ) == 0 )
    559                 {
    560                         bu = bee_user_new( bee, ic, handle );
    561                 }
    562                 else
    563                 {
    564                         if( set_getbool( &ic->bee->set, "debug" ) || g_strcasecmp( set_getstr( &ic->bee->set, "handle_unknown" ), "ignore" ) != 0 )
    565                         {
    566                                 imcb_log( ic, "imcb_buddy_status() for unknown handle %s:", handle );
    567                                 imcb_log( ic, "flags = %d, state = %s, message = %s", flags,
    568                                           state ? state : "NULL", message ? message : "NULL" );
    569                         }
    570                        
    571                         return;
    572                 }
    573         }
    574        
    575         /* May be nice to give the UI something to compare against. */
    576         old = g_memdup( bu, sizeof( bee_user_t ) );
    577        
    578         /* TODO(wilmer): OPT_AWAY, or just state == NULL ? */
    579         bu->flags = ( flags & OPT_LOGGED_IN ? BEE_USER_ONLINE : 0 ) |
    580                     ( flags & OPT_AWAY ? BEE_USER_AWAY : 0 );
    581         bu->status = g_strdup( ( flags & OPT_AWAY ) && state == NULL ? "Away" : state );
    582         bu->status_msg = g_strdup( message );
    583        
    584         if( bee->ui->user_status )
    585                 bee->ui->user_status( bee, bu, old );
    586        
    587         g_free( old->status_msg );
    588         g_free( old->status );
    589         g_free( old );
    590 #if 0   
    591         oa = u->away != NULL;
    592         oo = u->online;
    593        
    594         g_free( u->away );
    595         g_free( u->status_msg );
    596         u->away = u->status_msg = NULL;
    597        
    598         if( ( flags & OPT_LOGGED_IN ) && !u->online )
    599         {
    600                 irc_spawn( ic->irc, u );
    601                 u->online = 1;
    602         }
    603         else if( !( flags & OPT_LOGGED_IN ) && u->online )
    604         {
    605                 struct groupchat *c;
    606                
    607                 irc_kill( ic->irc, u );
    608                 u->online = 0;
    609                
    610                 /* Remove him/her from the groupchats to prevent PART messages after he/she QUIT already */
    611                 for( c = ic->groupchats; c; c = c->next )
    612                         remove_chat_buddy_silent( c, handle );
    613         }
    614        
    615         if( flags & OPT_AWAY )
    616         {
    617                 if( state && message )
    618                 {
    619                         u->away = g_strdup_printf( "%s (%s)", state, message );
    620                 }
    621                 else if( state )
    622                 {
    623                         u->away = g_strdup( state );
    624                 }
    625                 else if( message )
    626                 {
    627                         u->away = g_strdup( message );
    628                 }
    629                 else
    630                 {
    631                         u->away = g_strdup( "Away" );
    632                 }
    633         }
    634         else
    635         {
    636                 u->status_msg = g_strdup( message );
    637         }
    638        
    639         /* LISPy... */
    640         if( ( set_getbool( &ic->bee->set, "away_devoice" ) ) &&         /* Don't do a thing when user doesn't want it */
    641             ( u->online ) &&                                            /* Don't touch offline people */
    642             ( ( ( u->online != oo ) && !u->away ) ||                    /* Voice joining people */
    643               ( ( u->online == oo ) && ( oa == !u->away ) ) ) )         /* (De)voice people changing state */
    644         {
    645                 char *from;
    646                
    647                 if( set_getbool( &ic->bee->set, "simulate_netsplit" ) )
    648                 {
    649                         from = g_strdup( ic->irc->myhost );
    650                 }
    651                 else
    652                 {
    653                         from = g_strdup_printf( "%s!%s@%s", ic->irc->mynick, ic->irc->mynick,
    654                                                             ic->irc->myhost );
    655                 }
    656                 irc_write( ic->irc, ":%s MODE %s %cv %s", from, ic->irc->channel,
    657                                                           u->away?'-':'+', u->nick );
    658                 g_free( from );
    659         }
    660 #endif
    661 }
    662 
    663 void imcb_buddy_msg( struct im_connection *ic, const char *handle, char *msg, uint32_t flags, time_t sent_at )
    664 {
    665 #if 0
    666         bee_t *bee = ic->bee;
    667         char *wrapped;
    668         user_t *u;
    669        
    670         u = user_findhandle( ic, handle );
    671        
    672         if( !u )
    673         {
    674                 char *h = set_getstr( &bee->set, "handle_unknown" );
    675                
    676                 if( g_strcasecmp( h, "ignore" ) == 0 )
    677                 {
    678                         if( set_getbool( &bee->set, "debug" ) )
    679                                 imcb_log( ic, "Ignoring message from unknown handle %s", handle );
    680                        
    681                         return;
    682                 }
    683                 else if( g_strncasecmp( h, "add", 3 ) == 0 )
    684                 {
    685                         int private = set_getbool( &bee->set, "private" );
    686                        
    687                         if( h[3] )
    688                         {
    689                                 if( g_strcasecmp( h + 3, "_private" ) == 0 )
    690                                         private = 1;
    691                                 else if( g_strcasecmp( h + 3, "_channel" ) == 0 )
    692                                         private = 0;
    693                         }
    694                        
    695                         imcb_add_buddy( ic, handle, NULL );
    696                         u = user_findhandle( ic, handle );
    697                         u->is_private = private;
    698                 }
    699                 else
    700                 {
    701                         imcb_log( ic, "Message from unknown handle %s:", handle );
    702                         u = user_find( irc, irc->mynick );
    703                 }
    704         }
    705        
    706         if( ( g_strcasecmp( set_getstr( &ic->bee->set, "strip_html" ), "always" ) == 0 ) ||
    707             ( ( ic->flags & OPT_DOES_HTML ) && set_getbool( &ic->bee->set, "strip_html" ) ) )
    708                 strip_html( msg );
    709 
    710         wrapped = word_wrap( msg, 425 );
    711         irc_msgfrom( irc, u->nick, wrapped );
    712         g_free( wrapped );
    713548#endif
    714549}
     
    1035870   them all from some wrappers. We'll start to define some down here: */
    1036871
    1037 int imc_buddy_msg( struct im_connection *ic, char *handle, char *msg, int flags )
    1038 {
    1039         char *buf = NULL;
    1040         int st;
    1041        
    1042         if( ( ic->flags & OPT_DOES_HTML ) && ( g_strncasecmp( msg, "<html>", 6 ) != 0 ) )
    1043         {
    1044                 buf = escape_html( msg );
    1045                 msg = buf;
    1046         }
    1047        
    1048         st = ic->acc->prpl->buddy_msg( ic, handle, msg, flags );
    1049         g_free( buf );
    1050        
    1051         return st;
    1052 }
    1053 
    1054872int imc_chat_msg( struct groupchat *c, char *msg, int flags )
    1055873{
Note: See TracChangeset for help on using the changeset viewer.