Revert r77396.
authorMikhail Glushenkov <foldr@codedgers.com>
Thu, 28 Oct 2010 19:32:58 +0000 (19:32 +0000)
committerMikhail Glushenkov <foldr@codedgers.com>
Thu, 28 Oct 2010 19:32:58 +0000 (19:32 +0000)
Original commit message:

    On "Unix", if Program::FindProgramByName is given a name containing
    slashes, just go with it, regardless of whether it looks like it will
    be executable. This follows the behavior of sh(1) more closely.

It's better when behaviour is consistent between platforms. This change also
makes FindExecutable() behave as expected on unix-likes (before this commit, it
used to always succeed).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117582 91177308-0d34-0410-b5e6-96231b3b80d8

lib/System/Unix/Program.inc

index 110a6d14f48673de8f63e5eed64168f8009c4336..3741bf8e6bab2a14c47abd80a6b85005c819dba2 100644 (file)
@@ -63,7 +63,7 @@ Program::FindProgramByName(const std::string& progName) {
     return Path();
   // Use the given path verbatim if it contains any slashes; this matches
   // the behavior of sh(1) and friends.
-  if (progName.find('/') != std::string::npos)
+  if (progName.find('/') != std::string::npos && temp.canExecute())
     return temp;
 
   // At this point, the file name does not contain slashes. Search for it