From cc163a0e7e6b731b9014b0f46e4953806d1206e4 Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Tue, 18 Feb 2025 10:45:37 +0100 Subject: [PATCH] irc: add option `-connected` in command `/server list|listfull` --- src/plugins/irc/irc-command.c | 79 +++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 18 deletions(-) diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 7de6f253b..e57f07dd4 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -5763,7 +5763,8 @@ irc_command_display_server (struct t_irc_server *server, int with_detail) IRC_COMMAND_CALLBACK(server) { - int i, detailed_list, one_server_found, length, count, refresh, update; + int i, detailed_list, only_connected, one_server_found, length, count; + int refresh, update; struct t_irc_server *ptr_server2, *server_found, *new_server; char *server_name, *msg_no_quotes, *message, *description; @@ -5781,6 +5782,7 @@ IRC_COMMAND_CALLBACK(server) /* list servers */ server_name = NULL; detailed_list = 0; + only_connected = 0; for (i = 1; i < argc; i++) { if (weechat_strcmp (argv[i], "list") == 0) @@ -5790,23 +5792,40 @@ IRC_COMMAND_CALLBACK(server) detailed_list = 1; continue; } + if (weechat_strcmp (argv[i], "-connected") == 0) + { + only_connected = 1; + continue; + } if (!server_name) server_name = argv[i]; } if (!server_name) { - if (irc_servers) + one_server_found = 0; + for (ptr_server2 = irc_servers; ptr_server2; + ptr_server2 = ptr_server2->next_server) { - weechat_printf (NULL, ""); - weechat_printf (NULL, _("All servers:")); - for (ptr_server2 = irc_servers; ptr_server2; - ptr_server2 = ptr_server2->next_server) + if (only_connected && (!(ptr_server2->is_connected))) + continue; + if (!one_server_found) { - irc_command_display_server (ptr_server2, detailed_list); + weechat_printf (NULL, ""); + if (only_connected) + weechat_printf (NULL, _("All connected servers:")); + else + weechat_printf (NULL, _("All servers:")); } + one_server_found = 1; + irc_command_display_server (ptr_server2, detailed_list); + } + if (!one_server_found) + { + if (only_connected) + weechat_printf (NULL, _("No connected server")); + else + weechat_printf (NULL, _("No server")); } - else - weechat_printf (NULL, _("No server")); } else { @@ -5814,23 +5833,45 @@ IRC_COMMAND_CALLBACK(server) for (ptr_server2 = irc_servers; ptr_server2; ptr_server2 = ptr_server2->next_server) { + if (only_connected && (!(ptr_server2->is_connected))) + continue; if (strstr (ptr_server2->name, server_name)) { if (!one_server_found) { weechat_printf (NULL, ""); - weechat_printf (NULL, - _("Servers with \"%s\":"), - server_name); + if (only_connected) + { + weechat_printf (NULL, + _("Connected servers with \"%s\":"), + server_name); + } + else + { + weechat_printf (NULL, + _("Servers with \"%s\":"), + server_name); + } } one_server_found = 1; irc_command_display_server (ptr_server2, detailed_list); } } if (!one_server_found) - weechat_printf (NULL, - _("No server found with \"%s\""), - server_name); + { + if (only_connected) + { + weechat_printf (NULL, + _("No connected server found with \"%s\""), + server_name); + } + else + { + weechat_printf (NULL, + _("No server found with \"%s\""), + server_name); + } + } } return WEECHAT_RC_OK; } @@ -7928,7 +7969,7 @@ irc_command_init () "server", N_("list, add or remove IRC servers"), /* TRANSLATORS: only text between angle brackets (eg: "") may be translated */ - N_("list|listfull []" + N_("list|listfull [-connected] []" " || add|addreplace [/] [-temp] [-