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).

-jason


    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?15377>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to