Modify

#676 closed defect (fixed)

nick generation issues

Reported by: anonymous Owned by:
Priority: normal Milestone:
Component: BitlBee Version: devel
Keywords: Cc:
IRC client+version: Client-independent Operating System: Public server
OS version/distro:

Description

libiconv 1.9 and possibly below (which got used for g_convert under my compile) does not consider ASCIITRANSLITIGNORE to be a correct charset and will silently cause nick_format settings to not be used. Also lcnicks seems to be applied only to the fallback mechanism in nick_get and not results from nick_gen.

Note that this older version of libiconv considers ASCIIIGNORETRANSLIT and ASCIITRANSLIT and ASCIIIGNORE to be valid. I didn't do testing to see if these settings have correct behavior or how they compare to glibc's iconv behavior. From what I read behavior seems very inconsistent. Maybe g_convert_with_fallback using ASCIITRANSLIT might be a better option too?

Attachments (0)

Change History (3)

comment:1 Changed at 2010-09-04T14:54:41Z by wilmer

Yeah, lcnicks indeed doesn't work with nick_format. That's somewhat accidental, and I'm thinking of other ways to implement this/adding stuff like CamelCase (which is usually hideous but maybe not that bad for nicknames).

Have you checked that the iconv *version* is the problem? I've noticed that transliteration is also pretty sensitive to locale settings.

comment:2 Changed at 2010-09-05T10:27:29Z by anonymous

On my old system my libiconv is quite old, and the newer versions don't seem to care what order IGNORE and TRANSLIT are in. It was quite confusing as to why nick_format didn't work for me though as it would just silently fail which led me to investigate the cause.

I did some testing and glibc iconv seems to not treat IGNORE as a real option (fails when it's the only option in use) and substitutes in anything it can't transliterate as ? whereas GNU libiconv respects IGNORE (stripping untransliterated characters) and fails with an error when just TRANSLIT is used. Also GNU libiconv doesn't require a UTF8 system locale to transliterate Latin supplementary characters but does it differently from glibc iconv...

Anyway I'd recommend replacing the g_convert( part, -1, "ASCIITRANSLITIGNORE", "UTF-8", NULL, NULL, NULL ); part with g_convert_with_fallback( part, -1, "ASCIITRANSLIT", "UTF-8", "", NULL, NULL, NULL ); in nick.c.

comment:3 Changed at 2010-09-30T06:31:03Z by wilmer

Resolution: fixed
Status: newclosed

Fixed. changeset:devel,678. I hope this solves the problem for all. Thanks!

Modify Ticket

Action
as closed The ticket will remain with no owner.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.