Unicode nickname support in UnrealIRCd

A recent release of UnrealIRCd has brought us support for some latin codepages and even mulitbyte encodings. Unicode, however, is not included, so that it looks a bit like a kludge.

But there’s a comprehensive discussion along with patches for better codepage support in the project’s bug tracker. Unfortunately, some of the patches are not done right, and the rest of them are a bit, uh, stale.

This procedure worked for me:

  1. Get UnrealIRCd 3.2.5 (3.2.x might work, too)
  2. Patch with unreal3.2.5.cvs.codepages-2.diff (allowed fuzz of five or so)
  3. Edit src/modules/Makefile.in manually (the patch was rejected here for me), adding m_names.so m_codepage.so to R_MODULES and COMMANDS.
  4. To allow full UTF8 nick names, change the conditional in src/modules/m_nick.c around line 150 to read:
            /* For a local clients, do proper nickname checking via do_nick_name()
             * and reject the nick if it returns false.
             * For remote clients, do a quick check by using do_remote_nick_name(),
             * if this returned false then reject and kill it. -- Syzop
             */
     
            if (!do_remote_nick_name(nick)) /* just do some basic checking */
            {

    That way you still won’t have

    \xA0!+%@&~#$:'\"?*,.

    but I guess this is a limitation of the IRC protocol.

    After that you should be ready to run ./Config && make, and set up your unrealircd.conf. It’s best to also enabled UTF-8 as the default in codepage.conf.

    Happy hacking!

Comments

  1. Wodin
    June 5th, 2008 | 9:38 pm

    Just in case you really are oblivious to this… all your links are broken!

    I find it hard to believe, but don’t know why else you would not have fixed them yet :)

  2. June 5th, 2008 | 10:04 pm

    Thanks for the heads up! I fixed it.

  3. Wodin
    June 5th, 2008 | 10:31 pm

    That was fast! :)

Leave a reply