From 9cd59712289214225094b5b4108c2dbbf06a052c Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov Date: Tue, 2 Nov 2010 20:32:39 +0000 Subject: 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 --- lib/System/Unix/Program.inc | 4 ++-- lib/System/Win32/Program.inc | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'lib/System') 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; -- cgit v1.2.3