Каков максимальный размер полного пути в DOS? - PullRequest
0 голосов
/ 12 июля 2020

stdio.h в OpenWatcom указывает 143 байта (исключая завершающий \0). Мы можем получить это следующим образом:

  • pathname = drive_letter + ":" + "\\" + dirname + name + "." + extension
  • drive_letter - 1 байт, dirname должно быть пустым или заканчиваться на \ и иметь размер от 0 до 128 байтов, имя - от 1 до 8 байтов, расширение - от 0 до 3 байтов.
  • Итак, ограничение на размер пути составляет: 1 + 1 + 1 + 128 + 8 + 1 + 3 = 143 байта.

Откуда берется ограничение в 128 байт для имени каталога? Это где-то задокументировано?

Я обнаружил задокументированное ограничение в 66 байт для пути к каталогу на основе Current Directory Structure (CDS). Я предполагаю, что это означает, что dirname имеет ограничение в 64 байта, таким образом, ограничение на размер пути составляет 1 + 1 + 1 + 64 + 8 + 1 + 3 = 79 байтов. Но, вероятно, это применимо только к команде cd для каждого диска, а абсолютные пути могут быть длиннее.

Обратите внимание, что меня не интересует ограничение в 260 байт (или 260 символов), налагаемое некоторые 32-битные Windows версии. Меня интересует ограничение DOS.

Эксперимент:

  • DOSBox 0.74-3, кажется, может сделать cd C:\EXAMPLE1.DIR\EXAMPLE2.DIR\EXAMPLE3.DIR\EXAMPLE4.DIR\EXAMPLE5.DIR\EXAMPLE6.DIR, но команда dir не работает с Illegal Path.. Таким образом, ограничение на размер пути составляет не более 80 байт.
  • FreeDOS 1.2, похоже, может выполнять cd C:\EXAMPLE1.DIR\EXAMPLE2.DIR\EXAMPLE3.DIR\EXAMPLE4.DIR, а dir работает там, но добавление еще одного уровня (\EXAMPLE5.DIR) приводит к сбою CHDIR failed. Таким образом, максимальный размер имени пути составляет 67 байт.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...