From be9bffdf497594aa321b620093cef1f180764576 Mon Sep 17 00:00:00 2001
From: "C. McEnroe" <june@causal.agency>
Date: Thu, 26 Aug 2021 12:59:57 -0400
Subject: Match id names case-insensitively

This fixes the case where an IRCd does not normalize channel names,
e.g. PRIVMSG #TEST is relayed as-is, rather than as #test or whatever
the canonical casing of the channel name is. It also fixes the case
of opening a query window with incorrect case, e.g. /query nickserv.

However, this solution is only completely correct when
CASEMAPPING=ascii.[1] I do not think the extra mappings of
CASEMAPPING=rfc1459 are relevant enough to justify adding the code
to handle it.

[1]: https://modern.ircdocs.horse/#casemapping-parameter
---
 chat.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/chat.h b/chat.h
index dd9c823..d9d9bdc 100644
--- a/chat.h
+++ b/chat.h
@@ -34,6 +34,7 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>
+#include <strings.h>
 #include <sysexits.h>
 #include <time.h>
 #include <wchar.h>
@@ -119,7 +120,7 @@ extern uint idNext;
 
 static inline uint idFind(const char *name) {
 	for (uint id = 0; id < idNext; ++id) {
-		if (!strcmp(idNames[id], name)) return id;
+		if (!strcasecmp(idNames[id], name)) return id;
 	}
 	return None;
 }
-- 
cgit 1.4.1