1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-07 10:13:12 +02:00

Added /reconnect command (task #5448)

This commit is contained in:
Sebastien Helleu
2007-04-24 12:18:36 +00:00
parent 4ed02bbdcf
commit 97a3d47650
26 changed files with 3084 additions and 2670 deletions
+94 -1
View File
@@ -151,6 +151,11 @@ t_weechat_command weechat_commands[] =
" unload: unload one or all plugins\n\n"
"Without argument, /plugin command lists loaded plugins."),
"list|listfull|load|autoload|reload|unload %P", 0, 2, 0, weechat_cmd_plugin, NULL },
{ "reconnect", N_("reconnect to server(s)"),
N_("[-all | servername [servername ...]]"),
N_(" -all: reconnect to all servers\n"
"servername: server name to reconnect"),
"%S|-all", 0, MAX_ARGS, 0, weechat_cmd_reconnect, NULL },
{ "server", N_("list, add or remove servers"),
N_("[servername] | "
"[servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 "
@@ -1825,7 +1830,7 @@ weechat_cmd_disconnect_one_server (t_irc_server *server)
}
/*
* weechat_cmd_disconnect: disconnect from a server
* weechat_cmd_disconnect: disconnect from server(s)
*/
int
@@ -2734,6 +2739,94 @@ weechat_cmd_plugin (t_irc_server *server, t_irc_channel *channel,
return 0;
}
/*
* weechat_cmd_reconnect_one_server: reconnect to a server
* return 0 if error, 1 if ok
*/
int
weechat_cmd_reconnect_one_server (t_irc_server *server)
{
if ((!server->is_connected) && (server->child_pid == 0))
{
irc_display_prefix (NULL, server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s not connected to server \"%s\"!\n"),
WEECHAT_ERROR, server->name);
return 0;
}
irc_send_quit_server (server, NULL);
server_disconnect (server, 0);
if (server_connect (server))
{
server->reconnect_start = 0;
server->reconnect_join = (server->channels) ? 1 : 0;
}
gui_status_draw (server->buffer, 1);
/* reconnect ok */
return 1;
}
/*
* weechat_cmd_reconnect: reconnect to server(s)
*/
int
weechat_cmd_reconnect (t_irc_server *server, t_irc_channel *channel,
int argc, char **argv)
{
t_gui_buffer *buffer;
t_irc_server *ptr_server;
int i, reconnect_ok;
irc_find_context (server, channel, NULL, &buffer);
if (argc == 0)
reconnect_ok = weechat_cmd_reconnect_one_server (server);
else
{
reconnect_ok = 1;
if (ascii_strcasecmp (argv[0], "-all") == 0)
{
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
if ((ptr_server->is_connected) || (ptr_server->child_pid != 0))
{
if (!weechat_cmd_reconnect_one_server (ptr_server))
reconnect_ok = 0;
}
}
}
else
{
for (i = 0; i < argc; i++)
{
ptr_server = server_search (argv[i]);
if (ptr_server)
{
if (!weechat_cmd_reconnect_one_server (ptr_server))
reconnect_ok = 0;
}
else
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL, _("%s server \"%s\" not found\n"),
WEECHAT_ERROR, argv[i]);
reconnect_ok = 0;
}
}
}
}
if (!reconnect_ok)
return -1;
return 0;
}
/*
* weechat_cmd_save: save WeeChat and plugins options to disk
*/