Author: teemperor Date: Wed Aug 28 02:32:30 2019 New Revision: 370179 URL: http://llvm.org/viewvc/llvm-project?rev=370179&view=rev Log: [lldb][NFC] Get rid of C-strings in HandleOptionCompletion
Modified: lldb/trunk/source/Interpreter/Options.cpp Modified: lldb/trunk/source/Interpreter/Options.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/Options.cpp?rev=370179&r1=370178&r2=370179&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/Options.cpp (original) +++ lldb/trunk/source/Interpreter/Options.cpp Wed Aug 28 02:32:30 2019 @@ -652,8 +652,7 @@ bool Options::HandleOptionCompletion(Com auto opt_defs = GetDefinitions(); - std::string cur_opt_std_str = request.GetCursorArgumentPrefix().str(); - const char *cur_opt_str = cur_opt_std_str.c_str(); + llvm::StringRef cur_opt_str = request.GetCursorArgumentPrefix(); for (size_t i = 0; i < opt_element_vector.size(); i++) { int opt_pos = opt_element_vector[i].opt_pos; @@ -667,7 +666,7 @@ bool Options::HandleOptionCompletion(Com // FIXME: We should scan the other options provided and only complete // options // within the option group they belong to. - char opt_str[3] = {'-', 'a', '\0'}; + std::string opt_str = "-a"; for (auto &def : opt_defs) { if (!def.short_option) @@ -685,7 +684,7 @@ bool Options::HandleOptionCompletion(Com full_name.erase(full_name.begin() + 2, full_name.end()); full_name.append(def.long_option); - request.AddCompletion(full_name.c_str()); + request.AddCompletion(full_name); } return true; } else if (opt_defs_index != OptionArgElement::eUnrecognizedArg) { @@ -693,17 +692,13 @@ bool Options::HandleOptionCompletion(Com // anyway (getopt_long_only is happy with shortest unique string, but // it's still a nice thing to do.) Otherwise return The string so the // upper level code will know this is a full match and add the " ". - if (cur_opt_str && strlen(cur_opt_str) > 2 && cur_opt_str[0] == '-' && - cur_opt_str[1] == '-' && - strcmp(opt_defs[opt_defs_index].long_option, cur_opt_str) != 0) { - std::string full_name("--"); - full_name.append(opt_defs[opt_defs_index].long_option); - request.AddCompletion(full_name.c_str()); + llvm::StringRef long_option = opt_defs[opt_defs_index].long_option; + if (cur_opt_str.startswith("--") && cur_opt_str != long_option) { + request.AddCompletion("--" + long_option.str()); return true; - } else { + } else request.AddCompletion(request.GetCursorArgument()); - return true; - } + return true; } else { // FIXME - not handling wrong options yet: // Check to see if they are writing a long option & complete it. @@ -712,16 +707,15 @@ bool Options::HandleOptionCompletion(Com // that are not unique up to this point. getopt_long_only does // shortest unique match for long options already. - if (cur_opt_str && strlen(cur_opt_str) > 2 && cur_opt_str[0] == '-' && - cur_opt_str[1] == '-') { + if (cur_opt_str.startswith("--")) { for (auto &def : opt_defs) { if (!def.long_option) continue; - if (strstr(def.long_option, cur_opt_str + 2) == def.long_option) { + if (cur_opt_str.startswith(def.long_option)) { std::string full_name("--"); full_name.append(def.long_option); - request.AddCompletion(full_name.c_str()); + request.AddCompletion(full_name); } } } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits