mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 15:20:56 -06:00
cmOutputConverter: Let EscapeForCMake accept a cm::string_view
This commit is contained in:
@@ -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. */
|
||||
|
||||
Reference in New Issue
Block a user