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

Re: setlocale(3) + ctype(3) in FreeBSD



Добрый день!

>Не подскажете ли, как правильно определить locale под FreeBSD, чтобы
>ctype(3)-функции ею пользовались? Следующий код корректно работает
>под Linux, а под FreeBSD локаль почему-то игнорирует.
>
>Проверено под 3.4-RELEASE и 4.0-STABLE


 Никакого фокуса нет. Просто FreeBSD считает, что по умолчанию char,
в том числе и в argv -- это signed char !

=======
unsigned char c=0xCA;
printf("setlocale: %s\n", setlocale(LC_ALL, "ru_RU.KOI8-R"));
printf("isalnum('%c'): %d\n", c, isalnum(c));
printf("isprint('%c'): %d\n", c, isprint(c));
printf("toupper('%c'): '%c'\n", c, toupper(c));
=======
setlocale: ru_RU.KOI8-R
isalnum('й'): 1
isprint('й'): 1
toupper('й'): 'Й'

 Проверил на FreeBSD 2.2.x .

P.S. У меня про это вроде есть в http://www.sensi.org/~alec/locale/
глава "Программирование".

--
-=AV=-