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

irc: fix autojoin of channels when private buffers are opened (issue #2012)

This commit is contained in:
Sébastien Helleu
2023-09-11 21:41:47 +02:00
parent 7f6e626122
commit 58141bde79
4 changed files with 34 additions and 3 deletions
+1
View File
@@ -20,6 +20,7 @@ New features::
Bug fixes::
* irc: fix autojoin of channels when private buffers are opened (issue #2012)
* irc: fix string comparison when CASEMAPPING is set to "ascii"
* script: fix crash when a `/script` command triggers another `/script` command (issue #923)
+22 -3
View File
@@ -1596,6 +1596,25 @@ irc_server_buffer_set_input_multiline (struct t_irc_server *server,
}
}
/*
* Checks if a server has channels opened.
*/
int
irc_server_has_channels (struct t_irc_server *server)
{
struct t_irc_channel *ptr_channel;
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
if (ptr_channel->type == IRC_CHANNEL_TYPE_CHANNEL)
return 1;
}
return 0;
}
/*
* Allocates a new server and adds it to the servers queue.
*
@@ -5846,7 +5865,7 @@ irc_server_autojoin_create_buffers (struct t_irc_server *server)
* buffers are opened only if auto-join was not already done
* and if no channels are currently opened
*/
if (server->autojoin_done || server->channels)
if (server->autojoin_done || irc_server_has_channels (server))
return;
/* evaluate server option "autojoin" */
@@ -6007,7 +6026,7 @@ irc_server_autojoin_channels (struct t_irc_server *server)
return;
}
if (!server->autojoin_done && !server->channels)
if (!server->autojoin_done && !irc_server_has_channels (server))
{
/* auto-join when connecting to server for first time */
autojoin = irc_server_eval_expression (
@@ -6021,7 +6040,7 @@ irc_server_autojoin_channels (struct t_irc_server *server)
if (autojoin)
free (autojoin);
}
else if (server->channels)
else if (irc_server_has_channels (server))
{
/* auto-join after disconnection (only rejoins opened channels) */
autojoin = irc_server_build_autojoin (server);
+1
View File
@@ -387,6 +387,7 @@ extern char *irc_server_get_default_msg (const char *default_msg,
const char *target_nick);
extern void irc_server_buffer_set_input_multiline (struct t_irc_server *server,
int multiline);
extern int irc_server_has_channels (struct t_irc_server *server);
extern struct t_irc_server *irc_server_alloc (const char *name);
extern struct t_irc_server *irc_server_alloc_with_url (const char *irc_url);
extern void irc_server_apply_command_line_options (struct t_irc_server *server,
@@ -797,6 +797,16 @@ TEST(IrcServer, GetDefaultMsg)
/* TODO: write tests */
}
/*
* Tests functions:
* irc_server_has_channels
*/
TEST(IrcServer, HasChannels)
{
/* TODO: write tests */
}
/*
* Tests functions:
* irc_server_alloc