mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Fix incorrectly finding 'executable' directories instead of files.
This broke for example the 'not' utility, if a directory called 'FileCheck' is executable and in the path before the actual 'FileCheck'. This patch steals the implementation of the "old" PathV1 canExecute implementation: - checks for R_OK (file readable): this is necessary for executing scripts; we should not regress here unless we have good reasons - checks for S_ISREG; if we want to get rid of this, we'd need to change all callers who already made the assumption when depending on Path V1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184074 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7338de37a8
commit
b30614a1de
@ -296,7 +296,14 @@ bool can_execute(const Twine &Path) {
|
||||
SmallString<128> PathStorage;
|
||||
StringRef P = Path.toNullTerminatedStringRef(PathStorage);
|
||||
|
||||
return ::access(P.begin(), X_OK) != -1;
|
||||
if (0 != access(P.begin(), R_OK | X_OK))
|
||||
return false;
|
||||
struct stat buf;
|
||||
if (0 != stat(P.begin(), &buf))
|
||||
return false;
|
||||
if (!S_ISREG(buf.st_mode))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool equivalent(file_status A, file_status B) {
|
||||
|
Loading…
Reference in New Issue
Block a user