Lines Matching refs:command
67 // Trims all whitespace that can separate command line arguments from the left
77 // command string, processing quotes and backslashes in a shell-like manner.
82 ParseSingleArgument(llvm::StringRef command) {
90 // Since we can have multiple quotes that form a single command in a command
99 size_t regular = command.find_first_of(" \t\r\"'`\\");
100 arg += command.substr(0, regular);
101 command = command.substr(regular);
103 if (command.empty())
106 char special = command.front();
107 command = command.drop_front();
110 if (command.empty()) {
117 if (strchr(" \t\\'\"`", command.front()) == nullptr)
120 arg += command.front();
121 command = command.drop_front();
141 command = ParseDoubleQuotes(command, arg);
145 size_t quoted = command.find(special);
146 arg += command.substr(0, quoted);
147 command = command.substr(quoted);
151 if (!command.empty())
152 command = command.drop_front();
158 return std::make_tuple(arg, first_quote_char, command);
172 Args::Args(llvm::StringRef command) { SetCommandString(command); }
215 bool Args::GetCommandString(std::string &command) const {
216 command.clear();
220 command += ' ';
223 command += quote;
224 command += m_entries[i].ref();
226 command += quote;
232 bool Args::GetQuotedCommandString(std::string &command) const {
233 command.clear();
237 command += ' ';
240 command += m_entries[i].quote;
241 command += m_entries[i].ref();
242 command += m_entries[i].quote;
244 command += m_entries[i].ref();
251 void Args::SetCommandString(llvm::StringRef command) {
257 command = ltrimForArgs(command, shift);
261 while (!command.empty()) {
262 const char *prev = command.data();
263 std::tie(arg, quote, command) = ParseSingleArgument(command);
266 command = ltrimForArgs(command, shift);
268 column += command.data() - prev;
669 // of the command.