[Lldb-commits] [lldb] r113506 - in /lldb/trunk: include/lldb/API/SBDebugger.h source/API/SBDebugger.cpp tools/driver/Driver.cpp
Caroline Tice
ctice at apple.com
Thu Sep 9 10:45:09 PDT 2010
Author: ctice
Date: Thu Sep 9 12:45:09 2010
New Revision: 113506
URL: http://llvm.org/viewvc/llvm-project?rev=113506&view=rev
Log:
Make API calls for setting/getting user settable variables static.
Modify Driver to handle SIGWINCH signals and automatically re-set the
term-width variable.
Modified:
lldb/trunk/include/lldb/API/SBDebugger.h
lldb/trunk/source/API/SBDebugger.cpp
lldb/trunk/tools/driver/Driver.cpp
Modified: lldb/trunk/include/lldb/API/SBDebugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBDebugger.h?rev=113506&r1=113505&r2=113506&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBDebugger.h (original)
+++ lldb/trunk/include/lldb/API/SBDebugger.h Thu Sep 9 12:45:09 2010
@@ -142,14 +142,17 @@
void
PushInputReader (lldb::SBInputReader &reader);
+ const char *
+ GetInstanceName ();
+
static SBDebugger
FindDebuggerWithID (int id);
- lldb::SBError
- SetInternalVariable (const char *var_name, const char *value);
+ static lldb::SBError
+ SetInternalVariable (const char *var_name, const char *value, const char *debugger_instance_name);
- lldb::SBStringList
- GetInternalVariableValue (const char *var_name);
+ static lldb::SBStringList
+ GetInternalVariableValue (const char *var_name, const char *debugger_instance_name);
private:
Modified: lldb/trunk/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBDebugger.cpp?rev=113506&r1=113505&r2=113506&view=diff
==============================================================================
--- lldb/trunk/source/API/SBDebugger.cpp (original)
+++ lldb/trunk/source/API/SBDebugger.cpp Thu Sep 9 12:45:09 2010
@@ -565,17 +565,19 @@
return sb_debugger;
}
-SBError
-SBDebugger::SetInternalVariable (const char *var_name, const char *value)
+const char *
+SBDebugger::GetInstanceName()
{
- lldb::UserSettingsControllerSP root_settings_controller = lldb_private::Debugger::GetSettingsController();
-
- const char *debugger_instance_name;
-
if (m_opaque_sp)
- debugger_instance_name = m_opaque_sp->GetInstanceName().AsCString();
+ return m_opaque_sp->GetInstanceName().AsCString();
else
- debugger_instance_name = "";
+ return NULL;
+}
+
+SBError
+SBDebugger::SetInternalVariable (const char *var_name, const char *value, const char *debugger_instance_name)
+{
+ lldb::UserSettingsControllerSP root_settings_controller = lldb_private::Debugger::GetSettingsController();
Error err = root_settings_controller->SetVariable (var_name, value, lldb::eVarSetOperationAssign, false,
debugger_instance_name);
@@ -586,19 +588,13 @@
}
lldb::SBStringList
-SBDebugger::GetInternalVariableValue (const char *var_name)
+SBDebugger::GetInternalVariableValue (const char *var_name, const char *debugger_instance_name)
{
SBStringList ret_value;
lldb::SettableVariableType var_type;
- const char *debugger_instance_name;
lldb::UserSettingsControllerSP root_settings_controller = lldb_private::Debugger::GetSettingsController();
- if (m_opaque_sp)
- debugger_instance_name = m_opaque_sp->GetInstanceName().AsCString();
- else
- debugger_instance_name = "";
-
StringList value = root_settings_controller->GetVariable (var_name, var_type, debugger_instance_name);
for (unsigned i = 0; i != value.GetSize(); ++i)
ret_value.AppendString (value.GetStringAtIndex(i));
Modified: lldb/trunk/tools/driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/driver/Driver.cpp?rev=113506&r1=113505&r2=113506&view=diff
==============================================================================
--- lldb/trunk/tools/driver/Driver.cpp (original)
+++ lldb/trunk/tools/driver/Driver.cpp Thu Sep 9 12:45:09 2010
@@ -39,6 +39,8 @@
static void reset_stdin_termios ();
static struct termios g_old_stdin_termios;
+static char *g_debugger_name = (char *) "";
+
// In the Driver::MainLoop, we change the terminal settings. This function is
// added as an atexit handler to make sure we clean them up.
static void
@@ -90,6 +92,9 @@
m_option_data (),
m_waiting_for_command (false)
{
+ g_debugger_name = (char *) m_debugger.GetInstanceName();
+ if (g_debugger_name == NULL)
+ g_debugger_name = (char *) "";
}
Driver::~Driver ()
@@ -1263,6 +1268,22 @@
}
+void
+sigwinch_handler (int signo)
+{
+ struct winsize window_size;
+ if (isatty (STDIN_FILENO)
+ && ::ioctl (STDIN_FILENO, TIOCGWINSZ, &window_size) == 0)
+ {
+ if ((window_size.ws_col > 0) && (strlen (g_debugger_name) > 0))
+ {
+ char width_str_buffer[25];
+ ::sprintf (width_str_buffer, "%d", window_size.ws_col);
+ SBDebugger::SetInternalVariable ("term-width", width_str_buffer, g_debugger_name);
+ }
+ }
+}
+
int
main (int argc, char const *argv[])
{
@@ -1270,6 +1291,8 @@
SBHostOS::ThreadCreated ("[main]");
+ signal (SIGWINCH, sigwinch_handler);
+
// Create a scope for driver so that the driver object will destroy itself
// before SBDebugger::Terminate() is called.
{
More information about the lldb-commits
mailing list