Re: locale, gui vs command line question?



On Sun, Jan 31, 2010 at 04:10:00PM +0000, james morris wrote:

A user has reported a problem with my app being unable to load a settings
file from the command line when the program runs without a GUI.

The OPs locale uses commas as the decimal point and the programs use of
locale changes when GTK is initialized.

However, the same file which does not load from the command line without
a GUI will load with the GUI up.

I want these files to always be written in the "C" locale so they're
portable across locales, but I don't want to clobber the GUI to do so.

I've read archived posts recommending to use the glib conversion
functions, however these are limited to double precision, and the
minimum precision my app is using is long double, as it also uses the
MPFR library for unlimited multiple precision maths.

Look at the GLib conversion functions and write your own for MPFR types.
It is a matter of checking the locale's decimal separator and fixing the
string representation accordingly.

I've not had to deal with locales before, and I'm trying to understand
what GTK does to the locale when it initializes so I can work around it
and save data files as "C" locale.  I've tried adding
setlocale(LC_NUMERIC, "C") to the start of main, and after calling
gtk_init, but it seems to make no difference.

Generally, changing locale locally is fragile and better avoided.

Yeti




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]