diff options
Diffstat (limited to 'irc.c')
| -rw-r--r-- | irc.c | 50 | 
1 files changed, 27 insertions, 23 deletions
| @@ -229,9 +229,8 @@ void irc_free(irc_t * irc)  	irc_connection_list = g_slist_remove( irc_connection_list, irc );  	for (account = irc->accounts; account; account = account->next) { -		if (account->gc) { -			account->gc->wants_to_die = TRUE; -			signoff(account->gc); +		if (account->ic) { +			imc_logout(account->ic, TRUE);  		} else if (account->reconnect) {  			cancel_auto_reconnect(account);  		} @@ -255,7 +254,12 @@ void irc_free(irc_t * irc)  		query_del(irc, irc->queries);  	while (irc->accounts) -		account_del(irc, irc->accounts); +		if (irc->accounts->ic == NULL) +			account_del(irc, irc->accounts); +		else +			/* Nasty hack, but account_del() doesn't work in this +			   case and we don't want infinite loops, do we? ;-) */ +			irc->accounts = irc->accounts->next;  	while (irc->set)  		set_del(&irc->set, irc->set->key); @@ -627,7 +631,7 @@ void irc_names( irc_t *irc, char *channel )  {  	user_t *u;  	char namelist[385] = ""; -	struct conversation *c = NULL; +	struct groupchat *c = NULL;  	char *ops = set_getstr( &irc->set, "ops" );  	/* RFCs say there is no error reply allowed on NAMES, so when the @@ -643,7 +647,7 @@ void irc_names( irc_t *irc, char *channel )  				*namelist = 0;  			} -			if( u->gc && !u->away && set_getbool( &irc->set, "away_devoice" ) ) +			if( u->ic && !u->away && set_getbool( &irc->set, "away_devoice" ) )  				strcat( namelist, "+" );  			else if( ( strcmp( u->nick, irc->mynick ) == 0 && ( strcmp( ops, "root" ) == 0 || strcmp( ops, "both" ) == 0 ) ) ||  			         ( strcmp( u->nick, irc->nick ) == 0 && ( strcmp( ops, "user" ) == 0 || strcmp( ops, "both" ) == 0 ) ) ) @@ -653,7 +657,7 @@ void irc_names( irc_t *irc, char *channel )  			strcat( namelist, " " );  		}  	} -	else if( ( c = conv_findchannel( channel ) ) ) +	else if( ( c = chat_by_channel( channel ) ) )  	{  		GList *l; @@ -662,7 +666,7 @@ void irc_names( irc_t *irc, char *channel )  		sprintf( namelist, "%s%s %s%s ", strcmp( ops, "root" ) == 0 || strcmp( ops, "both" ) ? "@" : "", irc->mynick,  		                                 strcmp( ops, "user" ) == 0 || strcmp( ops, "both" ) ? "@" : "", irc->nick ); -		for( l = c->in_room; l; l = l->next ) if( ( u = user_findhandle( c->gc, l->data ) ) ) +		for( l = c->in_room; l; l = l->next ) if( ( u = user_findhandle( c->ic, l->data ) ) )  		{  			if( strlen( namelist ) + strlen( u->nick ) > sizeof( namelist ) - 4 )  			{ @@ -806,7 +810,7 @@ void irc_topic( irc_t *irc, char *channel )  	}  	else  	{ -		struct conversation *c = conv_findchannel( channel ); +		struct groupchat *c = chat_by_channel( channel );  		if( c )  			irc_reply( irc, 332, "%s :BitlBee groupchat: \"%s\". Please keep in mind that root-commands won't work here. Have fun!", channel, c->title ); @@ -905,17 +909,17 @@ void irc_kill( irc_t *irc, user_t *u )  	char *nick, *s;  	char reason[128]; -	if( u->gc && u->gc->flags & OPT_LOGGING_OUT ) +	if( u->ic && u->ic->flags & OPT_LOGGING_OUT )  	{ -		if( u->gc->acc->server ) +		if( u->ic->acc->server )  			g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost, -			            u->gc->acc->server ); -		else if( ( s = strchr( u->gc->username, '@' ) ) ) +			            u->ic->acc->server ); +		else if( ( s = strchr( u->ic->acc->user, '@' ) ) )  			g_snprintf( reason, sizeof( reason ), "%s %s", irc->myhost,  			            s + 1 );  		else  			g_snprintf( reason, sizeof( reason ), "%s %s.%s", irc->myhost, -			            u->gc->acc->prpl->name, irc->myhost ); +			            u->ic->acc->prpl->name, irc->myhost );  		/* proto_opt might contain garbage after the : */  		if( ( s = strchr( reason, ':' ) ) ) @@ -939,12 +943,12 @@ void irc_kill( irc_t *irc, user_t *u )  int irc_send( irc_t *irc, char *nick, char *s, int flags )  { -	struct conversation *c = NULL; +	struct groupchat *c = NULL;  	user_t *u = NULL;  	if( *nick == '#' || *nick == '&' )  	{ -		if( !( c = conv_findchannel( nick ) ) ) +		if( !( c = chat_by_channel( nick ) ) )  		{  			irc_reply( irc, 403, "%s :Channel does not exist", nick );  			return( 0 ); @@ -991,13 +995,13 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags )  		}  		else if( g_strncasecmp( s + 1, "TYPING", 6 ) == 0 )  		{ -			if( u && u->gc && u->gc->acc->prpl->send_typing && strlen( s ) >= 10 ) +			if( u && u->ic && u->ic->acc->prpl->send_typing && strlen( s ) >= 10 )  			{  				time_t current_typing_notice = time( NULL );  				if( current_typing_notice - u->last_typing_notice >= 5 )  				{ -					u->gc->acc->prpl->send_typing( u->gc, u->handle, s[8] == '1' ); +					u->ic->acc->prpl->send_typing( u->ic, u->handle, ( s[8] - '0' ) << 8 );  					u->last_typing_notice = current_typing_notice;  				}  			} @@ -1030,9 +1034,9 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags )  			return 1;  		}  	} -	else if( c && c->gc && c->gc->acc && c->gc->acc->prpl ) +	else if( c && c->ic && c->ic->acc && c->ic->acc->prpl )  	{ -		return( bim_chat_msg( c->gc, c->id, s ) ); +		return( imc_chat_msg( c, s, 0 ) );  	}  	return( 0 ); @@ -1047,7 +1051,7 @@ static gboolean buddy_send_handler_delayed( gpointer data, gint fd, b_input_cond  		return FALSE;  	u->sendbuf[u->sendbuf_len-2] = 0; /* Cut off the last newline */ -	bim_buddy_msg( u->gc, u->handle, u->sendbuf, u->sendbuf_flags ); +	imc_buddy_msg( u->ic, u->handle, u->sendbuf, u->sendbuf_flags );  	g_free( u->sendbuf );  	u->sendbuf = NULL; @@ -1060,7 +1064,7 @@ static gboolean buddy_send_handler_delayed( gpointer data, gint fd, b_input_cond  void buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags )  { -	if( !u || !u->gc ) return; +	if( !u || !u->ic ) return;  	if( set_getbool( &irc->set, "buddy_sendbuffer" ) && set_getint( &irc->set, "buddy_sendbuffer_delay" ) > 0 )  	{ @@ -1099,7 +1103,7 @@ void buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags )  	}  	else  	{ -		bim_buddy_msg( u->gc, u->handle, msg, flags ); +		imc_buddy_msg( u->ic, u->handle, msg, flags );  	}  } | 
