Summary: | Всегда пишет в юникоде в pipe | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Slava Semushin <php-coder> |
Component: | mpc | Assignee: | Anton Farygin <rider> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | evg, rider |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Slava Semushin
2009-08-14 21:01:40 MSD
Хотел помочь найти проблемный коммит, но это оказалось непросто: сделал бранч на основе 0.12.0-alt1, посмотрел а в нём только спек. Оказывается в пакете с некоторых пор используются теги. Ок, с ними конечно я не очень умею работать, но попробую: сделал бранч на основе тегов 0.12.1 и 0.14 -- в этих версиях бага ещё нет. Далее надо бы проверить версии 0.15 и 0.16, но для них тегов нет, есть только сразу же последний -- 0.16-alt1 Плохо :( Попробовал слить репо с официального сайта: error: transfer closed with outstanding read data remaining (curl_result = 18, http_code = 200, sha1 = fd14fe69f586531ed231c0310c0c4f37f820eb44) error: Unable to find 946c85ad837cbd90aaf1744291e2cd7c9dde74f5 under http://git.musicpd.org/cgit/master/mpc.git Cannot obtain needed blob 946c85ad837cbd90aaf1744291e2cd7c9dde74f5 while processing commit 551a6949315dd1c0644ec7e7862e6bf6bca2587e. fatal: Fetch failed. Такие дела :-( Пришлось качать тарболлы с оффсайта. Дошел до 0.14 -- в нём баг уже есть. Почему он не проявился когда я из тегов собирал -- не знаю, может не то собрал. Короче, качаю тарболлы. Вот он ваш хвалёный гит и груповая разработка -- если не следить, то легче с тарболлами дело иметь. Ага, нашел! Сломалось между 0.14 и 0.15. Вот код из src/main.c: charset_init(command->pipe >= 0 || isatty(STDIN_FILENO), isatty(STDOUT_FILENO)); И вот прототип этой ф-ции: charset_init(bool enable_input, bool enable_output); В моём случае, isatty(STDOUT_FILENO) возвращал 0, т.к. вывод шел не на терминал, а в pipe и перекодировка для выводимых данных отключалась. Это же касается не только данных, которые отправляются в pipe, но и при перенаправлении в файл, например. Исправить можно, например, так (включает безусловную перекодировку выходных данных): - charset_init(command->pipe >= 0 || isatty(STDIN_FILENO), - isatty(STDOUT_FILENO)); + charset_init(command->pipe >= 0 || isatty(STDIN_FILENO), 1); Сейчас отпишу автору насчет этого, что он скажет. P.S. Вышел 0.17, к слову. (В ответ на комментарий №1)
> Хотел помочь найти проблемный коммит, но это оказалось непросто: сделал бранч
> на основе 0.12.0-alt1, посмотрел а в нём только спек. Оказывается в пакете с
> некоторых пор используются теги.
Не теги, а бранчи. Учите гит, исходники апстрима лежат в отдельном бранче. Рекомендую также пользоваться средствами визуализации: giggle, gitg...
Теперь что касается комментария №3: > Исправить можно, например, так (включает безусловную перекодировку выходных > данных): > > - charset_init(command->pipe >= 0 || isatty(STDIN_FILENO), > - isatty(STDOUT_FILENO)); > + charset_init(command->pipe >= 0 || isatty(STDIN_FILENO), 1); > > Сейчас отпишу автору насчет этого, что он скажет. Не знаю, что вам помешало осилить гит хотя бы в виде веб-интерфейса http://git.musicpd.org/cgit/master/mpc.git , но автор там открытым текстом пишет о своих мотивах для того, чтобы так сделать. Почитайте лог коммита d99be092. Я не уверен, что стоит откатывать этот коммит. (В ответ на комментарий №6) > Почитайте лог коммита d99be092. Я не уверен, что стоит откатывать этот коммит. Почитал (http://git.musicpd.org/cgit/master/mpc.git/commit/?id=d99be092) -- вроде как пытались позаботиться о тех у кого локаль не юникодная, а в итоге лично мне стало от этого изменения только хуже. Что-то я не чувствую разницы между mpc ls и mpc ls | cat у себя на машине. Кодировку выставил ru_RU.CP1251 Т.е. выглядит это в обоих случаях так: Сурганова Рё оркестр и так далее. У mpd, правда, стоит filesystem_charset utf8. (В ответ на комментарий №9) > Т.е. выглядит это в обоих случаях так: > Сурганова Рё оркестр > и так далее. У mpd, правда, стоит filesystem_charset utf8. У меня filesystem_charset "cp1251" (В ответ на комментарий №3) > Сейчас отпишу автору насчет этого, что он скажет. Автор что-нибудь ответил? (В ответ на комментарий №11) > (В ответ на комментарий №3) > > Сейчас отпишу автору насчет этого, что он скажет. > Автор что-нибудь ответил? Нет ещё. (В ответ на комментарий №12) > Автор что-нибудь ответил? Да. Вот его ответ: "I have reverted that patch now, you have convinced me that it was a bad idea." P.S.: http://git.musicpd.org/cgit/master/mpc.git/commit/?id=ea66e807e892bc05e49a761c201a2c67f56a3361 mpc-0.17-alt2 -> sisyphus: * Mon Sep 14 2009 Alexey Rusakov <ktirf@altlinux> 0.17-alt2 - revert "disable character set conversion to/from pipe" (ALT #21080). Чот не помогло. Ну, я даже не знаю, чем помочь. Можете взять мой гит и посмотреть, правильный ли коммит я накатил. Хотя мне показалось, что правильный. |