1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-01 07:16:37 +02:00

Added "copy" and "rename" options to /server command

This commit is contained in:
Sebastien Helleu
2007-08-08 08:19:04 +00:00
parent 3c10d2205e
commit f68a2cbfcd
64 changed files with 4992 additions and 4604 deletions
+107 -14
View File
@@ -177,10 +177,11 @@ t_weechat_command weechat_commands[] =
NULL, 0, 1, 0, weechat_cmd_save, NULL },
{ "server", N_("list, add or remove servers"),
N_("[list [servername]] | [listfull [servername]] | "
"[servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 "
"nick2 nick3] [-username username] [-realname realname] "
"[-command command] [-autojoin channel[,channel]] ] | "
"[del servername]"),
"[servername hostname port [-auto | -noauto] [-ipv6] [-ssl] "
"[-pwd password] [-nicks nick1 nick2 nick3] [-username username] "
"[-realname realname] [-command command] [-autojoin channel[,channel]] ] | "
"[copy server newservername] [rename servername newservername] [del "
"servername]"),
N_(" list: list servers (no parameter implies this list)\n"
" listfull: list servers with detailed info for each server\n"
"servername: server name, for internal and display use\n"
@@ -194,8 +195,10 @@ t_weechat_command weechat_commands[] =
" nick3: second alternate nick for server\n"
" username: user name\n"
" realname: real name of user\n"
" copy: duplicate a server\n"
" rename: rename a server\n"
" del: delete a server"),
"del|list|listfull", 0, MAX_ARGS, 0, weechat_cmd_server, NULL },
"copy|rename|del|list|listfull %S %S", 0, MAX_ARGS, 0, weechat_cmd_server, NULL },
{ "set", N_("set config options"),
N_("[option [ = value]]"),
N_("option: name of an option (if name is full "
@@ -3022,23 +3025,113 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
}
else
{
if (ascii_strcasecmp (argv[0], "del") == 0)
if (ascii_strcasecmp (argv[0], "copy") == 0)
{
if (argc < 3)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s missing server name for \"%s\" command\n"),
WEECHAT_ERROR, "server copy");
return -1;
}
/* look for server by name */
server_found = irc_server_search (argv[1]);
if (!server_found)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" not found for \"%s\" command\n"),
WEECHAT_ERROR, argv[1], "server copy");
return -1;
}
/* check if target name already exists */
if (irc_server_search (argv[2]))
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" already exists for \"%s\" command\n"),
WEECHAT_ERROR, argv[2], "server copy");
return -1;
}
/* duplicate server */
new_server = irc_server_duplicate (server_found, argv[2]);
if (new_server)
{
irc_display_prefix (NULL, NULL, PREFIX_INFO);
gui_printf (NULL, _("Server %s%s%s has been copied to %s%s\n"),
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
argv[1],
GUI_COLOR(COLOR_WIN_CHAT),
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
argv[2]);
gui_window_redraw_all_buffers ();
return 0;
}
return -1;
}
if (ascii_strcasecmp (argv[0], "rename") == 0)
{
if (argc < 3)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s missing server name for \"%s\" command\n"),
WEECHAT_ERROR, "server rename");
return -1;
}
/* look for server by name */
server_found = irc_server_search (argv[1]);
if (!server_found)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" not found for \"%s\" command\n"),
WEECHAT_ERROR, argv[1], "server rename");
return -1;
}
/* check if target name already exists */
if (irc_server_search (argv[2]))
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" already exists for \"%s\" command\n"),
WEECHAT_ERROR, argv[2], "server rename");
return -1;
}
/* rename server */
if (irc_server_rename (server_found, argv[2]))
{
irc_display_prefix (NULL, NULL, PREFIX_INFO);
gui_printf (NULL, _("Server %s%s%s has been renamed to %s%s\n"),
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
argv[1],
GUI_COLOR(COLOR_WIN_CHAT),
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
argv[2]);
gui_window_redraw_all_buffers ();
return 0;
}
return -1;
}
else if (ascii_strcasecmp (argv[0], "del") == 0)
{
if (argc < 2)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s missing servername for \"%s\" command\n"),
_("%s missing server name for \"%s\" command\n"),
WEECHAT_ERROR, "server del");
return -1;
}
if (argc > 2)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s too much arguments for \"%s\" command, ignoring arguments\n"),
WEECHAT_WARNING, "server del");
}
/* look for server by name */
server_found = irc_server_search (argv[1]);