parent
1fad699809
commit
144e8dcf40
@ -143,7 +143,7 @@ std::string cmOutputConverter::ConvertToOutputFormat(cm::string_view source,
|
||||
result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE,
|
||||
output == NINJAMULTI);
|
||||
} else if (output == RESPONSE) {
|
||||
result = this->EscapeForShell(result, false, false, false);
|
||||
result = this->EscapeForShell(result, false, false, false, false, true);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -175,9 +175,11 @@ static bool cmOutputConverterIsShellOperator(cm::string_view str)
|
||||
return (shellOperators.count(str) != 0);
|
||||
}
|
||||
|
||||
std::string cmOutputConverter::EscapeForShell(
|
||||
cm::string_view str, bool makeVars, bool forEcho, bool useWatcomQuote,
|
||||
bool unescapeNinjaConfiguration) const
|
||||
std::string cmOutputConverter::EscapeForShell(cm::string_view str,
|
||||
bool makeVars, bool forEcho,
|
||||
bool useWatcomQuote,
|
||||
bool unescapeNinjaConfiguration,
|
||||
bool forResponse) const
|
||||
{
|
||||
// Do not escape shell operators.
|
||||
if (cmOutputConverterIsShellOperator(str)) {
|
||||
@ -203,6 +205,9 @@ std::string cmOutputConverter::EscapeForShell(
|
||||
if (useWatcomQuote) {
|
||||
flags |= Shell_Flag_WatcomQuote;
|
||||
}
|
||||
if (forResponse) {
|
||||
flags |= Shell_Flag_IsResponse;
|
||||
}
|
||||
if (this->GetState()->UseWatcomWMake()) {
|
||||
flags |= Shell_Flag_WatcomWMake;
|
||||
}
|
||||
@ -360,6 +365,13 @@ bool cmOutputConverter::Shell_CharNeedsQuotes(char c, int flags)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Quote hyphens in response files */
|
||||
if (flags & Shell_Flag_IsResponse) {
|
||||
if (c == '-') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & Shell_Flag_IsUnix) {
|
||||
/* On UNIX several special characters need quotes to preserve them. */
|
||||
if (Shell_CharNeedsQuotesOnUnix(c)) {
|
||||
|
@ -88,11 +88,14 @@ public:
|
||||
Shell_Flag_IsUnix = (1 << 8),
|
||||
|
||||
Shell_Flag_UnescapeNinjaConfiguration = (1 << 9),
|
||||
|
||||
Shell_Flag_IsResponse = (1 << 10)
|
||||
};
|
||||
|
||||
std::string EscapeForShell(cm::string_view str, bool makeVars = false,
|
||||
bool forEcho = false, bool useWatcomQuote = false,
|
||||
bool unescapeNinjaConfiguration = false) const;
|
||||
bool unescapeNinjaConfiguration = false,
|
||||
bool forResponse = false) const;
|
||||
|
||||
enum class WrapQuotes
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user