1
0
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:
Sebastien Helleu
2011-06-16 18:54:05 +02:00
parent 6015f51b33
commit 589f57c409
2 changed files with 36 additions and 2 deletions
+1
View File
@@ -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
+35 -2
View File
@@ -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
{