diff options
author | Johnny Chen <johnny.chen@apple.com> | 2012-01-21 01:45:18 +0000 |
---|---|---|
committer | Johnny Chen <johnny.chen@apple.com> | 2012-01-21 01:45:18 +0000 |
commit | 5928f64e2cc44375ec20521a5c5308aeaa7f9ce5 (patch) | |
tree | 93a18b7a9d118add78cefbdfffc8d3c73d33f665 /lldb/source/Commands/CommandObjectSettings.cpp | |
parent | 6b10d5470eb7572a562859b9881069a2eb24ee38 (diff) | |
download | bcm5719-llvm-5928f64e2cc44375ec20521a5c5308aeaa7f9ce5.tar.gz bcm5719-llvm-5928f64e2cc44375ec20521a5c5308aeaa7f9ce5.zip |
Followup check in for http://llvm.org/viewvc/llvm-project?rev=148491&view=rev,
where we changed the CommandObjectSettingsSet object impl to require raw command string.
Do the same for CommandObjectSettingsReplace class and add two test cases; one for
the "settings replace" command and the other to ensure that completion for variable
name still works.
llvm-svn: 148615
Diffstat (limited to 'lldb/source/Commands/CommandObjectSettings.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectSettings.cpp | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/lldb/source/Commands/CommandObjectSettings.cpp b/lldb/source/Commands/CommandObjectSettings.cpp index 2a8b4247275..b5e328b789c 100644 --- a/lldb/source/Commands/CommandObjectSettings.cpp +++ b/lldb/source/Commands/CommandObjectSettings.cpp @@ -690,11 +690,12 @@ CommandObjectSettingsReplace::~CommandObjectSettingsReplace () } bool -CommandObjectSettingsReplace::Execute (Args& command, CommandReturnObject &result) +CommandObjectSettingsReplace::ExecuteRawCommandString (const char *raw_command, CommandReturnObject &result) { UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ()); - const int argc = command.GetArgumentCount (); + Args cmd_args(raw_command); + const int argc = cmd_args.GetArgumentCount (); if (argc < 3) { @@ -703,7 +704,7 @@ CommandObjectSettingsReplace::Execute (Args& command, CommandReturnObject &resul return false; } - const char *var_name = command.GetArgumentAtIndex (0); + const char *var_name = cmd_args.GetArgumentAtIndex (0); std::string var_name_string; if ((var_name == NULL) || (var_name[0] == '\0')) { @@ -713,9 +714,9 @@ CommandObjectSettingsReplace::Execute (Args& command, CommandReturnObject &resul } var_name_string = var_name; - command.Shift(); + cmd_args.Shift(); - const char *index_value = command.GetArgumentAtIndex (0); + const char *index_value = cmd_args.GetArgumentAtIndex (0); std::string index_value_string; if ((index_value == NULL) || (index_value[0] == '\0')) { @@ -725,15 +726,15 @@ CommandObjectSettingsReplace::Execute (Args& command, CommandReturnObject &resul } index_value_string = index_value; - command.Shift(); + cmd_args.Shift(); - const char *var_value; - std::string value_string; - - command.GetQuotedCommandString (value_string); - var_value = value_string.c_str(); + // Split the raw command into var_name, index_value, and value triple. + llvm::StringRef raw_str(raw_command); + llvm::StringRef var_value_str = raw_str.split(var_name).second.split(index_value).second; + StripLeadingSpaces(var_value_str); + std::string var_value_string = var_value_str.str(); - if ((var_value == NULL) || (var_value[0] == '\0')) + if (var_value_string.empty()) { result.AppendError ("'settings replace' command requires a valid variable value; no value supplied"); result.SetStatus (eReturnStatusFailed); @@ -741,7 +742,7 @@ CommandObjectSettingsReplace::Execute (Args& command, CommandReturnObject &resul else { Error err = usc_sp->SetVariable (var_name_string.c_str(), - var_value, + var_value_string.c_str(), eVarSetOperationReplace, true, m_interpreter.GetDebugger().GetInstanceName().AsCString(), |