1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-12 14:14:48 +02:00

irc: optimize and reuse irc_channel_rejoin

This commit is contained in:
Simmo Saan
2018-09-09 20:46:05 +03:00
committed by Sébastien Helleu
parent 6edc88f7d6
commit 3c3bb933e9
2 changed files with 29 additions and 29 deletions
+26 -7
View File
@@ -1420,14 +1420,33 @@ void
irc_channel_rejoin (struct t_irc_server *server, struct t_irc_channel *channel,
int manual_join, int noswitch)
{
char join_args[1024];
char *join_string;
int length;
snprintf (join_args, sizeof (join_args), "%s%s%s",
channel->name,
(channel->key) ? " " : "",
(channel->key) ? channel->key : "");
irc_command_join_server (server, join_args, manual_join, noswitch);
if (channel->key)
{
length = strlen (channel->name) + 1 + strlen (channel->key) + 1;
join_string = malloc (length);
if (join_string)
{
snprintf (join_string, length, "%s %s",
channel->name,
channel->key);
irc_command_join_server (server, join_string,
manual_join, noswitch);
free (join_string);
}
else
{
irc_command_join_server (server, channel->name,
manual_join, noswitch);
}
}
else
{
irc_command_join_server (server, channel->name,
manual_join, noswitch);
}
}
/*
+3 -22
View File
@@ -2718,8 +2718,8 @@ IRC_PROTOCOL_CALLBACK(notice)
IRC_PROTOCOL_CALLBACK(part)
{
char *str_comment, *join_string;
int join_length, local_part, display_host;
char *str_comment;
int local_part, display_host;
struct t_irc_channel *ptr_channel;
struct t_irc_nick *ptr_nick;
struct t_irc_channel_speaking *ptr_nick_speaking;
@@ -2832,26 +2832,7 @@ IRC_PROTOCOL_CALLBACK(part)
if (ptr_channel->cycle)
{
ptr_channel->cycle = 0;
if (ptr_channel->key)
{
join_length = strlen (ptr_channel->name) + 1 +
strlen (ptr_channel->key) + 1;
join_string = malloc (join_length);
if (join_string)
{
snprintf (join_string, join_length, "%s %s",
ptr_channel->name,
ptr_channel->key);
irc_command_join_server (server, join_string, 1, 1);
free (join_string);
}
else
irc_command_join_server (server, ptr_channel->name,
1, 1);
}
else
irc_command_join_server (server, ptr_channel->name,
1, 1);
irc_channel_rejoin (server, ptr_channel, 1, 1);
}
else
{