aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm/lib/Support/Program.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-12-20 14:16:56 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-12-20 14:16:56 +0000
commit2cab237b5dbfe1b3e9c7aa7a3c02d2b98fcf7462 (patch)
tree524fe828571f81358bba62fdb6d04c6e5e96a2a4 /contrib/llvm/lib/Support/Program.cpp
parent6c7828a2807ea5e50c79ca42dbedf2b589ce63b2 (diff)
parent044eb2f6afba375a914ac9d8024f8f5142bb912e (diff)
Notes
Diffstat (limited to 'contrib/llvm/lib/Support/Program.cpp')
-rw-r--r--contrib/llvm/lib/Support/Program.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/contrib/llvm/lib/Support/Program.cpp b/contrib/llvm/lib/Support/Program.cpp
index 34e336b354d6..4212323bc0e1 100644
--- a/contrib/llvm/lib/Support/Program.cpp
+++ b/contrib/llvm/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;