summaryrefslogtreecommitdiffstats
path: root/lldb/source/Interpreter/Args.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Interpreter/Args.cpp')
-rw-r--r--lldb/source/Interpreter/Args.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/lldb/source/Interpreter/Args.cpp b/lldb/source/Interpreter/Args.cpp
index 254cd33ddf8..3e0f4846f1b 100644
--- a/lldb/source/Interpreter/Args.cpp
+++ b/lldb/source/Interpreter/Args.cpp
@@ -978,9 +978,11 @@ bool Args::IsPositionalArgument(const char *arg) {
return is_positional;
}
-void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
- OptionArgVector *option_arg_vector,
- std::string &raw_input_string) {
+std::string Args::ParseAliasOptions(Options &options,
+ CommandReturnObject &result,
+ OptionArgVector *option_arg_vector,
+ llvm::StringRef raw_input_string) {
+ std::string result_string(raw_input_string);
StreamString sstr;
int i;
Option *long_options = options.GetLongOptions();
@@ -988,7 +990,7 @@ void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
if (long_options == nullptr) {
result.AppendError("invalid long options");
result.SetStatus(eReturnStatusFailed);
- return;
+ return result_string;
}
for (i = 0; long_options[i].definition != nullptr; ++i) {
@@ -1048,7 +1050,7 @@ void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
if (long_options_index == -1) {
result.AppendErrorWithFormat("Invalid option with value '%c'.\n", val);
result.SetStatus(eReturnStatusFailed);
- return;
+ return result_string;
}
StreamString option_str;
@@ -1065,7 +1067,7 @@ void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
"Option '%s' is missing argument specifier.\n",
option_str.GetData());
result.SetStatus(eReturnStatusFailed);
- return;
+ return result_string;
}
LLVM_FALLTHROUGH;
case OptionParser::eOptionalArgument:
@@ -1078,7 +1080,7 @@ void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
"in has_arg field for option '%c'.\n",
val);
result.SetStatus(eReturnStatusFailed);
- return;
+ return result_string;
}
if (!option_arg)
option_arg = "<no-argument>";
@@ -1092,11 +1094,11 @@ void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
if (idx == size_t(-1))
continue;
- if (raw_input_string.size() > 0) {
+ if (!result_string.empty()) {
const char *tmp_arg = GetArgumentAtIndex(idx);
- size_t pos = raw_input_string.find(tmp_arg);
+ size_t pos = result_string.find(tmp_arg);
if (pos != std::string::npos)
- raw_input_string.erase(pos, strlen(tmp_arg));
+ result_string.erase(pos, strlen(tmp_arg));
}
ReplaceArgumentAtIndex(idx, llvm::StringRef());
if ((long_options[long_options_index].definition->option_has_arg !=
@@ -1105,15 +1107,16 @@ void Args::ParseAliasOptions(Options &options, CommandReturnObject &result,
(idx + 1 < GetArgumentCount()) &&
(strcmp(OptionParser::GetOptionArgument(),
GetArgumentAtIndex(idx + 1)) == 0)) {
- if (raw_input_string.size() > 0) {
+ if (result_string.size() > 0) {
const char *tmp_arg = GetArgumentAtIndex(idx + 1);
- size_t pos = raw_input_string.find(tmp_arg);
+ size_t pos = result_string.find(tmp_arg);
if (pos != std::string::npos)
- raw_input_string.erase(pos, strlen(tmp_arg));
+ result_string.erase(pos, strlen(tmp_arg));
}
ReplaceArgumentAtIndex(idx + 1, llvm::StringRef());
}
}
+ return result_string;
}
void Args::ParseArgsForCompletion(Options &options,
OpenPOWER on IntegriCloud