[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Linux internationalization page
> А про симлинки и алиасы он просто не знает.
Кстати, я тут нарыл весьма тонкий момент в POSIX
и locale... Если строго следовать POSIX, то ЛЮБЫЕ
Aliases нарушают стандарт.
Дело в том, что setlocale(3) определена так :
char * setlocale(int category, const char *locale)
То есть, функция ВОЗВРАЩАЕТ указатель на string.
Теперь предположим, что у нас работает Alias.
(код навскидку)
================
#include <stdio.h>
#include <locale.h>
#include <string.h>
main () {
char * reqlcname="ru_RU.KOI8-R";
char * gotlcname;
gotlcname=setlocale(LC_CTYPE, reqlcname);
if ( ! strcmp(gotlcname, reqlcname))
printf("We can't set REQUIRED locale !\n");
}
=========
То есть, если имя locale пропушено через locale.alias или
даже через symlink, у нас есть полное право считать что
setlocale() не сработала. Других способов определить,
установилась ли locale *просто нет*, потому что, если мы
запросим действительно НЕСУЩЕСТВУЮЩУЮ locale :
setlocale(LC_CTYPE, "un_KNOWN.Locale");
мы по стандарту POSIX должны получить указатель на "C" !
--
-=AV=-