I just confirmed with AndroSyn (ratbox) that EFNet is not changing CASEMAPPING any time soon. It will be staying rfc1459 network-wide. Apparently when IRCnet made the change, it was extremely painful and took two upgrades to get it right. So I think for the foreseeable future, you'll have to look at the CASEMAPPING value of the server and continue to support the current behavior.
On Mon, Jun 27, 2005 at 05:56:27PM -0500, Jeremy Nelson wrote: > Historically ircII has always had two different contexts in which strings > were compared in a case insensitive way: Expressions, and wildcard patterns. > > * In ircII expressions, strings are equal only if they are exactly identical, > except that case differences are forgiven: > [abc] == [ABC] > However, strings sort out case sensitively: > [BCD] < [abc] > because 'B' (66) is less than 'a' (97). > > * In ircII wildcard patterns, strings are handled the same way as expressions. > > However, these do not take into account irc nicknames, which have their own > history. The server considers the characters "[\]" uppercase equivalents to > "{|}" by rule (rfc1459) and the characters "^" and "~" equivalent by > historical practice (but not by rule). > > This means it was impossible to do string comparisons to see if some nickname > on irc was your nickname: > on ^ctcp * { > if ([$1] == N) { > .... > } > } > But if your nickname contained any of "[\]^{|}~", then the test would fail: > [foo~bar] and [foo^bar] are the same to the server, but different to ircII. > > Similarly, $toupper() and $tolower() made no attempt to compensate for the > way servers do things. > > ------------------------------------------------------------------------------ > So in EPIC3, the string comparisons were changed so they honored the server's > way of doing things. The /on ctcp above would work if your nickname contained > an unusual letter. But nothing else was changed -- particularly, regular > expressions, and $toupper() and $tolower() were not affected. This meant > you could not do this: > on ^ctcp '% $N *' { > .... > } > if your nickname contained a weird character because only expression string > compare knew about the server way. > > ---------------------------------------------------------------------------- > Today, some servers have de-supported the "[\]^{|}~" characters, making them > different, rather than equivalent. This is indicated by CASEMAPPING=ascii > or similar. On these servers, [foo^bar] and [foo~bar] are DIFFERENT > nicknames, instead of the same nickname. > > Why is this important? If someone with the nickname [foo^bar] is on a > channel and someone else with [foo~bar] joins the channel, epic is going to > get mighty confused doing userhost caching because those are the same nick. > > ----------------------------------------------------------------------------- > So what to do? Should we just desupport the [\]^{|}~ characters in epic5, > because that is the way things are going, and it is easier? Should we make > some sort of half-hearted attempt to try to figure out whether [\]^ should > be the same as {|}~ or not, on the fly? > > What about regular expressions? What about $toupper() and $tolower()? > > I could use some advice and suggestions. > > Jeremy > _______________________________________________ > List mailing list > List@epicsol.org > http://epicsol.org/mailman/listinfo/list > -- [EMAIL PROTECTED] irc.colosolutions.net operator You have reached the end of the Internet. Please turn back. _______________________________________________ List mailing list List@epicsol.org http://epicsol.org/mailman/listinfo/list