Index: tools/gn/escape.cc |
diff --git a/tools/gn/escape.cc b/tools/gn/escape.cc |
index 58bb04e7f771e7f207a3bb293d009ec74264d47e..06f6ee8bec3d6b6758a62b498506b26aa09c85da 100644 |
--- a/tools/gn/escape.cc |
+++ b/tools/gn/escape.cc |
@@ -48,6 +48,17 @@ void EscapeStringToString_Ninja(const base::StringPiece& str, |
NinjaEscapeChar(str[i], dest); |
} |
+template<typename DestString> |
+void EscapeStringToString_NinjaPreformatted(const base::StringPiece& str, |
+ DestString* dest) { |
+ // Only Ninja-escape $. |
+ for (size_t i = 0; i < str.size(); i++) { |
+ if (str[i] == '$') |
+ dest->push_back('$'); |
+ dest->push_back(str[i]); |
+ } |
+} |
+ |
// Escape for CommandLineToArgvW and additionally escape Ninja characters. |
// |
// The basic algorithm is if the string doesn't contain any parse-affecting |
@@ -166,6 +177,9 @@ void EscapeStringToString(const base::StringPiece& str, |
NOTREACHED(); |
} |
break; |
+ case ESCAPE_NINJA_PREFORMATTED_COMMAND: |
+ EscapeStringToString_NinjaPreformatted(str, dest); |
+ break; |
default: |
NOTREACHED(); |
} |