Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
moko 08.09.2020 12:45
Там полгода назад исправлялось нижеуказанное, у меня сейчас ваш тест нормально работает:-f и -d. Проверка доступности -> проверка существования.Так и было сделано:
В документации четко написано, что проверяется существование файла:
https://www.parser.ru/docs/lang/?opsfd.htm
Но на деле еще проверяется, что есть доступ: access(fname, R_OK)==0, плюc сам метод там называется entry_readable (а не entry_exists).
То есть если файл существует, а доступа нет (chmod 000 например), -f вернет false.
Отличие достаточно тонкое, и наткнулся на это я по другой причине. :) -f и -d в итоге не работают с русскими именами файлов/директорий под Windows, когда парсер работает в UTF-8, поскольку надо использовать waccess и переводить имя из utf-8 в wchar (USC-2):
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/access-waccess?view=vs-2019
Но чем использовать waccess, думаю просто убрать лишнюю проверку и привести поведение парсера в соответствии с документацией.