parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Возможно не достаточно новый 3.4.6b?

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, думаю просто убрать лишнюю проверку и привести поведение парсера в соответствии с документацией.
Так и было сделано:

http://redmine.parser.ru/projects/parser3/repository/revisions/8050/diff