mirror of
https://github.com/weechat/weechat.git
synced 2026-06-27 21:36:37 +02:00
irc: switch to buffer on /join #channel if channel buffer already exists
This commit is contained in:
@@ -16,6 +16,7 @@ Version 0.3.6 (under dev!)
|
||||
/window scroll_horiz) (task #11112)
|
||||
* api: fix bug with function config_set_desc_plugin (use immediately
|
||||
description for option when function is called)
|
||||
* irc: switch to buffer on /join #channel if channel buffer already exists
|
||||
* irc: update host of nicks on manual /who
|
||||
* irc: fix memory leak on plugin unload (free ignores)
|
||||
* irc: fix memory leak in message parser (when called from other plugins like
|
||||
|
||||
@@ -1818,6 +1818,10 @@ int
|
||||
irc_command_join (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
char **argv, char **argv_eol)
|
||||
{
|
||||
int arg_channels, length;
|
||||
char *pos_comma, *channel_name;
|
||||
struct t_irc_channel *ptr_channel2;
|
||||
|
||||
IRC_BUFFER_GET_SERVER_CHANNEL(buffer);
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -1830,14 +1834,43 @@ irc_command_join (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
ptr_server = irc_server_search (argv[2]);
|
||||
if (!ptr_server)
|
||||
return WEECHAT_RC_ERROR;
|
||||
irc_command_join_server (ptr_server, argv_eol[3], 1);
|
||||
arg_channels = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!ptr_server)
|
||||
return WEECHAT_RC_ERROR;
|
||||
irc_command_join_server (ptr_server, argv_eol[1], 1);
|
||||
arg_channels = 1;
|
||||
}
|
||||
irc_command_join_server (ptr_server, argv_eol[arg_channels], 1);
|
||||
|
||||
/*
|
||||
* if buffer for first channel of list already exists,
|
||||
* then switch to it
|
||||
*/
|
||||
pos_comma = strchr (argv[arg_channels], ',');
|
||||
if (pos_comma)
|
||||
pos_comma[0] = '\0';
|
||||
if (irc_channel_is_channel (argv[arg_channels]))
|
||||
channel_name = strdup (argv[arg_channels]);
|
||||
else
|
||||
{
|
||||
length = 1 + strlen (argv[arg_channels]) + 1;
|
||||
channel_name = malloc (length);
|
||||
if (channel_name)
|
||||
snprintf (channel_name, length, "#%s", argv[arg_channels]);
|
||||
}
|
||||
if (channel_name)
|
||||
{
|
||||
ptr_channel2 = irc_channel_search (ptr_server, channel_name);
|
||||
if (ptr_channel2)
|
||||
{
|
||||
weechat_buffer_set (ptr_channel2->buffer, "display", "1");
|
||||
}
|
||||
free (channel_name);
|
||||
}
|
||||
if (pos_comma)
|
||||
pos_comma[0] = ',';
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user