[Dev-luatex] bug in os.execute?
Taco Hoekwater
taco at elvenkind.com
Thu Jun 10 19:03:18 CEST 2010
Elie Roux wrote:
> taco a écrit :
>> don't use an empty second argument to setlocale(). If you already
>> know that you want UTF-8, set it to a suitable value instead.
>
> The problem is that, IIUC, it's weird to put fr_FR.UTF-8 as a locale, as
> it's specific to my system... But I discovered that
>
> os.setenv("LC_CTYPE", nil)
> os.execute("myprogram")
> os.setenv("LC_CTYPE", "C")
>
> does the trick... with this it's the LANG environment variable
> (fr_FR.UTF-8) that will be set as LC_CTYPE.
>
> Setting setlocale (LC_CTYPE, "UTF-8"); in tetest.c does not solve
> the problem (strangely...). Is there another way?
Quite seriously: your C code should not be using libc functions that
depend on the current locale if you want it to produce reproducible
results. That's the core of the problem: LOCALE settings are unreliable,
unless your program explicitly sets the LOCALE itself.
So don't use that 'smart' printf() format, but just write (or reuse) an
int2utf8 C function.
Best wishes,
Taco
More information about the dev-luatex
mailing list