Changes in / [83e2d30:3709301]


Ignore:
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • ipc.c

    r83e2d30 r3709301  
    22  * BitlBee -- An IRC to other IM-networks gateway                     *
    33  *                                                                    *
    4   * Copyright 2002-2006 Wilmer van der Gaast and others                *
     4  * Copyright 2002-2010 Wilmer van der Gaast and others                *
    55  \********************************************************************/
    66
     
    2929#include "commands.h"
    3030#ifndef _WIN32
     31#include <sys/uio.h>
    3132#include <sys/un.h>
    3233#endif
  • ipc.h

    r83e2d30 r3709301  
    22  * BitlBee -- An IRC to other IM-networks gateway                     *
    33  *                                                                    *
    4   * Copyright 2002-2004 Wilmer van der Gaast and others                *
     4  * Copyright 2002-2010 Wilmer van der Gaast and others                *
    55  \********************************************************************/
    66
     
    2626#define BITLBEE_CORE
    2727#include "bitlbee.h"
    28 #include <sys/uio.h>
    2928
    3029
  • irc_channel.c

    r83e2d30 r3709301  
    549549        icc->type = IRC_CC_TYPE_DEFAULT;
    550550       
    551         if( bee_group_by_name( ic->irc->b, ic->name + 1, FALSE ) )
    552         {
    553                 set_setstr( &ic->set, "group", ic->name + 1 );
    554                 set_setstr( &ic->set, "fill_by", "group" );
    555         }
    556         else if( set_setstr( &ic->set, "protocol", ic->name + 1 ) )
    557         {
    558                 set_setstr( &ic->set, "fill_by", "protocol" );
    559         }
    560         else if( set_setstr( &ic->set, "account", ic->name + 1 ) )
    561         {
    562                 set_setstr( &ic->set, "fill_by", "account" );
    563         }
    564         else
    565         {
    566                 bee_irc_channel_update( ic->irc, ic, NULL );
    567         }
    568        
    569551        return TRUE;
    570552}
  • irc_commands.c

    r83e2d30 r3709301  
    141141               
    142142                if( ( ic = irc_channel_by_name( irc, s ) ) == NULL )
     143                {
    143144                        ic = irc_channel_new( irc, s );
     145                       
     146                        if( strcmp( set_getstr( &ic->set, "type" ), "control" ) != 0 )
     147                        {
     148                                /* Autoconfiguration is for control channels only ATM. */
     149                        }
     150                        else if( bee_group_by_name( ic->irc->b, ic->name + 1, FALSE ) )
     151                        {
     152                                set_setstr( &ic->set, "group", ic->name + 1 );
     153                                set_setstr( &ic->set, "fill_by", "group" );
     154                        }
     155                        else if( set_setstr( &ic->set, "protocol", ic->name + 1 ) )
     156                        {
     157                                set_setstr( &ic->set, "fill_by", "protocol" );
     158                        }
     159                        else if( set_setstr( &ic->set, "account", ic->name + 1 ) )
     160                        {
     161                                set_setstr( &ic->set, "fill_by", "account" );
     162                        }
     163                        else
     164                        {
     165                                bee_irc_channel_update( ic->irc, ic, NULL );
     166                        }
     167                }
    144168               
    145169                if( ic == NULL )
     
    202226                irc_send_num( irc, 403, "%s :No such channel", cmd[1] );
    203227        }
    204         else if( irc_channel_del_user( ic, irc->user, FALSE, cmd[2] ) )
     228        else if( irc_channel_del_user( ic, irc->user, IRC_CDU_PART, cmd[2] ) )
    205229        {
    206230                if( ic->f->part )
  • irc_im.c

    r83e2d30 r3709301  
    451451        irc_channel_t *ic = c->ui_data;
    452452       
     453        if( ic == NULL )
     454                return FALSE;
     455       
    453456        if( ic->flags & IRC_CHANNEL_JOINED )
    454457                irc_channel_printf( ic, "Cleaning up channel, bye!" );
     
    463466{
    464467        irc_channel_t *ic = c->ui_data;
     468       
     469        if( ic == NULL )
     470                return FALSE;
    465471       
    466472        irc_channel_printf( ic, "%s", text );
     
    476482        char *ts = NULL;
    477483       
     484        if( ic == NULL )
     485                return FALSE;
     486       
    478487        if( sent_at > 0 && set_getbool( &bee->set, "display_timestamps" ) )
    479488                ts = irc_format_timestamp( irc, sent_at );
     
    488497{
    489498        irc_t *irc = bee->ui_data;
    490        
    491         irc_channel_add_user( c->ui_data, bu == bee->user ? irc->user : bu->ui_data );
     499        irc_channel_t *ic = c->ui_data;
     500       
     501        if( ic == NULL )
     502                return FALSE;
     503       
     504        irc_channel_add_user( ic, bu == bee->user ? irc->user : bu->ui_data );
    492505       
    493506        return TRUE;
     
    497510{
    498511        irc_t *irc = bee->ui_data;
     512        irc_channel_t *ic = c->ui_data;
     513       
     514        if( ic == NULL )
     515                return FALSE;
    499516       
    500517        /* TODO: Possible bug here: If a module removes $user here instead of just
    501518           using imcb_chat_free() and the channel was IRC_CHANNEL_TEMP, we get into
    502519           a broken state around here. */
    503         irc_channel_del_user( c->ui_data, bu == bee->user ? irc->user : bu->ui_data, IRC_CDU_PART, NULL );
     520        irc_channel_del_user( ic, bu == bee->user ? irc->user : bu->ui_data, IRC_CDU_PART, NULL );
    504521       
    505522        return TRUE;
     
    508525static gboolean bee_irc_chat_topic( bee_t *bee, struct groupchat *c, const char *new, bee_user_t *bu )
    509526{
     527        irc_channel_t *ic = c->ui_data;
    510528        irc_t *irc = bee->ui_data;
    511529        irc_user_t *iu;
     530       
     531        if( ic == NULL )
     532                return FALSE;
    512533       
    513534        if( bu == NULL )
     
    518539                iu = bu->ui_data;
    519540       
    520         irc_channel_set_topic( c->ui_data, new, iu );
     541        irc_channel_set_topic( ic, new, iu );
    521542       
    522543        return TRUE;
     
    528549        irc_channel_t *ic = c->ui_data, *oic;
    529550        char stripped[MAX_NICK_LENGTH+1], *full_name;
     551       
     552        if( ic == NULL )
     553                return FALSE;
    530554       
    531555        /* Don't rename a channel if the user's in it already. */
     
    786810static gboolean bee_irc_channel_free( irc_channel_t *ic )
    787811{
     812        struct groupchat *c = ic->data;
     813       
    788814        set_del( &ic->set, "account" );
    789815        set_del( &ic->set, "chat_type" );
     
    793819       
    794820        ic->flags &= ~IRC_CHANNEL_TEMP;
     821       
     822        /* That one still points at this channel. Don't. */
     823        if( c )
     824                c->ui_data = NULL;
    795825       
    796826        return TRUE;
Note: See TracChangeset for help on using the changeset viewer.