Author: Jonas Devlieghere Date: 2020-06-25T09:55:46-07:00 New Revision: 842283652eb89e7c207ecfdac5e546472332f02b
URL: https://github.com/llvm/llvm-project/commit/842283652eb89e7c207ecfdac5e546472332f02b DIFF: https://github.com/llvm/llvm-project/commit/842283652eb89e7c207ecfdac5e546472332f02b.diff LOG: [lldb/ScriptInterpreter] Let the IORedirect factory handle IO being disabled. Have one factory method that decides how to initialize the ScriptInterpreterIORedirect object based on whether IO is enabled or disabled. Added: Modified: lldb/include/lldb/Interpreter/ScriptInterpreter.h lldb/source/Interpreter/ScriptInterpreter.cpp lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Interpreter/ScriptInterpreter.h b/lldb/include/lldb/Interpreter/ScriptInterpreter.h index 8086886149f8..491923e6a6c4 100644 --- a/lldb/include/lldb/Interpreter/ScriptInterpreter.h +++ b/lldb/include/lldb/Interpreter/ScriptInterpreter.h @@ -36,13 +36,11 @@ class ScriptInterpreterLocker { class ScriptInterpreterIORedirect { public: - /// Create an IO redirect with /dev/null as input, output and error file. - static llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> Create(); - - /// Create an IO redirect that redirects the output to the command return - /// object if set or to the debugger otherwise. + /// Create an IO redirect. If IO is enabled, this will redirects the output + /// to the command return object if set or to the debugger otherwise. If IO + /// is disabled, it will redirect all IO to /dev/null. static llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> - Create(Debugger &debugger, CommandReturnObject *result); + Create(bool enable_io, Debugger &debugger, CommandReturnObject *result); ~ScriptInterpreterIORedirect(); diff --git a/lldb/source/Interpreter/ScriptInterpreter.cpp b/lldb/source/Interpreter/ScriptInterpreter.cpp index d46a104fa25c..967c22819313 100644 --- a/lldb/source/Interpreter/ScriptInterpreter.cpp +++ b/lldb/source/Interpreter/ScriptInterpreter.cpp @@ -119,7 +119,12 @@ static void ReadThreadBytesReceived(void *baton, const void *src, } llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> -ScriptInterpreterIORedirect::Create() { +ScriptInterpreterIORedirect::Create(bool enable_io, Debugger &debugger, + CommandReturnObject *result) { + if (enable_io) + return std::unique_ptr<ScriptInterpreterIORedirect>( + new ScriptInterpreterIORedirect(debugger, result)); + auto nullin = FileSystem::Instance().Open(FileSpec(FileSystem::DEV_NULL), File::eOpenOptionRead); if (!nullin) @@ -134,13 +139,6 @@ ScriptInterpreterIORedirect::Create() { new ScriptInterpreterIORedirect(std::move(*nullin), std::move(*nullout))); } -llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> -ScriptInterpreterIORedirect::Create(Debugger &debugger, - CommandReturnObject *result) { - return std::unique_ptr<ScriptInterpreterIORedirect>( - new ScriptInterpreterIORedirect(debugger, result)); -} - ScriptInterpreterIORedirect::ScriptInterpreterIORedirect( std::unique_ptr<File> input, std::unique_ptr<File> output) : m_input_file_sp(std::move(input)), diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 40ce7d997800..d7f2fc659cf6 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -912,10 +912,8 @@ bool ScriptInterpreterPythonImpl::ExecuteOneLine( // we use the following more complicated method to pass the command string // directly down to Python. llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> - io_redirect_or_error = - options.GetEnableIO() - ? ScriptInterpreterIORedirect::Create(m_debugger, result) - : ScriptInterpreterIORedirect::Create(); + io_redirect_or_error = ScriptInterpreterIORedirect::Create( + options.GetEnableIO(), m_debugger, result); if (!io_redirect_or_error) { if (result) result->AppendErrorWithFormatv( _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits