Commit 6675f785 authored by Sebastian Holtermann's avatar Sebastian Holtermann
Browse files

cmOutputConverter: Let EscapeForCMake accept a cm::string_view

parent 09977c18
......@@ -120,23 +120,23 @@ std::string cmOutputConverter::EscapeForShell(const std::string& str,
return Shell__GetArgument(str.c_str(), flags);
}
std::string cmOutputConverter::EscapeForCMake(const std::string& str)
std::string cmOutputConverter::EscapeForCMake(cm::string_view str)
{
// Always double-quote the argument to take care of most escapes.
std::string result = "\"";
for (const char* c = str.c_str(); *c; ++c) {
if (*c == '"') {
for (const char c : str) {
if (c == '"') {
// Escape the double quote to avoid ending the argument.
result += "\\\"";
} else if (*c == '$') {
} else if (c == '$') {
// Escape the dollar to avoid expanding variables.
result += "\\$";
} else if (*c == '\\') {
} else if (c == '\\') {
// Escape the backslash to avoid other escapes.
result += "\\\\";
} else {
// Other characters will be parsed correctly.
result += *c;
result += c;
}
}
result += "\"";
......
......@@ -5,9 +5,10 @@
#include "cmConfigure.h" // IWYU pragma: keep
#include <string>
#include "cmStateSnapshot.h"
#include "cm_string_view.hxx"
#include <string>
class cmState;
......@@ -76,7 +77,7 @@ public:
bool forEcho = false,
bool useWatcomQuote = false) const;
static std::string EscapeForCMake(const std::string& str);
static std::string EscapeForCMake(cm::string_view str);
/** Compute an escaped version of the given argument for use in a
windows shell. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment