Follow-up Comment #16, bug #15377 (project freeciv):
Having 2 sets of functions is trickier than it sounds. For one, you have to
be extremely careful which you use where. For a second, neither one should
really be using the libc character functions. And for a third, the functions
we're talking about _cant_ be written for variable-width character sets like
utf-8 so they all have to be replaced with string variants. I took a look at
doing this but it's just way too many places and too wide a spectrum of the
codebase affected to do so without upping the bug rate.
Glib or libutf8 can provide some help on some of these functions, I do
believe. We dont have glib as a requirement for server compilation however,
though it wouldnt be a big deal to add it.
To change the internal encoding to ucs4 I would introduce a new typedef,
"typedef uint32 fc_char" into fciconv.h. The majority of internal strings
then get changed from char to fc_char. String conversion is mostly done
already via the fciconv or gettext functions, but what would have to be added
is conversion of all data files read (from utf8/ascii into ucs4) and to all
gui strings (again between ucs4 and utf8, both ways and in a lot of places).
Perhaps the biggest challenge though would be server-generated strings, which
can't use sprintf but instead will need a ucs4 version of the same (probably
available through an external library).
Reply to this item at:
Message sent via/by Gna!
Freeciv-dev mailing list