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

Re: [locale] "Кpивые" руки()



Hi!

>>> Такие штуки тоже целиком зависят от кривизны рук разработчиков.
>>> Я бы сделал настройку на локаль при импорте такого файла...
>>
>> Учитывая, что все учебники НЕ РЕКОМЕНДУЮТ менять локаль в процессе работы
>> приложения...
>
>Это которые учебники? А как аргументируют?
>И имеется ввиду posix локаль или то, что в win32 (есть ли оно там вообще?)
>или "опыт обощенный для всех платформ"?


 В принципе, запрета на вызов setlocale(3) более одного раза -- нету.
И в форме setlocale(LC_ALL, "") и для конкретной категории (типа LC_TIME).
Другое дело, что многие старые реализации делали memory leak при
последующих вызовах (каждый вызов setlocale делает malloc и считывает
файлы в память, иногда довольно большие).

 Что касается "несовместимости m10n приложений" -- то в принципе,
в man-ах всегда документировано, на что влияет locale (например
printf(3), strftime(3) или обработка в perl ). Просто внимательно надо
читать, поскольку setlocale() имеет типичный side effect. И ставить
нужную категорию в "C"/"POSIX" перед вызовом функции или вообще
использовать собственные locale-independent функции в критичных
местах.

P.S. http://www.opengroup.org/onlinepubs/007908799/xsh/setlocale.html

--
-=AV=-