Гарантируются ли имена записей каталога ext2 с нулевым символом в допустимой файловой системе? - PullRequest
2 голосов
/ 04 октября 2011

Я думал, что это будет простой вопрос, но я не могу найти ответ.Я в основном читал эти спецификации:

http://www.nongnu.org/ext2-doc/ext2.html

Кажется, не упоминается, если имя записи каталога должно заканчиваться нулем.Я думаю, что это не определено.Есть поле name_len, так что вы можете легко напечатать имя в любом случае.

Гарантируется ли, что имена каталогов ext2 заканчиваются нулем?

Я спрашиваю, потому что при тестировании моего драйвера ext2 на моей хобби ОСЯ заметил, что когда я печатал некоторые имена каталогов, некоторые символы мусора появлялись в конце.Если бы я просто печатал символы name_len, все было бы хорошо, хотя было бы неплохо, если бы оно заканчивалось нулем.

Спасибо!

1 Ответ

5 голосов
/ 28 мая 2012

Я знаю, что это старый вопрос, но для тех, кто может найти это:

Нет, это не гарантирует нулевое завершение. Фактически, он должен заканчиваться нулем, только если длина имени (name_len) не кратна 4.

Из понимания ядра Linux, 3-е издание:

... длина записи каталога всегда кратна 4, и поэтому для заполнения в конце имени файла добавляются нулевые символы (\ 0), если это необходимо. Поле name_len хранит фактическую длину имени файла

С примером ниже (из книги). Обратите внимание, что имя «sbin» не имеет нулевого завершения, потому что длина (4) кратна 4:

enter image description here

...