We can do better when reporting the status of one-liner script execution.

Change the prototype of ScriptInterpreter::ExecuteOneLine() to return bool
instead of void and take one additional parameter as CommandReturnObject *.

Propagate the status of one-liner execution back appropriately.

llvm-svn: 109899
This commit is contained in:
Johnny Chen
2010-07-30 22:33:14 +00:00
parent fe1a4944b1
commit 7dc2e4784e
7 changed files with 37 additions and 16 deletions

View File

@@ -258,17 +258,28 @@ ScriptInterpreterPython::~ScriptInterpreterPython ()
Py_Finalize ();
}
void
ScriptInterpreterPython::ExecuteOneLine (CommandInterpreter &interpreter, const char *command)
bool
ScriptInterpreterPython::ExecuteOneLine (CommandInterpreter &interpreter,
const char *command,
CommandReturnObject *result = 0)
{
if (command)
{
int success;
success = PyRun_SimpleString (command);
if (success != 0)
interpreter.GetDebugger().GetErrorStream().Printf ("error: python failed attempting to evaluate '%s'\n", command);
if (success == 0)
return true;
// The one-liner failed. Append the error message.
if (result)
result->AppendErrorWithFormat ("python failed attempting to evaluate '%s'\n", command);
return false;
}
if (result)
result->AppendError ("empty command passed to python\n");
return false;
}