diff options
Diffstat (limited to 'Source/cmCommandArgumentParserHelper.cxx')
-rw-r--r-- | Source/cmCommandArgumentParserHelper.cxx | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index f1efa68..2aa6c0c 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -87,8 +87,10 @@ char* cmCommandArgumentParserHelper::ExpandSpecialVariable(const char* key, } return this->EmptyVariable; } - cmSystemTools::Error("Key ", key, - " is not used yet. For now only $ENV{..} is allowed"); + cmOStringStream e; + e << "Syntax $" << key << "{} is not supported. " + << "Only ${} and ENV{} are allowed."; + this->SetError(e.str()); return 0; } @@ -216,10 +218,11 @@ bool cmCommandArgumentParserHelper::HandleEscapeSymbol this->AllocateParserType(pt, "\0", 1); break; default: - char buffer[2]; - buffer[0] = symbol; - buffer[1] = 0; - cmSystemTools::Error("Invalid escape sequence \\", buffer); + { + cmOStringStream e; + e << "Invalid escape sequence \\" << symbol; + this->SetError(e.str()); + } return false; } return true; @@ -300,7 +303,7 @@ void cmCommandArgumentParserHelper::Error(const char* str) unsigned long pos = static_cast<unsigned long>(this->InputBufferPos); cmOStringStream ostr; ostr << str << " (" << pos << ")"; - this->ErrorString = ostr.str(); + this->SetError(ostr.str()); } void cmCommandArgumentParserHelper::SetMakefile(const cmMakefile* mf) @@ -318,3 +321,11 @@ void cmCommandArgumentParserHelper::SetResult(const char* value) this->Result = value; } +void cmCommandArgumentParserHelper::SetError(std::string const& msg) +{ + // Keep only the first error. + if(this->ErrorString.empty()) + { + this->ErrorString = msg; + } +} |