mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-16 12:11:04 -06:00
cmOutputConverter: Add a flag for IsUnix
Remove the need for method parameters to represent the distinction.
This commit is contained in:
@@ -239,9 +239,11 @@ std::string cmOutputConverter::EscapeForShell(const std::string& str,
|
||||
if (this->GetState()->UseNMake()) {
|
||||
flags |= Shell_Flag_NMake;
|
||||
}
|
||||
if (!this->GetState()->UseWindowsShell()) {
|
||||
flags |= Shell_Flag_IsUnix;
|
||||
}
|
||||
|
||||
return Shell__GetArgument(str.c_str(), !this->GetState()->UseWindowsShell(),
|
||||
flags);
|
||||
return Shell__GetArgument(str.c_str(), flags);
|
||||
}
|
||||
|
||||
std::string cmOutputConverter::EscapeForCMake(const std::string& str)
|
||||
@@ -270,7 +272,7 @@ std::string cmOutputConverter::EscapeForCMake(const std::string& str)
|
||||
std::string cmOutputConverter::EscapeWindowsShellArgument(const char* arg,
|
||||
int shell_flags)
|
||||
{
|
||||
return Shell__GetArgument(arg, 0, shell_flags);
|
||||
return Shell__GetArgument(arg, shell_flags);
|
||||
}
|
||||
|
||||
cmOutputConverter::FortranFormat cmOutputConverter::GetFortranFormat(
|
||||
@@ -356,10 +358,10 @@ int cmOutputConverter::Shell__CharNeedsQuotesOnWindows(char c)
|
||||
(c == '>') || (c == '|') || (c == '^'));
|
||||
}
|
||||
|
||||
int cmOutputConverter::Shell__CharNeedsQuotes(char c, int isUnix, int flags)
|
||||
int cmOutputConverter::Shell__CharNeedsQuotes(char c, int flags)
|
||||
{
|
||||
/* On Windows the built-in command shell echo never needs quotes. */
|
||||
if (!isUnix && (flags & Shell_Flag_EchoWindows)) {
|
||||
if (!(flags & Shell_Flag_IsUnix) && (flags & Shell_Flag_EchoWindows)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -368,7 +370,7 @@ int cmOutputConverter::Shell__CharNeedsQuotes(char c, int isUnix, int flags)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (isUnix) {
|
||||
if (flags & Shell_Flag_IsUnix) {
|
||||
/* On UNIX several special characters need quotes to preserve them. */
|
||||
if (Shell__CharNeedsQuotesOnUnix(c)) {
|
||||
return 1;
|
||||
@@ -426,8 +428,7 @@ flag later when we understand applications of this better.
|
||||
*/
|
||||
#define KWSYS_SYSTEM_SHELL_QUOTE_MAKE_VARIABLES 0
|
||||
|
||||
int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, int isUnix,
|
||||
int flags)
|
||||
int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, int flags)
|
||||
{
|
||||
/* The empty string needs quotes. */
|
||||
if (!*in) {
|
||||
@@ -459,14 +460,14 @@ int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, int isUnix,
|
||||
}
|
||||
|
||||
/* Check whether this character needs quotes. */
|
||||
if (Shell__CharNeedsQuotes(*c, isUnix, flags)) {
|
||||
if (Shell__CharNeedsQuotes(*c, flags)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* On Windows some single character arguments need quotes. */
|
||||
if (!isUnix && *in && !*(in + 1)) {
|
||||
if (flags & Shell_Flag_IsUnix && *in && !*(in + 1)) {
|
||||
char c = *in;
|
||||
if ((c == '?') || (c == '&') || (c == '^') || (c == '|') || (c == '#')) {
|
||||
return 1;
|
||||
@@ -476,8 +477,7 @@ int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, int isUnix,
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string cmOutputConverter::Shell__GetArgument(const char* in, int isUnix,
|
||||
int flags)
|
||||
std::string cmOutputConverter::Shell__GetArgument(const char* in, int flags)
|
||||
{
|
||||
std::ostringstream out;
|
||||
|
||||
@@ -488,11 +488,11 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int isUnix,
|
||||
int windows_backslashes = 0;
|
||||
|
||||
/* Whether the argument must be quoted. */
|
||||
int needQuotes = Shell__ArgumentNeedsQuotes(in, isUnix, flags);
|
||||
int needQuotes = Shell__ArgumentNeedsQuotes(in, flags);
|
||||
if (needQuotes) {
|
||||
/* Add the opening quote for this argument. */
|
||||
if (flags & Shell_Flag_WatcomQuote) {
|
||||
if (isUnix) {
|
||||
if (flags & Shell_Flag_IsUnix) {
|
||||
out << '"';
|
||||
}
|
||||
out << '\'';
|
||||
@@ -524,7 +524,7 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int isUnix,
|
||||
}
|
||||
|
||||
/* Check whether this character needs escaping for the shell. */
|
||||
if (isUnix) {
|
||||
if (flags & Shell_Flag_IsUnix) {
|
||||
/* On Unix a few special characters need escaping even inside a
|
||||
quoted argument. */
|
||||
if (*c == '\\' || *c == '"' || *c == '`' || *c == '$') {
|
||||
@@ -621,7 +621,7 @@ std::string cmOutputConverter::Shell__GetArgument(const char* in, int isUnix,
|
||||
/* Add the closing quote for this argument. */
|
||||
if (flags & Shell_Flag_WatcomQuote) {
|
||||
out << '\'';
|
||||
if (isUnix) {
|
||||
if (flags & Shell_Flag_IsUnix) {
|
||||
out << '"';
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -66,7 +66,9 @@ public:
|
||||
Shell_Flag_AllowMakeVariables = (1 << 6),
|
||||
|
||||
/** The target shell quoting uses extra single Quotes for Watcom tools. */
|
||||
Shell_Flag_WatcomQuote = (1 << 7)
|
||||
Shell_Flag_WatcomQuote = (1 << 7),
|
||||
|
||||
Shell_Flag_IsUnix = (1 << 8)
|
||||
};
|
||||
|
||||
std::string EscapeForShell(const std::string& str, bool makeVars = false,
|
||||
@@ -116,11 +118,11 @@ private:
|
||||
static int Shell__CharIsWhitespace(char c);
|
||||
static int Shell__CharNeedsQuotesOnUnix(char c);
|
||||
static int Shell__CharNeedsQuotesOnWindows(char c);
|
||||
static int Shell__CharNeedsQuotes(char c, int isUnix, int flags);
|
||||
static int Shell__CharNeedsQuotes(char c, int flags);
|
||||
static int Shell__CharIsMakeVariableName(char c);
|
||||
static const char* Shell__SkipMakeVariables(const char* c);
|
||||
static int Shell__ArgumentNeedsQuotes(const char* in, int isUnix, int flags);
|
||||
static std::string Shell__GetArgument(const char* in, int isUnix, int flags);
|
||||
static int Shell__ArgumentNeedsQuotes(const char* in, int flags);
|
||||
static std::string Shell__GetArgument(const char* in, int flags);
|
||||
|
||||
private:
|
||||
cmState::Snapshot StateSnapshot;
|
||||
|
||||
Reference in New Issue
Block a user