Closed Bug 190749 Opened 21 years ago Closed 20 years ago

IRC's CASEMAPPING is not ASCII or latin-1 (except for dalnet)

Categories

(Other Applications :: ChatZilla, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: isomer, Assigned: bugzilla-mozilla-20000923)

Details

(Whiteboard: cz-patch)

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126

When IRC was first invented it was used in finland, so used a finnish
characterset.  This means it's not your usual ASCII.  In addition to the usual
A-Z being equivilent to a-z, ~ is equivilent to ^, [ and {, ] and }, | and \.

This is for channels and nicks.  Note that "~" isn't valid in a nick, but "^" is.

This of course causes issues if you joined #\foo\, but messages come to the
client that are destined to #|foo|

Reproducible: Always

Steps to Reproduce:
1. take two clients, join one to #\foo\
2. join the other to #|foo|
3. talk in the channel from both and hilarity ensues.



Expected Results:  
mozilla should treat equivilent characters as equivilent.

http://www.alien.net.au/irc/index.html has information on 005 which explains
about the CASEMAPPING 005 parameter for clients so they can tell which
transformations the server is using.

RFC1459 also documents some of these mappings, but misses ~ being equivilent to ^.
ugh :-/
Status: UNCONFIRMED → NEW
Ever confirmed: true
I'm working on a general 005 patch, so we'll have all the information available
to whatever needs it - I think this bug could be done using some
toLowerCase/toUpperCase functions set up to use the correct mappings. Might try
this in a few days, depending how the 005 patch goes.
Seems the 005 draft has been updated, it's now here:
http://www.ietf.org/internet-drafts/draft-brocklesby-irc-isupport-02.txt
The RPL_isupport code has now landed, so this should be relatively easy, since
all of the case-conversation is very well defined.
Status: NEW → ASSIGNED
Assignee: rginda → silver
Status: ASSIGNED → NEW
Working on this, got it mostly working, though I'm being hindered a bit by one
of the two servers I use completely failing to follow any sort of spec (moznet
is fine, of course ;) ).
Status: NEW → ASSIGNED
This patch defines a toLowerCase function on the CIRCServer object, which obays
the current casemapping in effect. It also makes the appropriate calls to this
function from the various objects. Tab-complection has also been tweaked to
work with it, which is very nice to use.
Whiteboard: cz-patch
Comment on attachment 141184 [details] [diff] [review]
Use casemapping-correct toLowerCase conversions.

Probably should be looked over by Robert Ginda too, if time allows.
Attachment #141184 - Flags: review?(samuel)
Comment on attachment 141184 [details] [diff] [review]
Use casemapping-correct toLowerCase conversions.

Your switch statement doesn't have any breaks;

'if (d.server)' should be 'if "server" in d'
Attachment #141184 - Flags: review?(samuel) → review-
Comment on attachment 141184 [details] [diff] [review]
Use casemapping-correct toLowerCase conversions.

My mistake.
Fix the cases and r=me
Attachment #141184 - Flags: review- → review+
Comment on attachment 141184 [details] [diff] [review]
Use casemapping-correct toLowerCase conversions.

Checked in.
I believe the patch just checked in covers this bug, so resolving FIXED. If this
is not the case, please reopen.
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Product: Core → Other Applications
You need to log in before you can comment on or make changes to this bug.