Syntax setlocale(3)
Jaroslav Benkovsky
benkovsk na pha.pvt.cz
Čtvrtek Leden 23 09:52:57 CET 1997
Jan Kasprzak wrote:
>
> Zdravim,
>
> pri pokusech o rozchozeni locales v X11 jsem narazil na tento
> problem: V libX11 je na nekolika mistech volana funkce setlocale(3)
> priblizne timto zpusobem:
>
> char *charset = setlocale(LC_CTYPE, NULL);
>
> A ocekava se, ze v charset pak bude jmeno prislusneho
> locale typu LC_CTYPE. Nekolika pokusy jsem zjistil, ze setlocale
> vraci NULL misto toho, aby vracelo "cz_CZ.ISO8859-2" nebo aspon "C".
>
> Podle meho nazoru je chyba v Xlibu: Manova stranka setlocale(3)
> na Linuxu pise, ze locale se bere z environmentu v pripade, ze druhy
> parametr setlocale je "" (a nikoliv NULL, jak to vola Xlib).
>
> Ma nekdo nejakou normu, kde by se dalo vycist, jak se ma
> setlocale(3) volat na POSIXovych systemech? Muj system je Linux 2.1,
> libc 5.4.17, XFree86 3.2 (==X11R6.1 s nekolika upravami). Nerad
> bych obvinoval Linux, ze je nestandardni :-)
POSIX Programmer's Guide by Donald Lewine:
char* setlocale(int category, const char *locale);
...
The /locale/ argument is the name of a locale. There are a few special
locale names:
"C" : make everything work as defined in the C standard....
"POSIX" : Same as "C"
"" : selects the native locale. This is done using the following steps:
(... pak se tam pise, z jakych envvaru se to bere...)
NULL: Returns the current locale without changing it
...
...
the setlocale() function returns a pointer to the name of the current
locale for the selected category. If setlocale() is given an
unknown locale, NULL is returned.
Takze bych rekl, ze se chova divne Linux :-((( a nebo neco
nastavujes spatne
Edheldil
Další informace o konferenci Linux