LINUX.ORG.RU

Длина имени файла = 255 байт?


0

0

наткнулся на такую штуку: джава ругается при создании файла с каноническим именем (т.е. с путем к файлу) более 255 символов. Полез в википедию, а там сказано, что для ext3 максимальная длина имени файла 255 байт. В связи с чем возник вопрос:
1. действительно ли это так или викиредакторы копипастили и ошиблись
2. Где в сырцах ядра это посмотреть?
3. Если локаль стоит UTF-8 то вообще получаем экспериментально длину имени файла кириллицей в 128 символов.
4. WTF?! в 21 веке такое маленькое ограничение на имя файла?!

★★★☆

По-моему, кто-то путает именя файлов с SMS...

annoynimous ★★★★★
()

Это вроде как ограничение linux vfs

Cancellor ★★★★☆
()

Ага, быстрый гуглинг дал, что максимальный _путь_ к файлу это таки _PC_PATH_MAX байт, а само имя <= 256 байт. Походу, так.

alg0rythm
()

Length of filename is 255 chars (ext2/3)
Length of pathname is 4095 chars. (limit of kernel)

stave ★★★★★
()

Между прочим, в Windows на NTFS макимальная длина имени файла 255 именно двухбайтовых символов UTF-16, а максимальная длина пути 32767.

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

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

xydo ★★
()

>1. действительно ли это так или викиредакторы копипастили и ошиблись

Это действительно так.

>2. Где в сырцах ядра это посмотреть?

include/linux/ext3_fs.h, искать определение struct ext3_dir_entry

>3. Если локаль стоит UTF-8 то вообще получаем экспериментально длину имени файла кириллицей в 128 символов.

Чуть больше за счет пробелов и прочей ASCII-пунктуации.

>4. WTF?! в 21 веке такое маленькое ограничение на имя файла?!

Это же линакс! Как вариант никто не запрещает использовать jfs (самый пристойный вариант) или reiser4.

linuxfan
()

> 4. WTF?! в 21 веке такое маленькое ограничение на имя файла?!

Раньше 8 символов было, и ничего, жили как то.

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

Угу, приходилось скриптом транслитеровать. Поубывав бы - на кой ляд стопицот кириллических буков в названии? Эх, где старое доброе время, когда за не [0-9a-zA-Z] банили?

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

А еще был замечательный васик, где по буквице на имя переменной, не больше. При виде this_is_instance_of_object_type_my_very_long_object_name->vasas_realisation_of_ very_long_named_fuction_which_returning_useful_value(this_value_name_visible_onl y_on_very_huge_displays); понимаешь, что это даже где-то было счастье

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

> Раньше 8 символов было, и ничего, жили как то.

8.3

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.