in util/process_wrapper/system_windows.cc [34:63]
void ArgumentQuote(const System::StrType& argument,
System::StrType& command_line) {
if (argument.empty() == false &&
argument.find_first_of(PW_SYS_STR(" \t\n\v\"")) == argument.npos) {
command_line.append(argument);
} else {
command_line.push_back(PW_SYS_STR('"'));
for (auto it = argument.begin();; ++it) {
unsigned number_backslashes = 0;
while (it != argument.end() && *it == PW_SYS_STR('\\')) {
++it;
++number_backslashes;
}
if (it == argument.end()) {
command_line.append(number_backslashes * 2, PW_SYS_STR('\\'));
break;
} else if (*it == L'"') {
command_line.append(number_backslashes * 2 + 1, PW_SYS_STR('\\'));
command_line.push_back(*it);
} else {
command_line.append(number_backslashes, PW_SYS_STR('\\'));
command_line.push_back(*it);
}
}
command_line.push_back(PW_SYS_STR('"'));
}
}