Add a boolean parameter to the ExecuteAndWait static function to indicated

if execution failed.  ExecuteAndWait returns -1 upon an execution failure, but
checking the return value isn't sufficient because the wait command may
return -1 as well.  This new parameter is to be used by the clang driver in a
subsequent commit.
Part of rdar://13362359

llvm-svn: 178087
This commit is contained in:
Chad Rosier 2013-03-26 23:35:00 +00:00
parent ab003df656
commit 654190a12d
2 changed files with 9 additions and 5 deletions

View File

@ -125,7 +125,8 @@ namespace sys {
const sys::Path** redirects = 0,
unsigned secondsToWait = 0,
unsigned memoryLimit = 0,
std::string* ErrMsg = 0);
std::string* ErrMsg = 0,
bool *ExecutionFailed = 0);
/// A convenience function equivalent to Program prg; prg.Execute(..);
/// @see Execute

View File

@ -29,12 +29,15 @@ Program::ExecuteAndWait(const Path& path,
const Path** redirects,
unsigned secondsToWait,
unsigned memoryLimit,
std::string* ErrMsg) {
std::string* ErrMsg,
bool *ExecutionFailed) {
Program prg;
if (prg.Execute(path, args, envp, redirects, memoryLimit, ErrMsg))
if (prg.Execute(path, args, envp, redirects, memoryLimit, ErrMsg)) {
if (ExecutionFailed) *ExecutionFailed = false;
return prg.Wait(path, secondsToWait, ErrMsg);
else
return -1;
}
if (ExecutionFailed) *ExecutionFailed = true;
return -1;
}
void