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

Reply via email to