diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Support/GraphWriter.cpp | 5 | ||||
-rw-r--r-- | lib/Support/Program.cpp | 45 | ||||
-rw-r--r-- | lib/Support/SystemUtils.cpp | 1 |
3 files changed, 29 insertions, 22 deletions
diff --git a/lib/Support/GraphWriter.cpp b/lib/Support/GraphWriter.cpp index 2d1a146fe7..f651e25e76 100644 --- a/lib/Support/GraphWriter.cpp +++ b/lib/Support/GraphWriter.cpp @@ -16,6 +16,7 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" +#include "llvm/Support/PathV1.h" #include "llvm/Support/Program.h" using namespace llvm; @@ -85,7 +86,7 @@ static bool LLVM_ATTRIBUTE_UNUSED ExecGraphViewer(StringRef ExecPath, std::vector<const char*> &args, StringRef Filename, bool wait, std::string &ErrMsg) { if (wait) { - if (sys::ExecuteAndWait(sys::Path(ExecPath), &args[0],0,0,0,0,&ErrMsg)) { + if (sys::ExecuteAndWait(ExecPath, &args[0],0,0,0,0,&ErrMsg)) { errs() << "Error: " << ErrMsg << "\n"; return false; } @@ -94,7 +95,7 @@ ExecGraphViewer(StringRef ExecPath, std::vector<const char*> &args, errs() << " done. \n"; } else { - sys::ExecuteNoWait(sys::Path(ExecPath), &args[0],0,0,0,&ErrMsg); + sys::ExecuteNoWait(ExecPath, &args[0],0,0,0,&ErrMsg); errs() << "Remember to erase graph file: " << Filename.str() << "\n"; } return true; diff --git a/lib/Support/Program.cpp b/lib/Support/Program.cpp index 165972610d..52208b047d 100644 --- a/lib/Support/Program.cpp +++ b/lib/Support/Program.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/Program.h" +#include "llvm/Support/PathV1.h" #include "llvm/Config/config.h" #include "llvm/Support/system_error.h" using namespace llvm; @@ -29,46 +30,50 @@ static bool Execute(void **Data, const Path &path, const char **args, static int Wait(void *&Data, const Path &path, unsigned secondsToWait, std::string *ErrMsg); -int sys::ExecuteAndWait(StringRef path, const char **args, const char **env, - const StringRef **redirects, unsigned secondsToWait, - unsigned memoryLimit, std::string *ErrMsg, - bool *ExecutionFailed) { - Path P(path); - if (!redirects) - return ExecuteAndWait(P, args, env, 0, secondsToWait, memoryLimit, ErrMsg, - ExecutionFailed); + +static bool Execute(void **Data, StringRef Program, const char **args, + const char **env, const StringRef **Redirects, + unsigned memoryLimit, std::string *ErrMsg) { + Path P(Program); + if (!Redirects) + return Execute(Data, P, args, env, 0, memoryLimit, ErrMsg); Path IO[3]; const Path *IOP[3]; for (int I = 0; I < 3; ++I) { - if (redirects[I]) { - IO[I] = *redirects[I]; + if (Redirects[I]) { + IO[I] = *Redirects[I]; IOP[I] = &IO[I]; } else { IOP[I] = 0; - } + } } - return ExecuteAndWait(P, args, env, IOP, secondsToWait, memoryLimit, ErrMsg, - ExecutionFailed); + return Execute(Data, P, args, env, IOP, memoryLimit, ErrMsg); } -int sys::ExecuteAndWait(const Path &path, const char **args, const char **envp, - const Path **redirects, unsigned secondsToWait, +static int Wait(void *&Data, StringRef Program, unsigned secondsToWait, + std::string *ErrMsg) { + Path P(Program); + return Wait(Data, P, secondsToWait, ErrMsg); +} + +int sys::ExecuteAndWait(StringRef Program, const char **args, const char **envp, + const StringRef **redirects, unsigned secondsToWait, unsigned memoryLimit, std::string *ErrMsg, bool *ExecutionFailed) { void *Data = 0; - if (Execute(&Data, path, args, envp, redirects, memoryLimit, ErrMsg)) { + if (Execute(&Data, Program, args, envp, redirects, memoryLimit, ErrMsg)) { if (ExecutionFailed) *ExecutionFailed = false; - return Wait(Data, path, secondsToWait, ErrMsg); + return Wait(Data, Program, secondsToWait, ErrMsg); } if (ExecutionFailed) *ExecutionFailed = true; return -1; } -void sys::ExecuteNoWait(const Path &path, const char **args, const char **envp, - const Path **redirects, unsigned memoryLimit, +void sys::ExecuteNoWait(StringRef Program, const char **args, const char **envp, + const StringRef **redirects, unsigned memoryLimit, std::string *ErrMsg) { - Execute(/*Data*/ 0, path, args, envp, redirects, memoryLimit, ErrMsg); + Execute(/*Data*/ 0, Program, args, envp, redirects, memoryLimit, ErrMsg); } // Include the platform-specific parts of this class. diff --git a/lib/Support/SystemUtils.cpp b/lib/Support/SystemUtils.cpp index 54b5e97bfe..b13b57114b 100644 --- a/lib/Support/SystemUtils.cpp +++ b/lib/Support/SystemUtils.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/SystemUtils.h" +#include "llvm/Support/PathV1.h" #include "llvm/Support/Process.h" #include "llvm/Support/Program.h" #include "llvm/Support/raw_ostream.h" |