diff options
| -rw-r--r-- | lldb/include/lldb/Core/UserSettingsController.h | 36 | ||||
| -rw-r--r-- | lldb/source/Commands/CommandObjectApropos.cpp | 7 | ||||
| -rw-r--r-- | lldb/source/Commands/CommandObjectSettings.cpp | 201 | ||||
| -rw-r--r-- | lldb/source/Core/UserSettingsController.cpp | 541 | ||||
| -rw-r--r-- | lldb/source/Target/Target.cpp | 24 | ||||
| -rw-r--r-- | lldb/test/abbreviation_tests/TestAbbreviations.py | 8 | ||||
| -rw-r--r-- | lldb/test/settings/TestSettings.py | 44 | 
7 files changed, 427 insertions, 434 deletions
diff --git a/lldb/include/lldb/Core/UserSettingsController.h b/lldb/include/lldb/Core/UserSettingsController.h index 0a675eb6c12..3211c083062 100644 --- a/lldb/include/lldb/Core/UserSettingsController.h +++ b/lldb/include/lldb/Core/UserSettingsController.h @@ -135,41 +135,53 @@ public:      static void      FindAllSettingsDescriptions (CommandInterpreter &interpreter, -                                 lldb::UserSettingsControllerSP root,  -                                 std::string ¤t_prefix,  +                                 const lldb::UserSettingsControllerSP& usc_sp,  +                                 const const char *current_prefix,                                    Stream &result_stream,                                   Error &err);      static void      FindSettingsDescriptions (CommandInterpreter &interpreter, -                              lldb::UserSettingsControllerSP root,  -                              std::string ¤t_prefix,  +                              const lldb::UserSettingsControllerSP& usc_sp,  +                              const char *current_prefix,                                 const char *search_name,                                Stream &result_stream,                                Error &err);      static void      SearchAllSettingsDescriptions (CommandInterpreter &interpreter, -                                   lldb::UserSettingsControllerSP root, -                                   std::string ¤t_prefix, +                                   const lldb::UserSettingsControllerSP& usc_sp, +                                   const char *current_prefix,                                     const char *search_word,                                     Stream &result_stream);      static void      GetAllVariableValues (CommandInterpreter &interpreter, -                          lldb::UserSettingsControllerSP root, -                          std::string ¤t_prefix, +                          const lldb::UserSettingsControllerSP& usc_sp, +                          const char *current_prefix,                             Stream &result_stream,                            Error &err); +    static bool +    DumpValue (CommandInterpreter &interpreter,  +               const lldb::UserSettingsControllerSP& usc_sp, +               const char *variable_dot_name, +               Stream &strm); +     +    static bool +    DumpValue (const char *variable_dot_name, +               SettableVariableType var_type, +               const StringList &variable_value, +               Stream &strm); +      static int -    CompleteSettingsNames (lldb::UserSettingsControllerSP root_settings, +    CompleteSettingsNames (const lldb::UserSettingsControllerSP& usc_sp,                             Args &partial_setting_name_pieces,                             bool &word_complete,                             StringList &matches);      static int -    CompleteSettingsValue (lldb::UserSettingsControllerSP root_settings, +    CompleteSettingsValue (const lldb::UserSettingsControllerSP& usc_sp,                             const char *full_dot_name,                             const char *partial_value,                             bool &word_complete, @@ -341,10 +353,12 @@ protected:  private:      UserSettingDefinition m_settings; +     +    typedef std::map<std::string,InstanceSettings*> InstanceSettingsMap;      std::vector<lldb::UserSettingsControllerSP> m_children;      std::map <std::string, lldb::InstanceSettingsSP> m_pending_settings; -    std::map <std::string, InstanceSettings *> m_live_settings;    // live settings should never be NULL (hence 'live') +    InstanceSettingsMap m_live_settings;    // live settings should never be NULL (hence 'live')      mutable Mutex m_children_mutex;      mutable Mutex m_pending_settings_mutex;      mutable Mutex m_live_settings_mutex; diff --git a/lldb/source/Commands/CommandObjectApropos.cpp b/lldb/source/Commands/CommandObjectApropos.cpp index 1d003fc888e..3b4b3501596 100644 --- a/lldb/source/Commands/CommandObjectApropos.cpp +++ b/lldb/source/Commands/CommandObjectApropos.cpp @@ -99,9 +99,12 @@ CommandObjectApropos::Execute              StreamString settings_search_results;              lldb::UserSettingsControllerSP root = Debugger::GetSettingsController (); -            std::string settings_prefix = root->GetLevelName().AsCString(); +            const char *settings_prefix = root->GetLevelName().GetCString(); -            UserSettingsController::SearchAllSettingsDescriptions (m_interpreter, root, settings_prefix, search_word, +            UserSettingsController::SearchAllSettingsDescriptions (m_interpreter,  +                                                                   root,  +                                                                   settings_prefix,  +                                                                   search_word,                                                                     settings_search_results);              if (settings_search_results.GetSize() > 0) diff --git a/lldb/source/Commands/CommandObjectSettings.cpp b/lldb/source/Commands/CommandObjectSettings.cpp index 02a3287f4ea..e43c16a0743 100644 --- a/lldb/source/Commands/CommandObjectSettings.cpp +++ b/lldb/source/Commands/CommandObjectSettings.cpp @@ -30,27 +30,15 @@ CommandObjectMultiwordSettings::CommandObjectMultiwordSettings (CommandInterpret                              "A set of commands for manipulating internal settable debugger variables.",                              "settings <command> [<command-options>]")  { -    bool status; - -    CommandObjectSP set_command_object (new CommandObjectSettingsSet (interpreter)); -    CommandObjectSP show_command_object (new CommandObjectSettingsShow (interpreter)); -    CommandObjectSP list_command_object (new CommandObjectSettingsList (interpreter)); -    CommandObjectSP remove_command_object (new CommandObjectSettingsRemove (interpreter)); -    CommandObjectSP replace_command_object (new CommandObjectSettingsReplace (interpreter)); -    CommandObjectSP insert_before_command_object (new CommandObjectSettingsInsertBefore (interpreter)); -    CommandObjectSP insert_after_command_object (new CommandObjectSettingsInsertAfter(interpreter)); -    CommandObjectSP append_command_object (new CommandObjectSettingsAppend(interpreter)); -    CommandObjectSP clear_command_object (new CommandObjectSettingsClear(interpreter)); - -    status = LoadSubCommand ("set",           set_command_object); -    status = LoadSubCommand ("show",          show_command_object); -    status = LoadSubCommand ("list",          list_command_object); -    status = LoadSubCommand ("remove",        remove_command_object); -    status = LoadSubCommand ("replace",       replace_command_object); -    status = LoadSubCommand ("insert-before", insert_before_command_object); -    status = LoadSubCommand ("insert-after",  insert_after_command_object); -    status = LoadSubCommand ("append",        append_command_object); -    status = LoadSubCommand ("clear",         clear_command_object); +    LoadSubCommand ("set",           CommandObjectSP (new CommandObjectSettingsSet (interpreter))); +    LoadSubCommand ("show",          CommandObjectSP (new CommandObjectSettingsShow (interpreter))); +    LoadSubCommand ("list",          CommandObjectSP (new CommandObjectSettingsList (interpreter))); +    LoadSubCommand ("remove",        CommandObjectSP (new CommandObjectSettingsRemove (interpreter))); +    LoadSubCommand ("replace",       CommandObjectSP (new CommandObjectSettingsReplace (interpreter))); +    LoadSubCommand ("insert-before", CommandObjectSP (new CommandObjectSettingsInsertBefore (interpreter))); +    LoadSubCommand ("insert-after",  CommandObjectSP (new CommandObjectSettingsInsertAfter (interpreter))); +    LoadSubCommand ("append",        CommandObjectSP (new CommandObjectSettingsAppend (interpreter))); +    LoadSubCommand ("clear",         CommandObjectSP (new CommandObjectSettingsClear (interpreter)));  }  CommandObjectMultiwordSettings::~CommandObjectMultiwordSettings () @@ -123,7 +111,7 @@ CommandObjectSettingsSet::~CommandObjectSettingsSet()  bool  CommandObjectSettingsSet::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -161,11 +149,11 @@ CommandObjectSettingsSet::Execute (Args& command, CommandReturnObject &result)      }      else      { -      Error err = root_settings->SetVariable (var_name_string.c_str(),  -                                              var_value,  -                                              eVarSetOperationAssign,  -                                              m_options.m_override,  -                                              m_interpreter.GetDebugger().GetInstanceName().AsCString()); +      Error err = usc_sp->SetVariable (var_name_string.c_str(),  +                                       var_value,  +                                       eVarSetOperationAssign,  +                                       m_options.m_override,  +                                       m_interpreter.GetDebugger().GetInstanceName().AsCString());          if (err.Fail ())          {              result.AppendError (err.AsCString()); @@ -209,11 +197,11 @@ CommandObjectSettingsSet::HandleArgumentCompletion (Args &input,              && completion_str.compare (matches.GetStringAtIndex(0)) == 0))      {          matches.Clear(); -        UserSettingsControllerSP root_settings = Debugger::GetSettingsController(); +        UserSettingsControllerSP usc_sp = Debugger::GetSettingsController();          if (cursor_index == 1)          {              // The user is at the end of the variable name, which is complete and valid. -            UserSettingsController::CompleteSettingsValue (root_settings, +            UserSettingsController::CompleteSettingsValue (usc_sp,                                                             input.GetArgumentAtIndex (1), // variable name                                                             NULL,                         // empty value string                                                             word_complete, @@ -222,7 +210,7 @@ CommandObjectSettingsSet::HandleArgumentCompletion (Args &input,          else          {              // The user is partly into the variable value. -            UserSettingsController::CompleteSettingsValue (root_settings, +            UserSettingsController::CompleteSettingsValue (usc_sp,                                                             input.GetArgumentAtIndex (1),  // variable name                                                             completion_str.c_str(),        // partial value string                                                             word_complete, @@ -328,11 +316,10 @@ CommandObjectSettingsShow::~CommandObjectSettingsShow()  bool -CommandObjectSettingsShow::Execute (Args& command, -                                    CommandReturnObject &result) +CommandObjectSettingsShow::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); -    std::string current_prefix = root_settings->GetLevelName().AsCString(); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ()); +    const char *current_prefix = usc_sp->GetLevelName().GetCString();      Error err; @@ -341,48 +328,27 @@ CommandObjectSettingsShow::Execute (Args& command,          // The user requested to see the value of a particular variable.          SettableVariableType var_type;          const char *variable_name = command.GetArgumentAtIndex (0); -        StringList value = root_settings->GetVariable (variable_name, var_type, -                                                       m_interpreter.GetDebugger().GetInstanceName().AsCString(), -                                                       err); +        StringList value = usc_sp->GetVariable (variable_name,  +                                                var_type, +                                                m_interpreter.GetDebugger().GetInstanceName().AsCString(), +                                                err);          if (err.Fail ())          {              result.AppendError (err.AsCString());              result.SetStatus (eReturnStatusFailed); -         } +        }          else          { -            StreamString tmp_str; -            char *type_name = (char *) ""; -            if (var_type != eSetVarTypeNone) -            { -                tmp_str.Printf (" (%s)", UserSettingsController::GetTypeString (var_type)); -                type_name = (char *) tmp_str.GetData(); -            } - -            if (value.GetSize() == 0) -                result.AppendMessageWithFormat ("%s%s = ''\n", variable_name, type_name); -            else if ((var_type != eSetVarTypeArray) && (var_type != eSetVarTypeDictionary)) -                result.AppendMessageWithFormat ("%s%s = '%s'\n", variable_name, type_name, value.GetStringAtIndex (0)); -            else -            { -                result.AppendMessageWithFormat ("%s%s:\n", variable_name, type_name); -                for (unsigned i = 0, e = value.GetSize(); i != e; ++i) -                { -                    if (var_type == eSetVarTypeArray) -                        result.AppendMessageWithFormat ("  [%d]: '%s'\n", i, value.GetStringAtIndex (i)); -                    else if (var_type == eSetVarTypeDictionary) -                        result.AppendMessageWithFormat ("  '%s'\n", value.GetStringAtIndex (i)); -                } -            } -            result.SetStatus (eReturnStatusSuccessFinishNoResult); +            UserSettingsController::DumpValue(m_interpreter, usc_sp, variable_name, result.GetOutputStream()); +            result.SetStatus (eReturnStatusSuccessFinishResult);          }      }      else      {          UserSettingsController::GetAllVariableValues (m_interpreter,  -                                                      root_settings,  +                                                      usc_sp,                                                         current_prefix,                                                         result.GetOutputStream(),                                                         err); @@ -459,18 +425,17 @@ CommandObjectSettingsList::~CommandObjectSettingsList()  bool -CommandObjectSettingsList::Execute (                       Args& command, -                                    CommandReturnObject &result) +CommandObjectSettingsList::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); -    std::string current_prefix = root_settings->GetLevelName().AsCString(); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ()); +    const char *current_prefix = usc_sp->GetLevelName().GetCString();      Error err;      if (command.GetArgumentCount() == 0)      {          UserSettingsController::FindAllSettingsDescriptions (m_interpreter,  -                                                             root_settings,  +                                                             usc_sp,                                                                current_prefix,                                                                result.GetOutputStream(),                                                                err); @@ -479,7 +444,7 @@ CommandObjectSettingsList::Execute (                       Args& command,      {          const char *search_name = command.GetArgumentAtIndex (0);          UserSettingsController::FindSettingsDescriptions (m_interpreter,  -                                                          root_settings,  +                                                          usc_sp,                                                             current_prefix,                                                            search_name,                                                             result.GetOutputStream(),  @@ -574,10 +539,9 @@ CommandObjectSettingsRemove::~CommandObjectSettingsRemove ()  }  bool -CommandObjectSettingsRemove::Execute (                        Args& command, -                                     CommandReturnObject &result) +CommandObjectSettingsRemove::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -611,12 +575,12 @@ CommandObjectSettingsRemove::Execute (                        Args& command,      index_value_string = index_value; -    Error err = root_settings->SetVariable (var_name_string.c_str(),  -                                            NULL,  -                                            eVarSetOperationRemove,   -                                            true,  -                                            m_interpreter.GetDebugger().GetInstanceName().AsCString(), -                                            index_value_string.c_str()); +    Error err = usc_sp->SetVariable (var_name_string.c_str(),  +                                     NULL,  +                                     eVarSetOperationRemove,   +                                     true,  +                                     m_interpreter.GetDebugger().GetInstanceName().AsCString(), +                                     index_value_string.c_str());      if (err.Fail ())      {          result.AppendError (err.AsCString()); @@ -710,10 +674,9 @@ CommandObjectSettingsReplace::~CommandObjectSettingsReplace ()  }  bool -CommandObjectSettingsReplace::Execute (                         Args& command, -                                      CommandReturnObject &result) +CommandObjectSettingsReplace::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -761,12 +724,12 @@ CommandObjectSettingsReplace::Execute (                         Args& command,      }      else      { -        Error err = root_settings->SetVariable (var_name_string.c_str(),  -                                                var_value,  -                                                eVarSetOperationReplace,  -                                                true,  -                                                m_interpreter.GetDebugger().GetInstanceName().AsCString(), -                                                index_value_string.c_str()); +        Error err = usc_sp->SetVariable (var_name_string.c_str(),  +                                         var_value,  +                                         eVarSetOperationReplace,  +                                         true,  +                                         m_interpreter.GetDebugger().GetInstanceName().AsCString(), +                                         index_value_string.c_str());          if (err.Fail ())          {              result.AppendError (err.AsCString()); @@ -855,10 +818,9 @@ CommandObjectSettingsInsertBefore::~CommandObjectSettingsInsertBefore ()  }  bool -CommandObjectSettingsInsertBefore::Execute (                              Args& command, -                                           CommandReturnObject &result) +CommandObjectSettingsInsertBefore::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -907,12 +869,12 @@ CommandObjectSettingsInsertBefore::Execute (                              Args&      }      else      { -        Error err = root_settings->SetVariable (var_name_string.c_str(),  -                                                var_value,  -                                                eVarSetOperationInsertBefore, -                                                true,  -                                                m_interpreter.GetDebugger().GetInstanceName().AsCString(), -                                                index_value_string.c_str()); +        Error err = usc_sp->SetVariable (var_name_string.c_str(),  +                                         var_value,  +                                         eVarSetOperationInsertBefore, +                                         true,  +                                         m_interpreter.GetDebugger().GetInstanceName().AsCString(), +                                         index_value_string.c_str());          if (err.Fail ())          {              result.AppendError (err.AsCString()); @@ -1002,10 +964,9 @@ CommandObjectSettingsInsertAfter::~CommandObjectSettingsInsertAfter ()  }  bool -CommandObjectSettingsInsertAfter::Execute (                             Args& command, -                                          CommandReturnObject &result) +CommandObjectSettingsInsertAfter::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -1054,12 +1015,12 @@ CommandObjectSettingsInsertAfter::Execute (                             Args& co      }      else      { -        Error err = root_settings->SetVariable (var_name_string.c_str(),  -                                                var_value,  -                                                eVarSetOperationInsertAfter, -                                                true,  -                                                m_interpreter.GetDebugger().GetInstanceName().AsCString(),  -                                                index_value_string.c_str()); +        Error err = usc_sp->SetVariable (var_name_string.c_str(),  +                                         var_value,  +                                         eVarSetOperationInsertAfter, +                                         true,  +                                         m_interpreter.GetDebugger().GetInstanceName().AsCString(),  +                                         index_value_string.c_str());          if (err.Fail ())          {              result.AppendError (err.AsCString()); @@ -1139,10 +1100,9 @@ CommandObjectSettingsAppend::~CommandObjectSettingsAppend ()  }  bool -CommandObjectSettingsAppend::Execute (Args& command, -                                      CommandReturnObject &result) +CommandObjectSettingsAppend::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -1179,11 +1139,11 @@ CommandObjectSettingsAppend::Execute (Args& command,      }      else      { -        Error err = root_settings->SetVariable (var_name_string.c_str(),  -                                                var_value,  -                                                eVarSetOperationAppend,  -                                                true,  -                                                m_interpreter.GetDebugger().GetInstanceName().AsCString()); +        Error err = usc_sp->SetVariable (var_name_string.c_str(),  +                                         var_value,  +                                         eVarSetOperationAppend,  +                                         true,  +                                         m_interpreter.GetDebugger().GetInstanceName().AsCString());          if (err.Fail ())          {              result.AppendError (err.AsCString()); @@ -1253,10 +1213,9 @@ CommandObjectSettingsClear::~CommandObjectSettingsClear ()  }  bool -CommandObjectSettingsClear::Execute (                       Args& command, -                                    CommandReturnObject &result) +CommandObjectSettingsClear::Execute (Args& command, CommandReturnObject &result)  { -    UserSettingsControllerSP root_settings = Debugger::GetSettingsController (); +    UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ());      const int argc = command.GetArgumentCount (); @@ -1275,11 +1234,11 @@ CommandObjectSettingsClear::Execute (                       Args& command,          return false;      } -    Error err = root_settings->SetVariable (var_name,  -                                            NULL,  -                                            eVarSetOperationClear,  -                                            false,  -                                            m_interpreter.GetDebugger().GetInstanceName().AsCString()); +    Error err = usc_sp->SetVariable (var_name,  +                                     NULL,  +                                     eVarSetOperationClear,  +                                     false,  +                                     m_interpreter.GetDebugger().GetInstanceName().AsCString());      if (err.Fail ())      { diff --git a/lldb/source/Core/UserSettingsController.cpp b/lldb/source/Core/UserSettingsController.cpp index 60c2aa36b13..da1b49b7a7d 100644 --- a/lldb/source/Core/UserSettingsController.cpp +++ b/lldb/source/Core/UserSettingsController.cpp @@ -22,7 +22,7 @@ using namespace lldb_private;  static void  DumpSettingEntry (CommandInterpreter &interpreter,  -                  Stream &result_stream, +                  Stream &strm,                    const uint32_t max_len,                     const SettingEntry &entry)  { @@ -34,7 +34,7 @@ DumpSettingEntry (CommandInterpreter &interpreter,      if (entry.default_value && entry.default_value[0])          description.Printf (" (default: %s)", entry.default_value); -    interpreter.OutputFormattedHelpText (result_stream,  +    interpreter.OutputFormattedHelpText (strm,                                            entry.var_name,                                            "--",                                            description.GetData(),  @@ -42,7 +42,7 @@ DumpSettingEntry (CommandInterpreter &interpreter,      if (entry.enum_values && entry.enum_values[0].string_value)      { -        interpreter.OutputFormattedHelpText (result_stream,  +        interpreter.OutputFormattedHelpText (strm,                                                "",                                                "  ",                                                "Enumeration values:",  @@ -56,7 +56,7 @@ DumpSettingEntry (CommandInterpreter &interpreter,                                      entry.enum_values[enum_idx].usage);              else                  description.Printf ("%s", entry.enum_values[enum_idx].string_value); -            interpreter.OutputFormattedHelpText (result_stream,  +            interpreter.OutputFormattedHelpText (strm,                                                    "",                                                    "  ",                                                    description.GetData(),  @@ -82,6 +82,7 @@ UserSettingsController::UserSettingsController (const char *level_name,  UserSettingsController::~UserSettingsController ()  { +    Mutex::Locker locker (m_live_settings_mutex);      m_live_settings.clear();  } @@ -141,7 +142,7 @@ void  UserSettingsController::InitializeGlobalVariables ()  {      int num_entries; -    const char *prefix = GetLevelName().AsCString(); +    const char *prefix = GetLevelName().GetCString();      num_entries = m_settings.global_settings.size();      for (int i = 0; i < num_entries; ++i) @@ -247,7 +248,7 @@ UserSettingsController::BuildParentPrefix (std::string &parent_prefix)          if (parent_prefix.length() > 0)              parent_prefix.append (".");      } -    parent_prefix.append (GetLevelName().AsCString()); +    parent_prefix.append (GetLevelName().GetCString());  }  void @@ -337,7 +338,7 @@ UserSettingsController::SetVariable (const char *full_dot_name,                  if (entry == NULL)                  {                      err.SetErrorStringWithFormat ("Unable to find variable '%s.%s'; cannot assign value.\n", -                                                  prefix.AsCString(), const_var_name.AsCString()); +                                                  prefix.GetCString(), const_var_name.GetCString());                      return err;                  }                  else @@ -424,7 +425,7 @@ UserSettingsController::SetVariable (const char *full_dot_name,                  if (entry == NULL)                  {                      err.SetErrorStringWithFormat ("Unknown instance variable '%s'; cannot assign value.\n", -                                                  const_var_name.AsCString()); +                                                  const_var_name.GetCString());                      return err;                  } @@ -465,7 +466,7 @@ UserSettingsController::SetVariable (const char *full_dot_name,                      {   // Scope for mutex.                          Mutex::Locker locker (m_pending_settings_mutex); -                        m_pending_settings[instance_name.AsCString()] = current_settings_sp; +                        m_pending_settings[instance_name.GetCString()] = current_settings_sp;                      }                      if (override) @@ -522,7 +523,7 @@ UserSettingsController::SetVariable (const char *full_dot_name,      else      {          err.SetErrorStringWithFormat ("'%s' is not a valid level name; was expecting '%s'. Cannot assign value.\n", -                                      prefix.AsCString(), m_settings.level_name.AsCString()); +                                      prefix.GetCString(), m_settings.level_name.GetCString());      }      return err; @@ -604,7 +605,7 @@ UserSettingsController::GetVariable                  {                      // Look for instance name setting in pending settings. -                    std::string inst_name_str = instance_name.AsCString(); +                    std::string inst_name_str = instance_name.GetCString();                      std::map<std::string, InstanceSettingsSP>::iterator pos;                      pos = m_pending_settings.find (inst_name_str); @@ -684,10 +685,10 @@ UserSettingsController::RemovePendingSettings (const ConstString &instance_name)      // Add surrounding brackets to instance name if not already present. -    if (instance_name.AsCString()[0] != '[') -        tmp_name.Printf ("[%s]", instance_name.AsCString()); +    if (instance_name.GetCString()[0] != '[') +        tmp_name.Printf ("[%s]", instance_name.GetCString());      else -        tmp_name.Printf ("%s", instance_name.AsCString()); +        tmp_name.Printf ("%s", instance_name.GetCString());      std::string instance_name_str (tmp_name.GetData());      std::map<std::string, InstanceSettingsSP>::iterator pos; @@ -704,10 +705,10 @@ UserSettingsController::FindPendingSettings (const ConstString &instance_name)      // Add surrounding brackets to instance name if not already present. -    if (instance_name.AsCString()[0] != '[') -        tmp_name.Printf ("[%s]", instance_name.AsCString()); +    if (instance_name.GetCString()[0] != '[') +        tmp_name.Printf ("[%s]", instance_name.GetCString());      else -        tmp_name.Printf ("%s", instance_name.AsCString()); +        tmp_name.Printf ("%s", instance_name.GetCString());      std::string instance_name_str (tmp_name.GetData());  // Need std::string for std::map look-up @@ -776,7 +777,7 @@ UserSettingsController::CopyDefaultSettings (const InstanceSettingsSP &actual_se  InstanceSettingsSP  UserSettingsController::PendingSettingsForInstance (const ConstString &instance_name)  { -    std::string name_str (instance_name.AsCString()); +    std::string name_str (instance_name.GetCString());      std::map<std::string, InstanceSettingsSP>::iterator pos;      Mutex::Locker locker (m_pending_settings_mutex); @@ -788,7 +789,7 @@ UserSettingsController::PendingSettingsForInstance (const ConstString &instance_      }      else      { -        InstanceSettingsSP new_settings_sp = CreateInstanceSettings (instance_name.AsCString()); +        InstanceSettingsSP new_settings_sp = CreateInstanceSettings (instance_name.GetCString());          CopyDefaultSettings (new_settings_sp, instance_name, true);          m_pending_settings[name_str] = new_settings_sp;          return new_settings_sp; @@ -802,50 +803,30 @@ UserSettingsController::PendingSettingsForInstance (const ConstString &instance_  }  void -UserSettingsController::GetAllDefaultSettingValues (Stream &result_stream) +UserSettingsController::GetAllDefaultSettingValues (Stream &strm)  {      std::string parent_prefix;      BuildParentPrefix (parent_prefix); -    const char *prefix = parent_prefix.c_str();      for (int i = 0; i < m_settings.instance_settings.size(); ++i)      {          SettingEntry &entry = m_settings.instance_settings[i];          ConstString var_name (entry.var_name); -        StringList tmp_value; -        m_default_settings->GetInstanceSettingsValue (entry, var_name, tmp_value, NULL); - -        StreamString value_string; -        bool multi_value = false; - -        if (tmp_value.GetSize() == 1) -            value_string.Printf ("%s", tmp_value.GetStringAtIndex (0)); -        else -        { -            for (int j = 0; j < tmp_value.GetSize(); ++j) -            { -                if (entry.var_type == eSetVarTypeArray) -                    value_string.Printf ("\n  [%d]: '%s'", j, tmp_value.GetStringAtIndex (j)); -                else if (entry.var_type == eSetVarTypeDictionary) -                    value_string.Printf ("\n  '%s'", tmp_value.GetStringAtIndex (j)); -            } -            multi_value = true; -        } - -        if (! parent_prefix.empty()) -        { -            if (multi_value) -                result_stream.Printf ("%s.%s (%s):%s\n", prefix, var_name.AsCString(), -                                      UserSettingsController::GetTypeString (entry.var_type), value_string.GetData()); -            else -                result_stream.Printf ("%s.%s (%s) = '%s'\n", prefix, var_name.AsCString(), -                                      UserSettingsController::GetTypeString (entry.var_type), value_string.GetData()); -        } +        StringList value; +        m_default_settings->GetInstanceSettingsValue (entry, var_name, value, NULL); +         +        if (!parent_prefix.empty()) +            strm.Printf ("%s.", parent_prefix.c_str()); +     +        DumpValue (var_name.GetCString(), +                   entry.var_type, +                   value, +                   strm);      }  }  void -UserSettingsController::GetAllPendingSettingValues (Stream &result_stream) +UserSettingsController::GetAllPendingSettingValues (Stream &strm)  {      std::map<std::string, InstanceSettingsSP>::iterator pos; @@ -881,13 +862,13 @@ UserSettingsController::GetAllPendingSettingValues (Stream &result_stream)              if (parent_prefix.length() > 0)              { -                result_stream.Printf ("%s.%s.%s (%s) = '%s' [pending]\n", prefix, instance_name.AsCString(),  -                                      var_name.AsCString(), UserSettingsController::GetTypeString (entry.var_type), +                strm.Printf ("%s.%s.%s (%s) = '%s' [pending]\n", prefix, instance_name.GetCString(),  +                                      var_name.GetCString(), UserSettingsController::GetTypeString (entry.var_type),                                        value_str.GetData());              }              else              { -                result_stream.Printf ("%s (%s) = '%s' [pending]\n", var_name.AsCString(), +                strm.Printf ("%s (%s) = '%s' [pending]\n", var_name.GetCString(),                                        UserSettingsController::GetTypeString (entry.var_type),                                         value_str.GetData());                                                    } @@ -898,30 +879,24 @@ UserSettingsController::GetAllPendingSettingValues (Stream &result_stream)  InstanceSettings *  UserSettingsController::FindSettingsForInstance (const ConstString &instance_name)  { -    std::string instance_name_str (instance_name.AsCString()); -    std::map<std::string, InstanceSettings *>::iterator pos; - -    pos = m_live_settings.find (instance_name_str); +    std::string instance_name_str (instance_name.GetCString()); +    Mutex::Locker locker (m_live_settings_mutex); +    InstanceSettingsMap::iterator pos = m_live_settings.find (instance_name_str);      if (pos != m_live_settings.end ()) -      { -        InstanceSettings *settings = pos->second; -        return settings; -      } - +        return pos->second;      return NULL;  }  void  UserSettingsController::GetAllInstanceVariableValues (CommandInterpreter &interpreter, -                                                      Stream &result_stream) +                                                      Stream &strm)  { -    std::map<std::string, InstanceSettings *>::iterator pos;      std::string parent_prefix;      BuildParentPrefix (parent_prefix); -    const char *prefix = parent_prefix.c_str();      StreamString description; -    for (pos = m_live_settings.begin(); pos != m_live_settings.end(); ++pos) +    Mutex::Locker locker (m_live_settings_mutex); +    for (InstanceSettingsMap::iterator pos = m_live_settings.begin(); pos != m_live_settings.end(); ++pos)      {          std::string instance_name = pos->first;          InstanceSettings *settings = pos->second; @@ -932,31 +907,11 @@ UserSettingsController::GetAllInstanceVariableValues (CommandInterpreter &interp              const ConstString var_name (entry.var_name);              StringList tmp_value;              settings->GetInstanceSettingsValue (entry, var_name, tmp_value, NULL); -            StreamString tmp_value_str; - -            if (tmp_value.GetSize() == 0) -                tmp_value_str.Printf (""); -            else if (tmp_value.GetSize() == 1) -                tmp_value_str.Printf ("%s", tmp_value.GetStringAtIndex (0)); -            else -            { -                for (int j = 0; j < tmp_value.GetSize(); ++j) -                    tmp_value_str.Printf ("%s ",tmp_value.GetStringAtIndex (j)); -            } -            description.Clear(); -            if (parent_prefix.length() > 0) -            { -                description.Printf ("%s.%s.%s (%s) = '%s'", prefix, instance_name.c_str(), var_name.AsCString(),  -                                    UserSettingsController::GetTypeString (entry.var_type), -                                    tmp_value_str.GetData()); -            } -            else -            { -                description.Printf ("%s (%s) = '%s'", var_name.AsCString(), -                                    UserSettingsController::GetTypeString (entry.var_type), tmp_value_str.GetData()); -            } -            result_stream.Printf ("%s\n", description.GetData()); +            if (!parent_prefix.empty()) +                strm.Printf ("%s.", parent_prefix.c_str()); +             +            DumpValue(var_name.GetCString(), entry.var_type, tmp_value, strm);          }      }  } @@ -968,14 +923,14 @@ UserSettingsController::OverrideAllInstances (const ConstString &var_name,                                                const char *index_value,                                                Error &err)  { -    std::map<std::string, InstanceSettings *>::iterator pos;      StreamString description; -    for (pos = m_live_settings.begin(); pos != m_live_settings.end(); ++pos) +    Mutex::Locker locker (m_live_settings_mutex); +    for (InstanceSettingsMap::iterator pos = m_live_settings.begin(); pos != m_live_settings.end(); ++pos)      {          InstanceSettings *settings = pos->second;          StreamString tmp_name; -        tmp_name.Printf ("[%s]", settings->GetInstanceName().AsCString()); +        tmp_name.Printf ("[%s]", settings->GetInstanceName().GetCString());          const ConstString instance_name (tmp_name.GetData());          const SettingEntry *entry = GetInstanceEntry (var_name);          settings->UpdateInstanceSettingsVariable (var_name, index_value, value, instance_name, *entry, op, err, false); @@ -988,10 +943,10 @@ UserSettingsController::RegisterInstanceSettings (InstanceSettings *instance_set  {      Mutex::Locker locker (m_live_settings_mutex);      StreamString tmp_name; -    tmp_name.Printf ("[%s]", instance_settings->GetInstanceName().AsCString()); +    tmp_name.Printf ("[%s]", instance_settings->GetInstanceName().GetCString());      const ConstString instance_name (tmp_name.GetData()); -    std::string instance_name_str (instance_name.AsCString()); -    if (instance_name_str.compare (InstanceSettings::GetDefaultName().AsCString()) != 0) +    std::string instance_name_str (instance_name.GetCString()); +    if (instance_name_str.compare (InstanceSettings::GetDefaultName().GetCString()) != 0)          m_live_settings[instance_name_str] = instance_settings;  } @@ -1000,12 +955,10 @@ UserSettingsController::UnregisterInstanceSettings (InstanceSettings *instance)  {      Mutex::Locker locker (m_live_settings_mutex);      StreamString tmp_name; -    tmp_name.Printf ("[%s]", instance->GetInstanceName().AsCString()); +    tmp_name.Printf ("[%s]", instance->GetInstanceName().GetCString());      std::string instance_name (tmp_name.GetData()); -    std::map <std::string, InstanceSettings *>::iterator pos; - -    pos = m_live_settings.find (instance_name); +    InstanceSettingsMap::iterator pos = m_live_settings.find (instance_name);      if (pos != m_live_settings.end())          m_live_settings.erase (pos);  } @@ -1022,7 +975,7 @@ UserSettingsController::CreateSettingsVector (const SettingEntry *table,          SettingEntry new_entry;          new_entry = table_entry; -        new_entry.var_name = const_var_name.AsCString(); +        new_entry.var_name = const_var_name.GetCString();          if (global)              m_settings.global_settings.push_back (new_entry); @@ -1090,73 +1043,80 @@ UserSettingsController::PrintEnumValues (const OptionEnumValueElement *enum_valu  void  UserSettingsController::FindAllSettingsDescriptions (CommandInterpreter &interpreter, -                                                     UserSettingsControllerSP root,  -                                                     std::string ¤t_prefix,  -                                                     Stream &result_stream, +                                                     const UserSettingsControllerSP& usc_sp,  +                                                     const char *current_prefix,  +                                                     Stream &strm,                                                       Error &err)  {      // Write out current prefix line.      StreamString prefix_line;      StreamString description; -    uint32_t max_len = FindMaxNameLength (root->m_settings.global_settings); -    int num_entries = root->m_settings.global_settings.size(); +    uint32_t max_len = FindMaxNameLength (usc_sp->m_settings.global_settings); +    int num_entries = usc_sp->m_settings.global_settings.size(); -    if (! current_prefix.empty()) -        result_stream.Printf ("\n'%s' variables:\n\n", current_prefix.c_str()); +    if (current_prefix && current_prefix[0]) +        strm.Printf ("\n'%s' variables:\n\n", current_prefix);      else -        result_stream.Printf ("\nTop level variables:\n\n"); +        strm.Printf ("\nTop level variables:\n\n");      if (num_entries > 0)      {          // Write out all "global" variables.          for (int i = 0; i < num_entries; ++i)          { -            DumpSettingEntry (interpreter, result_stream, max_len, root->m_settings.global_settings[i]); +            DumpSettingEntry (interpreter, strm, max_len, usc_sp->m_settings.global_settings[i]);          }      } -    num_entries = root->m_settings.instance_settings.size(); -    max_len = FindMaxNameLength (root->m_settings.instance_settings); +    num_entries = usc_sp->m_settings.instance_settings.size(); +    max_len = FindMaxNameLength (usc_sp->m_settings.instance_settings);      if (num_entries > 0)      {          // Write out all instance variables.          for (int i = 0; i < num_entries; ++i)          { -            DumpSettingEntry (interpreter, result_stream, max_len, root->m_settings.instance_settings[i]); +            DumpSettingEntry (interpreter, strm, max_len, usc_sp->m_settings.instance_settings[i]);          }      }      // Now, recurse across all children. -    int num_children = root->GetNumChildren(); +    int num_children = usc_sp->GetNumChildren();      for (int i = 0; i < num_children; ++i)      { -        UserSettingsControllerSP child = root->GetChildAtIndex (i); +        UserSettingsControllerSP child = usc_sp->GetChildAtIndex (i);          if (child)          {              ConstString child_prefix = child->GetLevelName(); -            StreamString new_prefix; -            if (! current_prefix.empty()) -                new_prefix.Printf ("%s.%s", current_prefix.c_str(), child_prefix.AsCString()); +            if (current_prefix && current_prefix[0]) +            { +                StreamString new_prefix; +                new_prefix.Printf ("%s.%s", current_prefix, child_prefix.GetCString()); +                UserSettingsController::FindAllSettingsDescriptions (interpreter,  +                                                                     child,  +                                                                     new_prefix.GetData(),  +                                                                     strm,  +                                                                     err); +            }              else -                new_prefix.Printf ("%s", child_prefix.AsCString()); -            std::string new_prefix_str = new_prefix.GetData(); -            UserSettingsController::FindAllSettingsDescriptions (interpreter,  -                                                                 child,  -                                                                 new_prefix_str,  -                                                                 result_stream,  -                                                                 err); +            { +                UserSettingsController::FindAllSettingsDescriptions (interpreter,  +                                                                     child,  +                                                                     child_prefix.GetCString(), +                                                                     strm,  +                                                                     err); +            }          }      }  }  void  UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interpreter, -                                                  UserSettingsControllerSP root, -                                                  std::string ¤t_prefix, +                                                  const UserSettingsControllerSP& usc_sp, +                                                  const char *current_prefix,                                                    const char *search_name, -                                                  Stream &result_stream, +                                                  Stream &strm,                                                    Error &err)  {      Args names = UserSettingsController::BreakNameIntoPieces (search_name); @@ -1165,15 +1125,15 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete      if (num_pieces == 0)          return; -    if (root->GetLevelName().GetLength() > 0) +    if (usc_sp->GetLevelName().GetLength() > 0)      {          ConstString prefix (names.GetArgumentAtIndex (0)); -        if (prefix != root->GetLevelName()) +        if (prefix != usc_sp->GetLevelName())          {              std::string parent_prefix; -            root->BuildParentPrefix (parent_prefix); +            usc_sp->BuildParentPrefix (parent_prefix);              err.SetErrorStringWithFormat ("Cannot find match for '%s.%s'\n", parent_prefix.c_str(),  -                                          prefix.AsCString()); +                                          prefix.GetCString());              return;          }          else @@ -1189,30 +1149,30 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete          StreamString prefix_line;          StreamString description;          uint32_t max_len; -        int num_entries = root->m_settings.global_settings.size(); +        int num_entries = usc_sp->m_settings.global_settings.size(); -        max_len = FindMaxNameLength (root->m_settings.global_settings); +        max_len = FindMaxNameLength (usc_sp->m_settings.global_settings); -        result_stream.Printf ("\n'%s' variables:\n\n", search_name); +        strm.Printf ("\n'%s' variables:\n\n", search_name);          if (num_entries > 0)          {              // Write out all "global" variables.              for (int i = 0; i < num_entries; ++i)              { -                DumpSettingEntry (interpreter, result_stream, max_len, root->m_settings.global_settings[i]); +                DumpSettingEntry (interpreter, strm, max_len, usc_sp->m_settings.global_settings[i]);              }          } -        num_entries = root->m_settings.instance_settings.size(); -        max_len = FindMaxNameLength (root->m_settings.instance_settings); +        num_entries = usc_sp->m_settings.instance_settings.size(); +        max_len = FindMaxNameLength (usc_sp->m_settings.instance_settings);          if (num_entries > 0)          {              // Write out all instance variables.              for (int i = 0; i < num_entries; ++i)              { -                DumpSettingEntry (interpreter, result_stream, max_len, root->m_settings.instance_settings[i]); +                DumpSettingEntry (interpreter, strm, max_len, usc_sp->m_settings.instance_settings[i]);              }          }      } @@ -1221,26 +1181,26 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete          ConstString var_name (names.GetArgumentAtIndex (0));          bool is_global = false; -        const SettingEntry *setting_entry = root->GetGlobalEntry (var_name); +        const SettingEntry *setting_entry = usc_sp->GetGlobalEntry (var_name);          if (setting_entry == NULL) -            setting_entry = root->GetInstanceEntry (var_name); +            setting_entry = usc_sp->GetInstanceEntry (var_name);          else              is_global = true;          // Check to see if it is a global or instance variable name.          if (setting_entry != NULL)          { -            DumpSettingEntry (interpreter, result_stream, var_name.GetLength(), *setting_entry); +            DumpSettingEntry (interpreter, strm, var_name.GetLength(), *setting_entry);          }          else          {              // It must be a child name. -            int num_children = root->GetNumChildren(); +            int num_children = usc_sp->GetNumChildren();              bool found = false;              for (int i = 0; i < num_children && !found; ++i)              { -                UserSettingsControllerSP child = root->GetChildAtIndex (i); +                UserSettingsControllerSP child = usc_sp->GetChildAtIndex (i);                  if (child)                  {                      ConstString child_prefix = child->GetLevelName(); @@ -1250,8 +1210,8 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete                          UserSettingsController::FindSettingsDescriptions (interpreter,                                                                             child,                                                                             current_prefix, -                                                                          var_name.AsCString(),  -                                                                          result_stream,  +                                                                          var_name.GetCString(),  +                                                                          strm,                                                                             err);                      }                  } @@ -1259,7 +1219,7 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete              if (!found)              {                  std::string parent_prefix; -                root->BuildParentPrefix (parent_prefix); +                usc_sp->BuildParentPrefix (parent_prefix);                  err.SetErrorStringWithFormat ("Cannot find match for '%s.%s'\n", parent_prefix.c_str(), search_name);                  return;              } @@ -1278,11 +1238,11 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete                  rest_of_search_name.Printf (".");          } -        int num_children = root->GetNumChildren(); +        int num_children = usc_sp->GetNumChildren();          bool found = false;          for (int i = 0; i < num_children && !found; ++i)          { -            UserSettingsControllerSP child = root->GetChildAtIndex (i); +            UserSettingsControllerSP child = usc_sp->GetChildAtIndex (i);              if (child)              {                  ConstString child_prefix = child->GetLevelName(); @@ -1290,7 +1250,7 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete                  {                      found = true;                      UserSettingsController::FindSettingsDescriptions (interpreter, child, current_prefix, -                                                                      rest_of_search_name.GetData(), result_stream, +                                                                      rest_of_search_name.GetData(), strm,                                                                        err);                  }              } @@ -1298,7 +1258,7 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete          if (!found)          {              std::string parent_prefix; -            root->BuildParentPrefix (parent_prefix); +            usc_sp->BuildParentPrefix (parent_prefix);              err.SetErrorStringWithFormat ("Cannot find match for '%s.%s'\n", parent_prefix.c_str(), search_name);              return;          } @@ -1307,135 +1267,212 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete  void  UserSettingsController::SearchAllSettingsDescriptions (CommandInterpreter &interpreter, -                                                       UserSettingsControllerSP root, -                                                       std::string ¤t_prefix, +                                                       const UserSettingsControllerSP& usc_sp, +                                                       const char *current_prefix,                                                         const char *search_word, -                                                       Stream &result_stream) +                                                       Stream &strm)  {      if ((search_word == NULL) || (strlen (search_word) == 0))          return; -    int num_entries = root->m_settings.global_settings.size(); +    int num_entries = usc_sp->m_settings.global_settings.size();      if (num_entries > 0)      {          for (int i = 0; i < num_entries; ++i)          { -            const SettingEntry &entry = root->m_settings.global_settings[i]; +            const SettingEntry &entry = usc_sp->m_settings.global_settings[i];              if (strcasestr (entry.description, search_word) != NULL)              {                  StreamString var_name; -                if (current_prefix.size() > 0) -                    var_name.Printf ("%s.%s", current_prefix.c_str(), entry.var_name); +                if (current_prefix && current_prefix[0]) +                    var_name.Printf ("%s.%s", current_prefix, entry.var_name);                  else                      var_name.Printf ("%s", entry.var_name); -                interpreter.OutputFormattedHelpText (result_stream, var_name.GetData(), "--", entry.description, +                interpreter.OutputFormattedHelpText (strm, var_name.GetData(), "--", entry.description,                                                       var_name.GetSize());              }          }      } -    num_entries = root->m_settings.instance_settings.size(); +    num_entries = usc_sp->m_settings.instance_settings.size();      if (num_entries > 0)      {          for (int i = 0; i < num_entries; ++i)          { -            SettingEntry &entry = root->m_settings.instance_settings[i]; +            SettingEntry &entry = usc_sp->m_settings.instance_settings[i];              if (strcasestr (entry.description, search_word) != NULL)              {                  StreamString var_name; -                if (current_prefix.size() > 0) -                    var_name.Printf ("%s.%s", current_prefix.c_str(), entry.var_name); +                if (current_prefix && current_prefix[0]) +                    var_name.Printf ("%s.%s", current_prefix, entry.var_name);                  else                      var_name.Printf ("%s", entry.var_name); -                interpreter.OutputFormattedHelpText (result_stream, var_name.GetData(), "--", entry.description, +                interpreter.OutputFormattedHelpText (strm,  +                                                     var_name.GetData(), +                                                     "--",  +                                                     entry.description,                                                       var_name.GetSize());              }          }      } -    int num_children = root->GetNumChildren (); +    int num_children = usc_sp->GetNumChildren ();      for (int i = 0; i < num_children; ++i)      { -        UserSettingsControllerSP child = root->GetChildAtIndex (i); +        UserSettingsControllerSP child = usc_sp->GetChildAtIndex (i);          if (child)          {              ConstString child_prefix = child->GetLevelName(); -            StreamString new_prefix; -            if (! current_prefix.empty()) -                new_prefix.Printf ("%s.%s", current_prefix.c_str(), child_prefix.AsCString()); +            if (current_prefix && current_prefix[0]) +            { +                StreamString new_prefix; +                new_prefix.Printf ("%s.%s", current_prefix, child_prefix.GetCString()); +                UserSettingsController::SearchAllSettingsDescriptions (interpreter,  +                                                                       child,  +                                                                       new_prefix.GetData(),  +                                                                       search_word, +                                                                       strm); +            }              else -                new_prefix.Printf ("%s", child_prefix.AsCString()); -            std::string new_prefix_str = new_prefix.GetData(); -            UserSettingsController::SearchAllSettingsDescriptions (interpreter, child, new_prefix_str, search_word, -                                                                   result_stream); +            { +                UserSettingsController::SearchAllSettingsDescriptions (interpreter,  +                                                                       child,  +                                                                       child_prefix.GetCString(), +                                                                       search_word, +                                                                       strm); +            } +        } +    } +} + +bool +UserSettingsController::DumpValue (CommandInterpreter &interpreter,  +                                   const UserSettingsControllerSP& usc_sp, +                                   const char *variable_dot_name, +                                   Stream &strm) +{ +    SettableVariableType var_type; +    Error err; +    StringList value = usc_sp->GetVariable (variable_dot_name,  +                                            var_type, +                                            interpreter.GetDebugger().GetInstanceName().GetCString(), +                                            err); +     +    if (err.Success()) +        return DumpValue (variable_dot_name, var_type, value, strm); +    return false; +} + + +bool +UserSettingsController::DumpValue (const char *variable_dot_name, +                                   SettableVariableType var_type, +                                   const StringList &value, +                                   Stream &strm) +{ +    const char *type_name = UserSettingsController::GetTypeString (var_type); +     +    strm.Printf ("%s (%s) = ", variable_dot_name, type_name); +    if (value.GetSize() == 0) +    { +        strm.EOL(); +    } +    else +    { +        switch (var_type) +        { +            case eSetVarTypeNone: +            case eSetVarTypeEnum: +            case eSetVarTypeInt: +            case eSetVarTypeBoolean: +                strm.Printf ("%s\n", value.GetStringAtIndex (0)); +                break; + +            case eSetVarTypeString: +                strm.Printf ("\"%s\"\n", value.GetStringAtIndex (0)); +                break; +                 +            case eSetVarTypeArray: +                { +                    strm.EOL(); +                    for (unsigned i = 0, e = value.GetSize(); i != e; ++i) +                        strm.Printf ("  [%u]: \"%s\"\n", i, value.GetStringAtIndex (i)); +                } +                break; +                 +            case eSetVarTypeDictionary: +                {    +                    strm.EOL(); +                    for (unsigned i = 0, e = value.GetSize(); i != e; ++i) +                        strm.Printf ("  %s\n", value.GetStringAtIndex (i)); +                } +                break; +                 +            default: +                return false;          }      } +    return true;  }  void  UserSettingsController::GetAllVariableValues (CommandInterpreter &interpreter, -                                              UserSettingsControllerSP root, -                                              std::string ¤t_prefix, -                                              Stream &result_stream, +                                              const UserSettingsControllerSP& usc_sp, +                                              const char *current_prefix, +                                              Stream &strm,                                                Error &err)  {      StreamString description; -    int num_entries = root->m_settings.global_settings.size(); -    SettableVariableType var_type; - +    int num_entries = usc_sp->m_settings.global_settings.size();      for (int i = 0; i < num_entries; ++i)      {          StreamString full_var_name; -        const SettingEntry &entry = root->m_settings.global_settings[i]; -        if (! current_prefix.empty()) -            full_var_name.Printf ("%s.%s", current_prefix.c_str(), entry.var_name); +        const SettingEntry &entry = usc_sp->m_settings.global_settings[i]; +         +        if (current_prefix && current_prefix[0]) +            full_var_name.Printf ("%s.%s", current_prefix, entry.var_name);          else              full_var_name.Printf ("%s", entry.var_name); -        StringList value = root->GetVariable (full_var_name.GetData(), var_type,  -                                              interpreter.GetDebugger().GetInstanceName().AsCString(), err); -        description.Clear(); -        if (value.GetSize() == 1)    -            description.Printf ("%s (%s) = '%s'", full_var_name.GetData(), GetTypeString (entry.var_type), -                                value.GetStringAtIndex (0)); -        else -        { -            description.Printf ("%s (%s):\n", full_var_name.GetData(), GetTypeString (entry.var_type)); -            for (int j = 0; j < value.GetSize(); ++j) -                if (entry.var_type == eSetVarTypeArray) -                    description.Printf ("  [%d]: '%s'\n", j, value.GetStringAtIndex (j)); -                else if (entry.var_type == eSetVarTypeDictionary) -                    description.Printf ("  '%s'\n", value.GetStringAtIndex (j)); -        } - -        result_stream.Printf ("%s\n", description.GetData()); +         +        DumpValue (interpreter, usc_sp, full_var_name.GetData(),  strm);      } -    root->GetAllInstanceVariableValues (interpreter, result_stream); -    root->GetAllPendingSettingValues (result_stream); -    if (root->GetLevelName().GetLength() > 0)               // Don't bother with default values for Debugger level. -         root->GetAllDefaultSettingValues (result_stream); +    usc_sp->GetAllInstanceVariableValues (interpreter, strm); +    usc_sp->GetAllPendingSettingValues (strm); +    if (usc_sp->GetLevelName().GetLength() > 0)               // Don't bother with default values for Debugger level. +         usc_sp->GetAllDefaultSettingValues (strm);      // Now, recurse across all children. -    int num_children = root->GetNumChildren(); +    int num_children = usc_sp->GetNumChildren();      for (int i = 0; i < num_children; ++i)      { -        UserSettingsControllerSP child = root->GetChildAtIndex (i); +        UserSettingsControllerSP child = usc_sp->GetChildAtIndex (i);          if (child)          {              ConstString child_prefix = child->GetLevelName(); -            StreamString new_prefix; -            if (! current_prefix.empty()) -                new_prefix.Printf ("%s.%s", current_prefix.c_str(), child_prefix.AsCString()); +            if (current_prefix && current_prefix[0]) +            { +                StreamString new_prefix; +                new_prefix.Printf ("%s.%s", current_prefix, child_prefix.GetCString()); +                UserSettingsController::GetAllVariableValues (interpreter,  +                                                              child,  +                                                              new_prefix.GetData(),  +                                                              strm,  +                                                              err); +            }              else -                new_prefix.Printf ("%s", child_prefix.AsCString()); -            std::string new_prefix_str = new_prefix.GetData(); -            UserSettingsController::GetAllVariableValues (interpreter, child, new_prefix_str, result_stream,  -                                                          err); +            { +                UserSettingsController::GetAllVariableValues (interpreter,  +                                                              child,  +                                                              child_prefix.GetCString(), +                                                              strm,  +                                                              err); +            }          }      } @@ -1468,9 +1505,8 @@ UserSettingsController::BreakNameIntoPieces (const char *full_dot_name)  bool  UserSettingsController::IsLiveInstance (const std::string &instance_name)  { -    std::map<std::string, InstanceSettings *>::iterator pos; -     -    pos = m_live_settings.find (instance_name); +    Mutex::Locker locker (m_live_settings_mutex); +    InstanceSettingsMap::iterator pos = m_live_settings.find (instance_name);      if (pos != m_live_settings.end())          return true; @@ -1478,7 +1514,7 @@ UserSettingsController::IsLiveInstance (const std::string &instance_name)  }  int -UserSettingsController::CompleteSettingsValue (UserSettingsControllerSP root_settings, +UserSettingsController::CompleteSettingsValue (const UserSettingsControllerSP& usc_sp,                                                 const char *full_dot_name,                                                 const char *partial_value,                                                 bool &word_complete, @@ -1488,7 +1524,7 @@ UserSettingsController::CompleteSettingsValue (UserSettingsControllerSP root_set      int num_pieces = names.GetArgumentCount();      word_complete = true; -    ConstString root_level = root_settings->GetLevelName(); +    ConstString root_level = usc_sp->GetLevelName();      int num_extra_levels = num_pieces - 2;      if ((num_extra_levels > 0)          && root_level.GetLength() > 0) @@ -1507,13 +1543,14 @@ UserSettingsController::CompleteSettingsValue (UserSettingsControllerSP root_set      {          ConstString child_level (names.GetArgumentAtIndex (0));          bool found = false; -        int num_children = root_settings->GetNumChildren(); +        int num_children = usc_sp->GetNumChildren(); +        UserSettingsControllerSP child_usc_sp = usc_sp;          for (int j = 0; j < num_children && !found; ++j)          { -            if (root_settings->GetChildAtIndex (j)->GetLevelName() == child_level) +            if (child_usc_sp->GetChildAtIndex (j)->GetLevelName() == child_level)              {                  found = true; -                root_settings = root_settings->GetChildAtIndex (j); +                child_usc_sp = child_usc_sp->GetChildAtIndex (j);                  names.Shift();              }          } @@ -1536,14 +1573,15 @@ UserSettingsController::CompleteSettingsValue (UserSettingsControllerSP root_set      {          // 'next_name' is child name.          bool found = false; -        int num_children = root_settings->GetNumChildren(); +        int num_children = usc_sp->GetNumChildren();          ConstString child_level (next_name.c_str()); +        UserSettingsControllerSP child_usc_sp = usc_sp;          for (int j = 0; j < num_children && !found; ++j)          { -            if (root_settings->GetChildAtIndex (j)->GetLevelName() == child_level) +            if (child_usc_sp->GetChildAtIndex (j)->GetLevelName() == child_level)              {                  found = true; -                root_settings = root_settings->GetChildAtIndex (j); +                child_usc_sp = child_usc_sp->GetChildAtIndex (j);              }          }          if (!found) @@ -1551,9 +1589,9 @@ UserSettingsController::CompleteSettingsValue (UserSettingsControllerSP root_set      }      ConstString var_name (names.GetArgumentAtIndex(0)); -    const SettingEntry *entry = root_settings->GetGlobalEntry (var_name); +    const SettingEntry *entry = usc_sp->GetGlobalEntry (var_name);      if (entry == NULL) -        entry = root_settings->GetInstanceEntry (var_name); +        entry = usc_sp->GetInstanceEntry (var_name);      if (entry == NULL)          return 0; @@ -1629,7 +1667,7 @@ UserSettingsController::EnumMatches (const char *partial_value,  }  int -UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_settings, +UserSettingsController::CompleteSettingsNames (const UserSettingsControllerSP& usc_sp,                                                 Args &partial_setting_name_pieces,                                                 bool &word_complete,                                                 StringList &matches) @@ -1646,7 +1684,7 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set          // Deal with current level first. -        ConstString root_level = root_settings->GetLevelName(); +        ConstString root_level = usc_sp->GetLevelName();          if ((num_extra_levels > 0)              && (root_level.GetLength() > 0))          { @@ -1665,13 +1703,15 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set          {              ConstString child_level (partial_setting_name_pieces.GetArgumentAtIndex (0));              bool found = false; -            int num_children = root_settings->GetNumChildren(); +            int num_children = usc_sp->GetNumChildren(); +            UserSettingsControllerSP child_usc_sp = usc_sp; +              for (int j = 0; j < num_children && !found; ++j)              { -                if (root_settings->GetChildAtIndex (j)->GetLevelName() == child_level) +                if (child_usc_sp->GetChildAtIndex (j)->GetLevelName() == child_level)                  {                      found = true; -                    root_settings = root_settings->GetChildAtIndex (j); +                    child_usc_sp = child_usc_sp->GetChildAtIndex (j);                      partial_setting_name_pieces.Shift();                  }              } @@ -1695,12 +1735,12 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set              // 'next_name' is an instance name.  The last name piece must be a non-empty partial match against an              // instance_name, assuming 'next_name' is valid. -            if (root_settings->IsLiveInstance (next_name)) +            if (usc_sp->IsLiveInstance (next_name))              {                  std::string complete_prefix; -                root_settings->BuildParentPrefix (complete_prefix); +                usc_sp->BuildParentPrefix (complete_prefix); -                num_matches = root_settings->InstanceVariableMatches(partial_setting_name_pieces.GetArgumentAtIndex(0), +                num_matches = usc_sp->InstanceVariableMatches(partial_setting_name_pieces.GetArgumentAtIndex(0),                                                                       complete_prefix,                                                                       next_name.c_str(),                                                                       matches); @@ -1717,14 +1757,14 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set          {              // 'next_name' must be a child name.  Find the correct child and pass the remaining piece to be resolved.              bool found = false; -            int num_children = root_settings->GetNumChildren(); +            int num_children = usc_sp->GetNumChildren();              ConstString child_level (next_name.c_str());              for (int i = 0; i < num_children; ++i)              { -                if (root_settings->GetChildAtIndex (i)->GetLevelName() == child_level) +                if (usc_sp->GetChildAtIndex (i)->GetLevelName() == child_level)                  {                      found = true; -                    return UserSettingsController::CompleteSettingsNames (root_settings->GetChildAtIndex (i), +                    return UserSettingsController::CompleteSettingsNames (usc_sp->GetChildAtIndex (i),                                                                            partial_setting_name_pieces,                                                                            word_complete, matches);                  } @@ -1736,7 +1776,7 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set      else if (num_name_pieces == 1)      {          std::string complete_prefix; -        root_settings->BuildParentPrefix (complete_prefix); +        usc_sp->BuildParentPrefix (complete_prefix);          word_complete = true;          std::string name (partial_setting_name_pieces.GetArgumentAtIndex (0)); @@ -1745,15 +1785,15 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set          {              // It's a partial instance name. -            num_matches = root_settings->LiveInstanceMatches (name.c_str(), complete_prefix, word_complete, matches); +            num_matches = usc_sp->LiveInstanceMatches (name.c_str(), complete_prefix, word_complete, matches);          }          else          {              // It could be anything *except* an instance name... -            num_matches = root_settings->GlobalVariableMatches (name.c_str(), complete_prefix, matches); -            num_matches += root_settings->InstanceVariableMatches (name.c_str(), complete_prefix, NULL, matches); -            num_matches += root_settings->ChildMatches (name.c_str(), complete_prefix, word_complete, matches); +            num_matches = usc_sp->GlobalVariableMatches (name.c_str(), complete_prefix, matches); +            num_matches += usc_sp->InstanceVariableMatches (name.c_str(), complete_prefix, NULL, matches); +            num_matches += usc_sp->ChildMatches (name.c_str(), complete_prefix, word_complete, matches);          }          if (num_matches > 1) @@ -1766,11 +1806,11 @@ UserSettingsController::CompleteSettingsNames (UserSettingsControllerSP root_set          // We have a user settings controller with a blank partial string.  Return everything possible at this level.          std::string complete_prefix; -        root_settings->BuildParentPrefix (complete_prefix); -        num_matches = root_settings->GlobalVariableMatches (NULL, complete_prefix, matches); -        num_matches += root_settings->InstanceVariableMatches (NULL, complete_prefix, NULL, matches); -        num_matches += root_settings->LiveInstanceMatches (NULL, complete_prefix, word_complete, matches); -        num_matches += root_settings->ChildMatches (NULL, complete_prefix, word_complete, matches); +        usc_sp->BuildParentPrefix (complete_prefix); +        num_matches = usc_sp->GlobalVariableMatches (NULL, complete_prefix, matches); +        num_matches += usc_sp->InstanceVariableMatches (NULL, complete_prefix, NULL, matches); +        num_matches += usc_sp->LiveInstanceMatches (NULL, complete_prefix, word_complete, matches); +        num_matches += usc_sp->ChildMatches (NULL, complete_prefix, word_complete, matches);          word_complete = false;          return num_matches;      } @@ -1860,7 +1900,8 @@ UserSettingsController::LiveInstanceMatches (const char *partial_name,      int partial_len = (partial_name != NULL) ? strlen (partial_name) : 0;      int num_matches = 0; -    std::map<std::string, InstanceSettings*>::iterator pos; +    InstanceSettingsMap::iterator pos; +    Mutex::Locker locker (m_live_settings_mutex);      for (pos = m_live_settings.begin(); pos != m_live_settings.end(); ++pos)      {          std::string instance_name = pos->first; @@ -1895,7 +1936,7 @@ UserSettingsController::ChildMatches (const char *partial_name,      int num_matches = 0;      for (int i = 0; i < num_children; ++i)      { -        std::string child_name (GetChildAtIndex(i)->GetLevelName().AsCString()); +        std::string child_name (GetChildAtIndex(i)->GetLevelName().GetCString());          StreamString match_name;          if ((partial_len == 0)            || ((partial_len <= child_name.length()) @@ -2239,7 +2280,7 @@ UserSettingsController::RenameInstanceSettings (const char *old_name, const char      size_t len = new_name_key.length();      std::string stripped_new_name = new_name_key.substr (1, len-2);  // new name without the '[ ]' -    std::map<std::string, InstanceSettings *>::iterator pos; +    InstanceSettingsMap::iterator pos;      pos = m_live_settings.find (old_name_key);      if (pos != m_live_settings.end()) diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index d08a0fe2bd1..1dadb50e856 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -1289,9 +1289,6 @@ Target::SettingsController::CreateInstanceSettings (const char *instance_name)  #define TSC_DEFAULT_ARCH      "default-arch"  #define TSC_EXPR_PREFIX       "expr-prefix" -#define TSC_EXEC_LEVEL        "execution-level" -#define TSC_EXEC_MODE         "execution-mode" -#define TSC_EXEC_OS_TYPE      "execution-os-type"  #define TSC_PREFER_DYNAMIC    "prefer-dynamic-value" @@ -1311,27 +1308,6 @@ GetSettingNameForExpressionPrefix ()  }  static const ConstString & -GetSettingNameForExecutionLevel () -{ -    static ConstString g_const_string (TSC_EXEC_LEVEL); -    return g_const_string; -} - -static const ConstString & -GetSettingNameForExecutionMode () -{ -    static ConstString g_const_string (TSC_EXEC_MODE); -    return g_const_string; -} - -static const ConstString & -GetSettingNameForExecutionOSType () -{ -    static ConstString g_const_string (TSC_EXEC_OS_TYPE); -    return g_const_string; -} - -static const ConstString &  GetSettingNameForPreferDynamicValue ()  {      static ConstString g_const_string (TSC_PREFER_DYNAMIC); diff --git a/lldb/test/abbreviation_tests/TestAbbreviations.py b/lldb/test/abbreviation_tests/TestAbbreviations.py index 0105ef6489b..7423f8e726c 100644 --- a/lldb/test/abbreviation_tests/TestAbbreviations.py +++ b/lldb/test/abbreviation_tests/TestAbbreviations.py @@ -38,12 +38,12 @@ class AbbreviationsTestCase(TestBase):                      patterns = ["Executing commands in '.*change_prompt.lldb'"])          self.expect("settings show prompt", -                    startstr = "prompt (string) = '[old-oak]'") +                    startstr = 'prompt (string) = "[old-oak]"')          self.runCmd("settings set -r prompt")          self.expect("settings show prompt", -                    startstr = "prompt (string) = '(lldb) '") +                    startstr = 'prompt (string) = "(lldb) "')          self.expect("lo li", @@ -51,11 +51,11 @@ class AbbreviationsTestCase(TestBase):          self.runCmd("se se prompt Sycamore> ")          self.expect("se sh prompt", -                    startstr = "prompt (string) = 'Sycamore>'") +                    startstr = 'prompt (string) = "Sycamore>"')          self.runCmd("se se -r prompt")          self.expect("set sh prompt", -                    startstr = "prompt (string) = '(lldb) '") +                    startstr = 'prompt (string) = "(lldb) "')          self.runCmd (r'''sc print "\n\n\tHello!\n"''') diff --git a/lldb/test/settings/TestSettings.py b/lldb/test/settings/TestSettings.py index 8e70df1f705..01af654a111 100644 --- a/lldb/test/settings/TestSettings.py +++ b/lldb/test/settings/TestSettings.py @@ -35,11 +35,11 @@ class SettingsCommandTestCase(TestBase):          # Immediately test the setting.          self.expect("settings show prompt", SETTING_MSG("prompt"), -            startstr = "prompt (string) = 'lldb2'") +            startstr = 'prompt (string) = "lldb2"')          # The overall display should also reflect the new setting.          self.expect("settings show", SETTING_MSG("prompt"), -            substrs = ["prompt (string) = 'lldb2'"]) +            substrs = ['prompt (string) = "lldb2"'])          # Use '-r' option to reset to the original default prompt.          self.runCmd("settings set -r prompt") @@ -51,11 +51,11 @@ class SettingsCommandTestCase(TestBase):          # Immediately test the setting.          self.expect("settings show term-width", SETTING_MSG("term-width"), -            startstr = "term-width (int) = '70'") +            startstr = "term-width (int) = 70")          # The overall display should also reflect the new setting.          self.expect("settings show", SETTING_MSG("term-width"), -            substrs = ["term-width (int) = '70'"]) +            substrs = ["term-width (int) = 70"])      def test_set_auto_confirm(self):          """Test that after 'set auto-confirm true', manual confirmation should not kick in.""" @@ -68,7 +68,7 @@ class SettingsCommandTestCase(TestBase):          # Immediately test the setting.          self.expect("settings show auto-confirm", SETTING_MSG("auto-confirm"), -            startstr = "auto-confirm (boolean) = 'true'") +            startstr = "auto-confirm (boolean) = true")          # Now 'breakpoint delete' should just work fine without confirmation          # prompt from the command interpreter. @@ -79,7 +79,7 @@ class SettingsCommandTestCase(TestBase):          # Restore the original setting of auto-confirm.          self.runCmd("settings set -r auto-confirm")          self.expect("settings show auto-confirm", SETTING_MSG("auto-confirm"), -            startstr = "auto-confirm (boolean) = 'false'") +            startstr = "auto-confirm (boolean) = false")      @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")      def test_run_args_and_env_vars_with_dsym(self): @@ -127,7 +127,7 @@ class SettingsCommandTestCase(TestBase):          # By default, inherit-env is 'true'.          self.expect('settings show target.process.inherit-env', "Default inherit-env is 'true'", -            startstr = "target.process.inherit-env (boolean) = 'true'") +            startstr = "target.process.inherit-env (boolean) = true")          # Set some host environment variables now.          os.environ["MY_HOST_ENV_VAR1"] = "VAR1" @@ -167,11 +167,11 @@ class SettingsCommandTestCase(TestBase):          self.expect("settings show target.process.error-path",                      SETTING_MSG("target.process.error-path"), -            startstr = "target.process.error-path (string) = 'stderr.txt'") +            startstr = 'target.process.error-path (string) = "stderr.txt"')          self.expect("settings show target.process.output-path",                      SETTING_MSG("target.process.output-path"), -            startstr = "target.process.output-path (string) = 'stdout.txt'") +            startstr = 'target.process.output-path (string) = "stdout.txt"')          self.runCmd("run", RUN_SUCCEEDED) @@ -201,31 +201,31 @@ class SettingsCommandTestCase(TestBase):          self.runCmd ("settings set -r target.process.env-vars")          self.runCmd ("settings set target.process.env-vars [\"MY_VAR\"]=some-value")          self.expect ("settings show target.process.env-vars", -                     substrs = [ "'MY_VAR=some-value'" ]) +                     substrs = [ "MY_VAR=some-value" ])          self.runCmd ("settings set -r target.process.env-vars")      def test_print_array_setting(self):          self.runCmd ("settings set -r target.process.run-args")          self.runCmd ("settings set target.process.run-args gobbledy-gook")          self.expect ("settings show target.process.run-args", -                     substrs = [ "[0]: 'gobbledy-gook'" ]) +                     substrs = [ '[0]: "gobbledy-gook"' ])          self.runCmd ("settings set -r target.process.run-args")      def test_settings_with_quotes (self):          self.runCmd ("settings set -r target.process.run-args")          self.runCmd ("settings set target.process.run-args a b c")          self.expect ("settings show target.process.run-args", -                     substrs = [ "[0]: 'a'", -                                 "[1]: 'b'", -                                 "[2]: 'c'" ]) +                     substrs = [ '[0]: "a"', +                                 '[1]: "b"', +                                 '[2]: "c"' ])          self.runCmd ("settings set target.process.run-args 'a b c'")          self.expect ("settings show target.process.run-args", -                     substrs = [ "[0]: 'a b c'" ]) +                     substrs = [ '[0]: "a b c"' ])          self.runCmd ("settings set -r target.process.run-args")          self.runCmd ("settings set -r target.process.env-vars") -        self.runCmd ("settings set target.process.env-vars [\"MY_FILE\"]='this is a file name with spaces.txt'") +        self.runCmd ('settings set target.process.env-vars ["MY_FILE"]="this is a file name with spaces.txt"')          self.expect ("settings show target.process.env-vars", -                     substrs = [ "'MY_FILE=this is a file name with spaces.txt'" ]) +                     substrs = [ 'MY_FILE=this is a file name with spaces.txt' ])          self.runCmd ("settings set -r target.process.env-vars") @@ -238,18 +238,18 @@ class SettingsCommandTestCase(TestBase):                                   "thread-format (string) = ",                                   "use-external-editor (boolean) = ",                                   "auto-confirm (boolean) = ", -                                 "target.default-arch (string):", +                                 "target.default-arch (string) =",                                   "target.expr-prefix (string) = ", -                                 "target.process.run-args (array):", -                                 "target.process.env-vars (dictionary):", +                                 "target.process.run-args (array) =", +                                 "target.process.env-vars (dictionary) =",                                   "target.process.inherit-env (boolean) = ",                                   "target.process.input-path (string) = ",                                   "target.process.output-path (string) = ",                                   "target.process.error-path (string) = ", -                                 "target.process.plugin (enum):", +                                 "target.process.plugin (enum) =",                                   "target.process.disable-aslr (boolean) = ",                                   "target.process.disable-stdio (boolean) = ", -                                 "target.process.thread.step-avoid-regexp (string):", +                                 "target.process.thread.step-avoid-regexp (string) =",                                   "target.process.thread.trace-thread (boolean) =" ])  | 

