diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:10:56 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:10:56 +0000 |
commit | 044eb2f6afba375a914ac9d8024f8f5142bb912e (patch) | |
tree | 1475247dc9f9fe5be155ebd4c9069c75aadf8c20 /lib/Support/Program.cpp | |
parent | eb70dddbd77e120e5d490bd8fbe7ff3f8fa81c6b (diff) |
Notes
Diffstat (limited to 'lib/Support/Program.cpp')
-rw-r--r-- | lib/Support/Program.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/lib/Support/Program.cpp b/lib/Support/Program.cpp index 34e336b354d6..4212323bc0e1 100644 --- a/lib/Support/Program.cpp +++ b/lib/Support/Program.cpp @@ -23,20 +23,21 @@ using namespace sys; //=== independent code. //===----------------------------------------------------------------------===// -static bool Execute(ProcessInfo &PI, StringRef Program, const char **args, - const char **env, const StringRef **Redirects, - unsigned memoryLimit, std::string *ErrMsg); +static bool Execute(ProcessInfo &PI, StringRef Program, const char **Args, + const char **Env, ArrayRef<Optional<StringRef>> Redirects, + unsigned MemoryLimit, std::string *ErrMsg); -int sys::ExecuteAndWait(StringRef Program, const char **args, const char **envp, - const StringRef **redirects, unsigned secondsToWait, - unsigned memoryLimit, std::string *ErrMsg, - bool *ExecutionFailed) { +int sys::ExecuteAndWait(StringRef Program, const char **Args, const char **Envp, + ArrayRef<Optional<StringRef>> Redirects, + unsigned SecondsToWait, unsigned MemoryLimit, + std::string *ErrMsg, bool *ExecutionFailed) { + assert(Redirects.empty() || Redirects.size() == 3); ProcessInfo PI; - if (Execute(PI, Program, args, envp, redirects, memoryLimit, ErrMsg)) { + if (Execute(PI, Program, Args, Envp, Redirects, MemoryLimit, ErrMsg)) { if (ExecutionFailed) *ExecutionFailed = false; ProcessInfo Result = Wait( - PI, secondsToWait, /*WaitUntilTerminates=*/secondsToWait == 0, ErrMsg); + PI, SecondsToWait, /*WaitUntilTerminates=*/SecondsToWait == 0, ErrMsg); return Result.ReturnCode; } @@ -46,14 +47,16 @@ int sys::ExecuteAndWait(StringRef Program, const char **args, const char **envp, return -1; } -ProcessInfo sys::ExecuteNoWait(StringRef Program, const char **args, - const char **envp, const StringRef **redirects, - unsigned memoryLimit, std::string *ErrMsg, +ProcessInfo sys::ExecuteNoWait(StringRef Program, const char **Args, + const char **Envp, + ArrayRef<Optional<StringRef>> Redirects, + unsigned MemoryLimit, std::string *ErrMsg, bool *ExecutionFailed) { + assert(Redirects.empty() || Redirects.size() == 3); ProcessInfo PI; if (ExecutionFailed) *ExecutionFailed = false; - if (!Execute(PI, Program, args, envp, redirects, memoryLimit, ErrMsg)) + if (!Execute(PI, Program, Args, Envp, Redirects, MemoryLimit, ErrMsg)) if (ExecutionFailed) *ExecutionFailed = true; |