diff options
Diffstat (limited to 'lldb/source/Interpreter/Args.cpp')
-rw-r--r-- | lldb/source/Interpreter/Args.cpp | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/lldb/source/Interpreter/Args.cpp b/lldb/source/Interpreter/Args.cpp index 592b0ef9a23..50b43b1678c 100644 --- a/lldb/source/Interpreter/Args.cpp +++ b/lldb/source/Interpreter/Args.cpp @@ -476,6 +476,16 @@ Args::AppendArguments (const Args &rhs) AppendArgument(rhs.GetArgumentAtIndex(i)); } +void +Args::AppendArguments (const char **argv) +{ + if (argv) + { + for (uint32_t i=0; argv[i]; ++i) + AppendArgument(argv[i]); + } +} + const char * Args::AppendArgument (const char *arg_cstr, char quote_char) { @@ -560,10 +570,8 @@ Args::SetArguments (int argc, const char **argv) m_args.clear(); m_args_quote_char.clear(); - // Make a copy of the arguments in our internal buffer - size_t i; // First copy each string - for (i=0; i<argc; ++i) + for (size_t i=0; i<argc; ++i) { m_args.push_back (argv[i]); if ((argv[i][0] == '\'') || (argv[i][0] == '"') || (argv[i][0] == '`')) @@ -575,6 +583,30 @@ Args::SetArguments (int argc, const char **argv) UpdateArgvFromArgs(); } +void +Args::SetArguments (const char **argv) +{ + // m_argv will be rebuilt in UpdateArgvFromArgs() below, so there is + // no need to clear it here. + m_args.clear(); + m_args_quote_char.clear(); + + if (argv) + { + // First copy each string + for (size_t i=0; argv[i]; ++i) + { + m_args.push_back (argv[i]); + if ((argv[i][0] == '\'') || (argv[i][0] == '"') || (argv[i][0] == '`')) + m_args_quote_char.push_back (argv[i][0]); + else + m_args_quote_char.push_back ('\0'); + } + } + + UpdateArgvFromArgs(); +} + Error Args::ParseOptions (Options &options) |