summaryrefslogtreecommitdiff
path: root/src/plugins/irc
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2010-04-05 13:03:11 +0200
committerSebastien Helleu <flashcode@flashtux.org>2010-04-05 13:03:11 +0200
commit9017a230136f8daa1d227dd8a20a5ecfa839920b (patch)
tree34c7c29a4326841503f54bea182f089a9639ddd6 /src/plugins/irc
parenta6e819f7908d513a87426f31278b333715f25757 (diff)
downloadweechat-9017a230136f8daa1d227dd8a20a5ecfa839920b.zip
Add option "-open" for IRC command /connect
Diffstat (limited to 'src/plugins/irc')
-rw-r--r--src/plugins/irc/irc-command.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c
index 4f5fa1ea2..936ba22e7 100644
--- a/src/plugins/irc/irc-command.c
+++ b/src/plugins/irc/irc-command.c
@@ -698,7 +698,7 @@ int
irc_command_connect (void *data, struct t_gui_buffer *buffer, int argc,
char **argv, char **argv_eol)
{
- int i, nb_connect, connect_ok, all_servers, no_join;
+ int i, nb_connect, connect_ok, all_servers, all_opened, no_join;
char *name;
IRC_BUFFER_GET_SERVER(buffer);
@@ -711,27 +711,44 @@ irc_command_connect (void *data, struct t_gui_buffer *buffer, int argc,
connect_ok = 1;
all_servers = 0;
+ all_opened = 0;
no_join = 0;
for (i = 1; i < argc; i++)
{
if (weechat_strcasecmp (argv[i], "-all") == 0)
all_servers = 1;
- if (weechat_strcasecmp (argv[i], "-nojoin") == 0)
+ else if (weechat_strcasecmp (argv[i], "-open") == 0)
+ all_opened = 1;
+ else if (weechat_strcasecmp (argv[i], "-nojoin") == 0)
no_join = 1;
}
- if (all_servers)
+ if (all_opened)
+ {
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ if (ptr_server->buffer
+ && !ptr_server->is_connected && (!ptr_server->hook_connect))
+ {
+ if (!irc_command_connect_one_server (ptr_server, no_join))
+ connect_ok = 0;
+ }
+ }
+ return (connect_ok) ? WEECHAT_RC_OK : WEECHAT_RC_ERROR;
+ }
+ else if (all_servers)
{
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
- nb_connect++;
if (!ptr_server->is_connected && (!ptr_server->hook_connect))
{
if (!irc_command_connect_one_server (ptr_server, no_join))
connect_ok = 0;
}
}
+ return (connect_ok) ? WEECHAT_RC_OK : WEECHAT_RC_ERROR;
}
else
{
@@ -4226,10 +4243,13 @@ irc_command_init ()
"%(irc_channel_nicks_hosts)", &irc_command_ban, NULL);
weechat_hook_command ("connect",
N_("connect to IRC server(s)"),
- N_("[-all [-nojoin] | servername [servername ...] "
- "[-nojoin] | hostname[/port] [-option[=value]] "
- "[-nooption]]"),
- N_(" -all: connect to all servers\n"
+ N_("[-all [-nojoin] | -open [-nojoin] | servername "
+ "[servername ...] [-nojoin] | hostname[/port] "
+ "[-option[=value]] [-nooption]]"),
+ N_(" -all: connect to all servers defined in "
+ "configuration\n"
+ " -open: connect to all opened servers that "
+ "are not currently connected\n"
"servername: internal server name to connect "
"(server must have been created by /server add)\n"
" -nojoin: do not join any channel (even if "
@@ -4246,7 +4266,7 @@ irc_command_init ()
" /connect irc6.oftc.net/6667 -ipv6\n"
" /connect irc6.oftc.net/6697 -ipv6 -ssl\n"
" /connect my.server.org/6697 -ssl -password=test"),
- "-all -nojoin"
+ "-all|-open -nojoin"
" || %(irc_servers)|%*",
&irc_command_connect, NULL);
weechat_hook_command ("ctcp",