В Linux реализация glibc pathconf
возвращает значение константы времени компиляции PATH_MAX, поэтому нет волшебной среды выполнения FUSE или кто-либо другой может выполнить ее настройку.(См. Sysdeps / unix / sysv / linux / pathconf.c, который переходит к sysdeps / posix / pathconf.c.) Ответ на ваш вопрос «Как мне указать PATH_MAX моей файловой системы?»«Вы не можете. glibc не позволяет вам, а FUSE - просто мессенджер».
Конечный результат - неприятная ситуация. Вот сообщение в блоге, в котором обсуждается код, который заботится о PATH_MAX и не заботится о нем. Программное обеспечение, которое использует пути не более PATH_MAX, давно было взломано другими файловыми системами, поэтому вы можете игнорировать PATH_MAX.
В MacOS X (и, возможно, других BSD): реализация pathconf
полностью в ядре и может быть заменена на файловую систему.OSXFUSE включает в себя NOOP-версию pathconf, которая должна возвращать обычные константы времени компиляции.Тем не менее, в моих тестах, похоже, по ходу дела ловит другую функцию NOOP, которая возвращает ENXIO, и я не могу заставить работать pathconf.
Бонус: для NAME_MAX, реализуют statfs и устанавливают f_namemax.