diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-06-13 19:25:37 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-06-13 19:25:37 +0000 |
commit | 6585b388cb7bfc623adb9e4dd910423f838e5d96 (patch) | |
tree | dc0ff4c6888d3a35bc3dec2152d921fd929e4008 | |
parent | 90cd06e90be1db06bc4812ae9ec96b6638847285 (diff) | |
download | llvm-6585b388cb7bfc623adb9e4dd910423f838e5d96.tar.gz llvm-6585b388cb7bfc623adb9e4dd910423f838e5d96.tar.bz2 llvm-6585b388cb7bfc623adb9e4dd910423f838e5d96.tar.xz |
Have sys::FindProgramByName return a std::string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183928 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/Program.h | 2 | ||||
-rw-r--r-- | lib/Support/Unix/Program.inc | 14 | ||||
-rw-r--r-- | lib/Support/Windows/Program.inc | 16 | ||||
-rw-r--r-- | tools/bugpoint/OptimizerDriver.cpp | 5 | ||||
-rw-r--r-- | tools/bugpoint/ToolRunner.cpp | 12 | ||||
-rw-r--r-- | utils/not/not.cpp | 5 |
6 files changed, 27 insertions, 27 deletions
diff --git a/include/llvm/Support/Program.h b/include/llvm/Support/Program.h index dac377aaa7..38fc8c2c8b 100644 --- a/include/llvm/Support/Program.h +++ b/include/llvm/Support/Program.h @@ -29,7 +29,7 @@ namespace sys { /// @returns A Path object initialized to the path of the program or a /// Path object that is empty (invalid) if the program could not be found. /// @brief Construct a Program by finding it by name. - Path FindProgramByName(const std::string& name); + std::string FindProgramByName(const std::string& name); // These functions change the specified standard stream (stdin, stdout, or // stderr) to binary mode. They return errc::success if the specified stream diff --git a/lib/Support/Unix/Program.inc b/lib/Support/Unix/Program.inc index d8bdd6ce42..5fa421b917 100644 --- a/lib/Support/Unix/Program.inc +++ b/lib/Support/Unix/Program.inc @@ -48,19 +48,19 @@ namespace llvm { using namespace sys; // This function just uses the PATH environment variable to find the program. -Path +std::string sys::FindProgramByName(const std::string& progName) { // Check some degenerate cases if (progName.length() == 0) // no program - return Path(); + return ""; Path temp; if (!temp.set(progName)) // invalid name - return Path(); + return ""; // 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) - return temp; + return temp.str(); // 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. @@ -68,7 +68,7 @@ sys::FindProgramByName(const std::string& progName) { // Get the path. If its empty, we can't do anything to find it. const char *PathStr = getenv("PATH"); if (PathStr == 0) - return Path(); + return ""; // Now we have a colon separated list of directories to search; try them. size_t PathLen = strlen(PathStr); @@ -81,7 +81,7 @@ sys::FindProgramByName(const std::string& progName) { if (FilePath.set(std::string(PathStr,Colon))) { FilePath.appendComponent(progName); if (FilePath.canExecute()) - return FilePath; // Found the executable! + return FilePath.str(); // Found the executable! } // Nope it wasn't in this directory, check the next path in the list! @@ -94,7 +94,7 @@ sys::FindProgramByName(const std::string& progName) { PathLen--; } } - return Path(); + return ""; } static bool RedirectIO(const Path *Path, int FD, std::string* ErrMsg) { diff --git a/lib/Support/Windows/Program.inc b/lib/Support/Windows/Program.inc index 90a5cdb78f..cb3bc69901 100644 --- a/lib/Support/Windows/Program.inc +++ b/lib/Support/Windows/Program.inc @@ -33,17 +33,17 @@ namespace llvm { using namespace sys; // This function just uses the PATH environment variable to find the program. -Path sys::FindProgramByName(const std::string& progName) { +std::string sys::FindProgramByName(const std::string &progName) { // Check some degenerate cases if (progName.length() == 0) // no program - return Path(); + return ""; Path temp; if (!temp.set(progName)) // invalid name - return Path(); + return ""; // Return paths with slashes verbatim. if (progName.find('\\') != std::string::npos || progName.find('/') != std::string::npos) - return temp; + return temp.str(); // At this point, the file name is valid and does not contain slashes. // Let Windows search for it. @@ -54,11 +54,11 @@ Path sys::FindProgramByName(const std::string& progName) { // See if it wasn't found. if (len == 0) - return Path(); + return ""; // See if we got the entire path. if (len < MAX_PATH) - return Path(buffer); + return std::string(buffer); // Buffer was too small; grow and retry. while (true) { @@ -68,9 +68,9 @@ Path sys::FindProgramByName(const std::string& progName) { // It is unlikely the search failed, but it's always possible some file // was added or removed since the last search, so be paranoid... if (len2 == 0) - return Path(); + return ""; else if (len2 <= len) - return Path(b); + return std::string(b); len = len2; } diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp index 6c491ff0f9..4c9219a71b 100644 --- a/tools/bugpoint/OptimizerDriver.cpp +++ b/tools/bugpoint/OptimizerDriver.cpp @@ -148,7 +148,7 @@ bool BugDriver::runPasses(Module *Program, return 1; } - sys::Path tool = sys::FindProgramByName("opt"); + std::string tool = sys::FindProgramByName("opt"); if (tool.empty()) { errs() << "Cannot find `opt' in PATH!\n"; return 1; @@ -159,14 +159,13 @@ bool BugDriver::runPasses(Module *Program, // setup the child process' arguments SmallVector<const char*, 8> Args; - std::string Opt = tool.str(); if (UseValgrind) { Args.push_back("valgrind"); Args.push_back("--error-exitcode=1"); Args.push_back("-q"); Args.push_back(tool.c_str()); } else - Args.push_back(Opt.c_str()); + Args.push_back(tool.c_str()); Args.push_back("-o"); Args.push_back(OutputFilename.c_str()); diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp index 00f14f4fd0..30db4b59dc 100644 --- a/tools/bugpoint/ToolRunner.cpp +++ b/tools/bugpoint/ToolRunner.cpp @@ -400,7 +400,7 @@ static void lexCommand(std::string &Message, const std::string &CommandLine, pos = CommandLine.find_first_of(delimiters, lastPos); } - CmdPath = sys::FindProgramByName(Command).str(); + CmdPath = sys::FindProgramByName(Command); if (CmdPath.empty()) { Message = std::string("Cannot find '") + Command + @@ -875,16 +875,16 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType, GCC *GCC::create(std::string &Message, const std::string &GCCBinary, const std::vector<std::string> *Args) { - sys::Path GCCPath = sys::FindProgramByName(GCCBinary); - if (GCCPath.isEmpty()) { + std::string GCCPath = sys::FindProgramByName(GCCBinary); + if (GCCPath.empty()) { Message = "Cannot find `"+ GCCBinary +"' in PATH!\n"; return 0; } - sys::Path RemoteClientPath; + std::string RemoteClientPath; if (!RemoteClient.empty()) RemoteClientPath = sys::FindProgramByName(RemoteClient); - Message = "Found gcc: " + GCCPath.str() + "\n"; - return new GCC(GCCPath.str(), RemoteClientPath.str(), Args); + Message = "Found gcc: " + GCCPath + "\n"; + return new GCC(GCCPath, RemoteClientPath, Args); } diff --git a/utils/not/not.cpp b/utils/not/not.cpp index bb2d87bb44..45322ecffc 100644 --- a/utils/not/not.cpp +++ b/utils/not/not.cpp @@ -13,10 +13,11 @@ using namespace llvm; int main(int argc, const char **argv) { - sys::Path Program = sys::FindProgramByName(argv[1]); + std::string Program = sys::FindProgramByName(argv[1]); std::string ErrMsg; - int Result = sys::ExecuteAndWait(Program, argv + 1, 0, 0, 0, 0, &ErrMsg); + int Result = + sys::ExecuteAndWait(sys::Path(Program), argv + 1, 0, 0, 0, 0, &ErrMsg); if (Result < 0) { errs() << "Error: " << ErrMsg << "\n"; return 1; |