summaryrefslogtreecommitdiffstats
path: root/lldb/source/Interpreter/OptionValueString.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Interpreter/OptionValueString.cpp')
-rw-r--r--lldb/source/Interpreter/OptionValueString.cpp39
1 files changed, 34 insertions, 5 deletions
diff --git a/lldb/source/Interpreter/OptionValueString.cpp b/lldb/source/Interpreter/OptionValueString.cpp
index 35ab8c8f7ce..696e62b78e7 100644
--- a/lldb/source/Interpreter/OptionValueString.cpp
+++ b/lldb/source/Interpreter/OptionValueString.cpp
@@ -14,6 +14,7 @@
// Other libraries and framework includes
// Project includes
#include "lldb/Core/Stream.h"
+#include "lldb/Interpreter/Args.h"
using namespace lldb;
using namespace lldb_private;
@@ -29,10 +30,22 @@ OptionValueString::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uin
strm.PutCString (" = ");
if (!m_current_value.empty() || m_value_was_set)
{
- if (dump_mask & eDumpOptionRaw)
- strm.Printf ("%s", m_current_value.c_str());
+ if (m_options.Test (eOptionEncodeCharacterEscapeSequences))
+ {
+ std::string expanded_escape_value;
+ Args::ExpandEscapedCharacters(m_current_value.c_str(), expanded_escape_value);
+ if (dump_mask & eDumpOptionRaw)
+ strm.Printf ("%s", expanded_escape_value.c_str());
+ else
+ strm.Printf ("\"%s\"", expanded_escape_value.c_str());
+ }
else
- strm.Printf ("\"%s\"", m_current_value.c_str());
+ {
+ if (dump_mask & eDumpOptionRaw)
+ strm.Printf ("%s", m_current_value.c_str());
+ else
+ strm.Printf ("\"%s\"", m_current_value.c_str());
+ }
}
}
}
@@ -53,7 +66,16 @@ OptionValueString::SetValueFromCString (const char *value_cstr,
case eVarSetOperationAppend:
if (value_cstr && value_cstr[0])
- m_current_value += value_cstr;
+ {
+ if (m_options.Test (eOptionEncodeCharacterEscapeSequences))
+ {
+ std::string str;
+ Args::EncodeEscapeSequences (value_cstr, str);
+ m_current_value += str;
+ }
+ else
+ m_current_value += value_cstr;
+ }
break;
case eVarSetOperationClear:
@@ -63,7 +85,14 @@ OptionValueString::SetValueFromCString (const char *value_cstr,
case eVarSetOperationReplace:
case eVarSetOperationAssign:
m_value_was_set = true;
- SetCurrentValue (value_cstr);
+ if (m_options.Test (eOptionEncodeCharacterEscapeSequences))
+ {
+ Args::EncodeEscapeSequences (value_cstr, m_current_value);
+ }
+ else
+ {
+ SetCurrentValue (value_cstr);
+ }
break;
}
return error;
OpenPOWER on IntegriCloud