Summary: | mkisofs не работает в локали ru_RU.UTF-8 | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Anton Farygin <rider> | ||||
Component: | mkisofs | Assignee: | Konstantin A Lepikhov (L.A. Kostis) <lakostis> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | blocker | ||||||
Priority: | P5 | CC: | lakostis, lav | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 7079, 7371 | ||||||
Attachments: |
|
Description
Anton Farygin
2005-07-21 15:02:13 MSD
мало ли что говорят, я вот не вижу в списке допустимых кодировок utf8. Приведите пример командной строки с явным указанием utf8-кодировки для mkisofs, который работает. про переменные: согласно коду natspec: tmp = getenv ("LANGUAGE"); - LANGUAGE для опеределения кодировок - это труба. Нужно смотреть на LANG natspec_get_system_locale() - get_from_system_i18n("LANG"); - это конечно все правильно, но зачем тогда брать пользовательскую LANGUAGE, где черт знает что может быть написано ? 1. Тестируется след. версия natspec, где анализ LANGUAGE убран, поскольку он относится только к выводу сообщения. 2. Вот весь патч к mkisofs, который был: +#ifdef HAVE_NATSPEC + nls = load_nls(natspec_get_filename_encoding("")); +#else nls = load_nls("iso8859-1"); +#endif То есть влияет только на кодировку по умолчанию. Если iso8859-1 в UTF системе незаметно подменяется на utf8 где-то дальше, то это бага mkisofs, я готов помочь с поиском/исправлением. Судя по ругани k3b, которая приведена в баге, mkisofs вызывается с явно указанной кодировкой. Хотелось бы видеть, 1) что k3b выводит в консоль про запуск mkisofs при попытке создания образа 2) Если есть вопросы к natspec, то что говорит в локали UTF8 $ natspec -fv $ natspec -fv System locale: ru_RU.UTF-8 Filename encoding in iconv/nls form: utf8 При этом явно сказано, что mkisofs не поддерживает utf8. Т.е. - для него не надо заводить такую перекодировку. Т.е. - в этом случае: +#ifdef HAVE_NATSPEC + nls = load_nls(natspec_get_filename_encoding("")); +#else nls = load_nls("iso8859-1"); +#endif nls получается равным utf8, которого нет в списке, в итоге вылетает ошибка Тут нужно или убирать natspec вообще, или делать проверку на наличие полученной кодировки в списке поддерживаемых mkisofs'ом. Предлагается применить патч, чтобы mkisofs узнал что такое utf8: --- nls_base.c.o 2001-01-21 00:18:33 +0300 +++ libunls/nls_base.c 2005-07-21 16:08:48 +0400 @@ -113,6 +113,8 @@ int ret; #endif + if (!strcmp(charset,"utf8")) + charset = "iso8859-1"; nls = find_nls(charset); if (nls) { nls->inc_use_count(); (In reply to comment #5) > + if (!strcmp(charset,"utf8")) > + charset = "iso8859-1"; Т.к. по-умолчанию у нас будет "iso8859-1", то natspec получается не нужен :-( (In reply to comment #6) > (In reply to comment #5) > > + if (!strcmp(charset,"utf8")) > > + charset = "iso8859-1"; > Т.к. по-умолчанию у нас будет "iso8859-1", то natspec получается не нужен :-( По умолчанию будет utf8 > Предлагаю оторвать чего-нить автору natspec
Человек решает проблемы. А то, что новые вылазят на последних стадиях
тестирования -- проблема организации оного тестирования.
Предлагаю одуматься.
Created attachment 1010 [details] Обновлённый патч для natspec Я добавил распознавание utf8 к основному патчу, пакет нужно просто пересобрать с новым патчем. На всякий случай выложил пакеты с исправленными исходным пакетом и бинарниками на ftp://ftp.altlinux.ru/pub/people/lav/cdrtools Кто-нить проверял сборки, которые выложил Виталий? Собственно, я могу просто пересобрать cdrtools с новым libnatspec, т.к. уникодного окружения у меня нет. пересобери, плз. Кстати, насколько я понял - пересобирать надо с новым патчем, а не с новым libnatspec. Проверил сборки Виталия - вроде всё работает. раз ничего не сломалось, закрываю. |