More termios fixes from Kirk Beitz.

llvm-svn: 125024
This commit is contained in:
Greg Clayton
2011-02-07 19:04:58 +00:00
parent e1a4ac9b5b
commit cdd074fbc7
4 changed files with 28 additions and 5 deletions

View File

@@ -201,7 +201,9 @@ ScriptInterpreterPython::ScriptInterpreterPython (CommandInterpreter &interprete
m_dbg_stdout (interpreter.GetDebugger().GetOutputFileHandle()),
m_new_sysout (NULL),
m_dictionary_name (interpreter.GetDebugger().GetInstanceName().AsCString()),
#if LLDB_CONFIG_TERMIOS_SUPPORTED
m_termios (),
#endif // #if LLDB_CONFIG_TERMIOS_SUPPORTED
m_termios_valid (false),
m_session_is_active (false),
m_pty_slave_is_open (false),
@@ -569,8 +571,10 @@ ScriptInterpreterPython::InputReaderCallback
else
input_fd = STDIN_FILENO;
#if LLDB_CONFIG_TERMIOS_SUPPORTED
script_interpreter->m_termios_valid = ::tcgetattr (input_fd, &script_interpreter->m_termios) == 0;
#endif // #if LLDB_CONFIG_TERMIOS_SUPPORTED
if (!CurrentThreadHasPythonLock())
{
while (!GetPythonLock(1))
@@ -674,6 +678,7 @@ ScriptInterpreterPython::InputReaderCallback
// Restore terminal settings if they were validly saved
if (log)
log->Printf ("ScriptInterpreterPython::InputReaderCallback, Done, closing down input reader.");
#if LLDB_CONFIG_TERMIOS_SUPPORTED
if (script_interpreter->m_termios_valid)
{
int input_fd;
@@ -685,6 +690,7 @@ ScriptInterpreterPython::InputReaderCallback
::tcsetattr (input_fd, TCSANOW, &script_interpreter->m_termios);
}
#endif // #if LLDB_CONFIG_TERMIOS_SUPPORTED
script_interpreter->m_embedded_python_pty.CloseMasterFileDescriptor();
break;
}
@@ -1433,8 +1439,10 @@ ScriptInterpreterPython::Initialize ()
int input_fd = STDIN_FILENO;
#if LLDB_CONFIG_TERMIOS_SUPPORTED
struct termios stdin_termios;
bool valid_termios = ::tcgetattr (input_fd, &stdin_termios) == 0;
#endif // #if LLDB_CONFIG_TERMIOS_SUPPORTED
// Find the module that owns this code and use that path we get to
// set the PYTHONPATH appropriately.
@@ -1511,9 +1519,11 @@ ScriptInterpreterPython::Initialize ()
PyRun_SimpleString ("from termios import *");
Py_DECREF (pmod);
}
#if LLDB_CONFIG_TERMIOS_SUPPORTED
if (valid_termios)
::tcsetattr (input_fd, TCSANOW, &stdin_termios);
#endif // #if LLDB_CONFIG_TERMIOS_SUPPORTED
}
void