summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-01-20 13:33:35 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2016-01-20 13:33:35 (GMT)
commit184be68580d19900b289bfc45d507980ea2bce8b (patch)
tree0f309ed3d8940a1e56c2d77d63d2161e9833595c /Source
parent606ad1764ee8aff62368878576ecec7dd8671bae (diff)
parent77cd74a3ea964fa390d85c371902387e9ffc4a92 (diff)
downloadCMake-184be68580d19900b289bfc45d507980ea2bce8b.zip
CMake-184be68580d19900b289bfc45d507980ea2bce8b.tar.gz
CMake-184be68580d19900b289bfc45d507980ea2bce8b.tar.bz2
Merge topic 'cache-parse-error-line-number'
77cd74a3 Print line number of cache parse errors (#11109)
Diffstat (limited to 'Source')
-rw-r--r--Source/cmCacheManager.cxx10
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx
index ce8af55..7466c29 100644
--- a/Source/cmCacheManager.cxx
+++ b/Source/cmCacheManager.cxx
@@ -64,12 +64,14 @@ bool cmCacheManager::LoadCache(const std::string& path,
const char *realbuffer;
std::string buffer;
std::string entryKey;
+ unsigned int lineno = 0;
while(fin)
{
// Format is key:type=value
std::string helpString;
CacheEntry e;
cmSystemTools::GetLineFromStream(fin, buffer);
+ lineno++;
realbuffer = buffer.c_str();
while(*realbuffer != '0' &&
(*realbuffer == ' ' ||
@@ -77,6 +79,7 @@ bool cmCacheManager::LoadCache(const std::string& path,
*realbuffer == '\r' ||
*realbuffer == '\n'))
{
+ if (*realbuffer == '\n') lineno++;
realbuffer++;
}
// skip blank lines and comment lines
@@ -96,6 +99,7 @@ bool cmCacheManager::LoadCache(const std::string& path,
helpString += &realbuffer[2];
}
cmSystemTools::GetLineFromStream(fin, buffer);
+ lineno++;
realbuffer = buffer.c_str();
if(!fin)
{
@@ -138,8 +142,10 @@ bool cmCacheManager::LoadCache(const std::string& path,
}
else
{
- cmSystemTools::Error("Parse error in cache file ", cacheFile.c_str(),
- ". Offending entry: ", realbuffer);
+ std::ostringstream error;
+ error << "Parse error in cache file " << cacheFile;
+ error << " on line " << lineno << ". Offending entry: " << realbuffer;
+ cmSystemTools::Error(error.str().c_str());
}
}
this->CacheMajorVersion = 0;