LINUX.ORG.RU
ФорумTalks

В ядре Linux поломали и пофиксили юникод в именах файлов

 , , ,


0

3

Собственно, сабж: https://www.phoronix.com/news/Linux-Reverts-Special-Char-Uni .

Linus Torvalds took to reverting some code tonight within the mainline Linux kernel that inadvertently had broken support having filenames with ❤️ and other special Unicode characters in filenames when on file-systems with case-folding (optional case insensitive file/folder name) support.

Linus Torvalds commented in the revert: «It turns out that we can't do this, because while the old behavior of ignoring ignorable code points was most definitely wrong, we have case-folding filesystems with on-disk hash values with that wrong behavior.

So now you can't look up those names, because they hash to something different.

Of course, it's also entirely possible that in the meantime people have created *new* files with the new („more correct“) case folding logic, and reverting will just make other things break.

The correct solution is to not do case folding in filesystems, but sadly, people seem to never really understand that. People still see it as a feature, not a bug.»

★★★★★

4.2

Юникод в именах сломать невозможно, потому что имена двоично-безопасные и от кодировок не зависят вообще. Сломали багофичу «регистронезависимость», которая уже зависит от кодировки, но у нормальных людей не используется.

firkax ★★★★★
()

Только что закончил собирать исправленную версию

hateWin ★☆
()
Ответ на: комментарий от skiminok1986

Ну когда это было? В двухтысячных и раньше. Сейчас уже никто не помнит, как локаль настроить, а вы вспомнили.

dmitry237 ★★★★
()
Ответ на: комментарий от skiminok1986

Дух старой школы. Заходишь на сайт, а там три версии сайта в разных кодировках.

(…… а потом в текст на русском вдруг потребовалось вставить пару фраз на китайском)

wandrien ★★
()
Ответ на: комментарий от wandrien

п²п╣ п╡я│п╣п╪ п╫я┐п╤п╣п╫ я▌п╫п╦п╨п╬п╢.

Zhbert ★★★★★
()
Ответ на: комментарий от saahriktu

В те времена, когда я Арч ставил, это еще делалось ручной правкой конфига. С тех пор ни разу не приходилось локаль настраивать ручками.

wandrien ★★
()
Ответ на: комментарий от wandrien

Помню, как закинешь что-то с линуксовой машины на флешку, вставишь её в виндовую машину, а там сплошная бНОПНЯ. И наоборот.

Zhbert ★★★★★
()
Ответ на: комментарий от saahriktu

Ну так

-O casefold

повторю, сломали не юникод а багофичу регистронезависимости.

firkax ★★★★★
()
Ответ на: комментарий от Zhbert

Романтика! То ли дело сейчас, когда всё просто работает. Бездушный цифровой мир. (Видимо, такая логика у ненужнистов.)

wandrien ★★
()
Ответ на: комментарий от firkax

Двоично-безопасное – это CP437 (32..127, так как верхняя половина (128..255 – это уже псевдографика и национальные алфавиты)?

yars068 ★★★★
()
Ответ на: комментарий от wandrien

Ну так юникод во все поля. Даже на винде можно выставить UTF8 и не париться с названиями файлов. А содержание, тут могут аозникнуть проблемы. но решаемо, нужно только переконвертировать, обычно это (какая-нибудь скачка, cue-file например) на линукс-хосте решается:

(gc file.сue -enc ansi) | sc file.cue
dmitry237 ★★★★
()
Ответ на: комментарий от dmitry237

Ну когда это было? В двухтысячных и раньше. Сейчас уже никто не помнит, как локаль настроить, а вы вспомнили.

ZIP-архивы и старый виндософт до сих пор наполнен восьмибитной Win-1251.

EXL ★★★★★
()
Ответ на: комментарий от yars068

Нет, двоично-безопасное это все символы, кроме нуля (который в Си обозначает конец строки) и слеша, который обозначает переход внутрь директории. Символ с кодом 155 это просто символ с кодом 155, он не может сломаться и никакие кодировки тут ни при чём.

firkax ★★★★★
()
Ответ на: комментарий от EXL

Щас в одном кросплатформенном проекте держу файл с локализованными строками в CP866. Потому что при сборке на linux-машине, я могу гарантированно его конвертнуть в utf8, проблем нет. А вот при сборке на windows-машине – не факт.

wandrien ★★
()
Ответ на: комментарий от EXL

ZIP-архивы и старый виндософт до сих пор наполнен восьмибитной Win-1251

Я же говорю только за себя, у меня такой проблемы нет вообще. Кстати, когда была винда, я тоже не испытывал проблем, хоть она была полностью UTF8 (для полной совместимости с линукс на уровне содержания файлов).

dmitry237 ★★★★
()
Ответ на: комментарий от wandrien

так вот какой логикой вы, ироды, руководстуетесь

HE_KOT
()
Ответ на: комментарий от HE_KOT

на момент написания комментария я имел жёсткий диск

Не понимаю логику. Допустим у жд название (label) 💅💅💅💅 И что?

dmitry237 ★★★★
()
Ответ на: комментарий от HE_KOT

и он автоматом монтируется по соответствующему пути. И, что удивительно, софт работает.

Я этого не отрицаю, а почему не должен?

dmitry237 ★★★★
()
Ответ на: комментарий от dmitry237

потому же, почему у меня на винду всегда была папочка C:/shortway. Для программ-имбецилов.

Ну, открываешь в автокаде диск, а он папку русскоязычного пользователя показывает как ????? и сохранять не может.

HE_KOT
()
Ответ на: комментарий от HE_KOT

Лет 10 назад, частенько попадались питоноскрипты, которые приходили в шок от кириллических файловых путей у меня в хомяке. Потом то ли с окончательной миграцией на 3-й питон, проблема постепенно решилась, то ли просто у меня пропала нужда часто запускать разный странный питоно-софт, но сейчас с таким не сталкиваюсь уже.

wandrien ★★
()
Ответ на: комментарий от HE_KOT

Это же зависит от настроек, я в винде проверить не могу, у меня ее просто нет в наличии, но когда у нее системная локаль UTF8, то подозреваю проблем не будет, но это лишь подозрение, на практике утверждать не могу, все-таки винда это винда. Я про то, что когда она (винда) была, я без проблем обменивался файлами с линукс в одной и той же кодировке (utf-8). В сторону винды scp, обратно scp или плагин Far. Midnight Commander не хотел, хотя из Thunar (sftp) все работало.

dmitry237 ★★★★
()
Ответ на: комментарий от HE_KOT

он папку русскоязычного пользователя показывает

А мамку как показывает?

В винде у всех нормальных людей были директории для данных в корне, так повелось ещё со времён доса. А всякими \Users\ или 'Documents and Settings\' пользовались только секретарши в основном.

firkax ★★★★★
()
Ответ на: комментарий от firkax

сам наверняка на рабочий стол всё сохраняешь

HE_KOT
()
Ответ на: комментарий от dmitry237

Только дай юзерам загружать файлы на сервер, и никакой фантазнии не хватит представить, что они туда в итоге позагружают. Проверено неоднократно.

quwy
()


Линус Торвальдс (Linus Torvalds) сегодня вечером исправил некоторый код в основном ядре Linux, который непреднамеренно нарушил поддержку имен файлов с помощью ❤️ и других специальных символов Unicode в именах файлов в файловых системах с изменяемым регистром (необязательное нечувствительное к регистру имя файла/папки).

Линус Торвальдс прокомментировал это так: «Оказывается, мы не можем этого сделать, потому что, хотя старое поведение, заключавшееся в игнорировании игнорируемых кодовых точек, было определенно неправильным, у нас есть файловые системы с хэш-значениями на диске с таким неправильным поведением.

Так что теперь вы не можете найти эти имена, потому что они хэшируются как-то по-другому.

Конечно, также вполне возможно, что за это время люди создали *новые* файлы с новой („более корректной“) логикой изменения регистра, и возврат к этому просто приведет к поломке других функций.

Правильным решением было бы не использовать разбиение регистра в файловых системах, но, к сожалению, люди, похоже, никогда этого по-настоящему не понимают. Люди по-прежнему рассматривают это как функцию, а не ошибку.»


Я ничего не понял. О чем вообще идет речь?

Xintrea ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)