summaryrefslogtreecommitdiff
path: root/lib/System
diff options
context:
space:
mode:
authorMikhail Glushenkov <foldr@codedgers.com>2010-11-02 20:32:39 +0000
committerMikhail Glushenkov <foldr@codedgers.com>2010-11-02 20:32:39 +0000
commit9cd59712289214225094b5b4108c2dbbf06a052c (patch)
tree9c56a6c5b666ef6617bb2e35a487c1c01734aa82 /lib/System
parent0f2ec15b9e22e80ffcb7332500f47c165b8ee945 (diff)
downloadllvm-9cd59712289214225094b5b4108c2dbbf06a052c.tar.gz
llvm-9cd59712289214225094b5b4108c2dbbf06a052c.tar.bz2
llvm-9cd59712289214225094b5b4108c2dbbf06a052c.tar.xz
Make FindProgramByName return paths with slashes unmodified on Windows.
This makes its behaviour more consistent across platforms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118048 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System')
-rw-r--r--lib/System/Unix/Program.inc4
-rw-r--r--lib/System/Win32/Program.inc6
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/System/Unix/Program.inc b/lib/System/Unix/Program.inc
index 86d9b2a1d9..e06f80ba83 100644
--- a/lib/System/Unix/Program.inc
+++ b/lib/System/Unix/Program.inc
@@ -66,8 +66,8 @@ Program::FindProgramByName(const std::string& progName) {
if (progName.find('/') != std::string::npos)
return temp;
- // At this point, the file name does not contain slashes. Search for it
- // through the directories specified in the PATH environment variable.
+ // At this point, the file name is valid and does not contain slashes. Search
+ // for it through the directories specified in the PATH environment variable.
// Get the path. If its empty, we can't do anything to find it.
const char *PathStr = getenv("PATH");
diff --git a/lib/System/Win32/Program.inc b/lib/System/Win32/Program.inc
index b55aa2fa80..2d6e665377 100644
--- a/lib/System/Win32/Program.inc
+++ b/lib/System/Win32/Program.inc
@@ -67,10 +67,12 @@ Program::FindProgramByName(const std::string& progName) {
Path temp;
if (!temp.set(progName)) // invalid name
return Path();
- if (temp.canExecute()) // already executable as is
+ // Return paths with slashes verbatim.
+ if (progName.find('\\') != std::string::npos ||
+ progName.find('/') != std::string::npos)
return temp;
- // At this point, the file name is valid and its not executable.
+ // At this point, the file name is valid and does not contain slashes.
// Let Windows search for it.
char buffer[MAX_PATH];
char *dummy = NULL;