diff options
Diffstat (limited to 'irc_commands.c')
| -rw-r--r-- | irc_commands.c | 26 | 
1 files changed, 25 insertions, 1 deletions
| diff --git a/irc_commands.c b/irc_commands.c index 0573601d..0bf20cfc 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -140,7 +140,31 @@ static void irc_cmd_join( irc_t *irc, char **cmd )  			*comma = '\0';  		if( ( ic = irc_channel_by_name( irc, s ) ) == NULL ) +		{  			ic = irc_channel_new( irc, s ); +			 +			if( strcmp( set_getstr( &ic->set, "type" ), "control" ) != 0 ) +			{ +				/* Autoconfiguration is for control channels only ATM. */ +			} +			else if( bee_group_by_name( ic->irc->b, ic->name + 1, FALSE ) ) +			{ +				set_setstr( &ic->set, "group", ic->name + 1 ); +				set_setstr( &ic->set, "fill_by", "group" ); +			} +			else if( set_setstr( &ic->set, "protocol", ic->name + 1 ) ) +			{ +				set_setstr( &ic->set, "fill_by", "protocol" ); +			} +			else if( set_setstr( &ic->set, "account", ic->name + 1 ) ) +			{ +				set_setstr( &ic->set, "fill_by", "account" ); +			} +			else +			{ +				bee_irc_channel_update( ic->irc, ic, NULL ); +			} +		}  		if( ic == NULL )  		{ @@ -201,7 +225,7 @@ static void irc_cmd_part( irc_t *irc, char **cmd )  	{  		irc_send_num( irc, 403, "%s :No such channel", cmd[1] );  	} -	else if( irc_channel_del_user( ic, irc->user, FALSE, cmd[2] ) ) +	else if( irc_channel_del_user( ic, irc->user, IRC_CDU_PART, cmd[2] ) )  	{  		if( ic->f->part )  			ic->f->part( ic, NULL ); | 
