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