From 0704f382e07a0280ffbbde4875c75d552fa43da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Fri, 27 Jan 2023 00:02:12 +0100 Subject: [PATCH] irc: make IRC server names case sensitive (issue #1872) --- src/plugins/irc/irc-command.c | 10 +++---- src/plugins/irc/irc-ignore.c | 4 +-- src/plugins/irc/irc-info.c | 4 +-- src/plugins/irc/irc-server.c | 32 +++------------------- src/plugins/irc/irc-server.h | 1 - tests/unit/plugins/irc/test-irc-server.cpp | 25 ----------------- 6 files changed, 13 insertions(+), 63 deletions(-) diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 8752946cd..1620953ac 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -730,7 +730,7 @@ irc_command_exec_all_servers (int inclusive, const char *str_servers, const char for (i = 0; i < num_servers; i++) { if (weechat_string_match (ptr_server->name, - servers[i], 0)) + servers[i], 1)) { picked = (inclusive) ? 1 : 0; break; @@ -5546,7 +5546,7 @@ IRC_COMMAND_CALLBACK(server) for (ptr_server2 = irc_servers; ptr_server2; ptr_server2 = ptr_server2->next_server) { - if (weechat_strcasestr (ptr_server2->name, server_name)) + if (strstr (ptr_server2->name, server_name)) { if (!one_server_found) { @@ -5571,7 +5571,7 @@ IRC_COMMAND_CALLBACK(server) { WEECHAT_COMMAND_MIN_ARGS(4, "add"); - ptr_server2 = irc_server_casesearch (argv[2]); + ptr_server2 = irc_server_search (argv[2]); if (ptr_server2) { weechat_printf ( @@ -5633,7 +5633,7 @@ IRC_COMMAND_CALLBACK(server) } /* check if target name already exists */ - ptr_server2 = irc_server_casesearch (argv[3]); + ptr_server2 = irc_server_search (argv[3]); if (ptr_server2) { weechat_printf ( @@ -5681,7 +5681,7 @@ IRC_COMMAND_CALLBACK(server) } /* check if target name already exists */ - ptr_server2 = irc_server_casesearch (argv[3]); + ptr_server2 = irc_server_search (argv[3]); if (ptr_server2) { weechat_printf ( diff --git a/src/plugins/irc/irc-ignore.c b/src/plugins/irc/irc-ignore.c index 4aafa9b19..b39e107b8 100644 --- a/src/plugins/irc/irc-ignore.c +++ b/src/plugins/irc/irc-ignore.c @@ -82,7 +82,7 @@ irc_ignore_search (const char *mask, const char *server, const char *channel) ptr_ignore = ptr_ignore->next_ignore) { if ((strcmp (ptr_ignore->mask, mask) == 0) - && (weechat_strcasecmp (ptr_ignore->server, server) == 0) + && (strcmp (ptr_ignore->server, server) == 0) && (weechat_strcasecmp (ptr_ignore->channel, channel) == 0)) { return ptr_ignore; @@ -177,7 +177,7 @@ irc_ignore_check_server (struct t_irc_ignore *ignore, const char *server) if (strcmp (ignore->server, "*") == 0) return 1; - return (weechat_strcasecmp (ignore->server, server) == 0) ? 1 : 0; + return (weechat_strcmp (ignore->server, server) == 0) ? 1 : 0; } /* diff --git a/src/plugins/irc/irc-info.c b/src/plugins/irc/irc-info.c index e14803f7c..16475ed02 100644 --- a/src/plugins/irc/irc-info.c +++ b/src/plugins/irc/irc-info.c @@ -548,7 +548,7 @@ irc_info_infolist_irc_server_cb (const void *pointer, void *data, ptr_server = ptr_server->next_server) { if (!arguments || !arguments[0] - || weechat_string_match (ptr_server->name, arguments, 0)) + || weechat_string_match (ptr_server->name, arguments, 1)) { if (!irc_server_add_to_infolist (ptr_infolist, ptr_server, 0)) { @@ -1063,7 +1063,7 @@ irc_info_infolist_irc_notify_cb (const void *pointer, void *data, ptr_server = ptr_server->next_server) { if (!arguments || !arguments[0] - || weechat_string_match (ptr_server->name, arguments, 0)) + || weechat_string_match (ptr_server->name, arguments, 1)) { for (ptr_notify = ptr_server->notify_list; ptr_notify; ptr_notify = ptr_notify->next_notify) diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index de61fea66..f1f969acb 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -202,31 +202,6 @@ irc_server_search (const char *server_name) return NULL; } -/* - * Searches for a server by name (case insensitive). - * - * Returns pointer to server found, NULL if not found. - */ - -struct t_irc_server * -irc_server_casesearch (const char *server_name) -{ - struct t_irc_server *ptr_server; - - if (!server_name) - return NULL; - - for (ptr_server = irc_servers; ptr_server; - ptr_server = ptr_server->next_server) - { - if (weechat_strcasecmp (ptr_server->name, server_name) == 0) - return ptr_server; - } - - /* server not found */ - return NULL; -} - /* * Searches for a server option name. * @@ -1522,7 +1497,8 @@ irc_server_alloc (const char *name) int i, length; char *option_name; - if (irc_server_casesearch (name)) + /* check if another server exists with this name */ + if (irc_server_search (name)) return NULL; /* alloc memory for new server */ @@ -2254,7 +2230,7 @@ irc_server_copy (struct t_irc_server *server, const char *new_name) int length, index_option; /* check if another server exists with this name */ - if (irc_server_casesearch (new_name)) + if (irc_server_search (new_name)) return NULL; new_server = irc_server_alloc (new_name); @@ -2321,7 +2297,7 @@ irc_server_rename (struct t_irc_server *server, const char *new_name) struct t_irc_channel *ptr_channel; /* check if another server exists with this name */ - if (irc_server_casesearch (new_name)) + if (irc_server_search (new_name)) return 0; /* rename options */ diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h index a8e0ce100..0a9fa25a3 100644 --- a/src/plugins/irc/irc-server.h +++ b/src/plugins/irc/irc-server.h @@ -306,7 +306,6 @@ extern char *irc_server_options[][2]; extern int irc_server_valid (struct t_irc_server *server); extern struct t_irc_server *irc_server_search (const char *server_name); -extern struct t_irc_server *irc_server_casesearch (const char *server_name); extern int irc_server_search_option (const char *option_name); extern int irc_server_search_casemapping (const char *casemapping); extern int irc_server_search_utf8mapping (const char *utf8mapping); diff --git a/tests/unit/plugins/irc/test-irc-server.cpp b/tests/unit/plugins/irc/test-irc-server.cpp index 54a4d980c..457a2a5e0 100644 --- a/tests/unit/plugins/irc/test-irc-server.cpp +++ b/tests/unit/plugins/irc/test-irc-server.cpp @@ -84,31 +84,6 @@ TEST(IrcServer, Search) irc_server_free (server2); } -/* - * Tests functions: - * irc_server_casesearch - */ - -TEST(IrcServer, CaseSearch) -{ - struct t_irc_server *server1, *server2; - - server1 = irc_server_alloc ("srv1"); - server2 = irc_server_alloc ("abc"); - - POINTERS_EQUAL(NULL, irc_server_casesearch (NULL)); - POINTERS_EQUAL(NULL, irc_server_casesearch ("does_not_exist")); - - POINTERS_EQUAL(server1, irc_server_casesearch ("SRV1")); - POINTERS_EQUAL(server2, irc_server_casesearch ("ABC")); - - POINTERS_EQUAL(server1, irc_server_casesearch ("srv1")); - POINTERS_EQUAL(server2, irc_server_casesearch ("abc")); - - irc_server_free (server1); - irc_server_free (server2); -} - /* * Tests functions: * irc_server_search_option