summaryrefslogtreecommitdiffstats
path: root/Source/cmCommandArgumentParserHelper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmCommandArgumentParserHelper.cxx')
-rw-r--r--Source/cmCommandArgumentParserHelper.cxx25
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;
+ }
+}