diff options
author | Brad King <brad.king@kitware.com> | 2016-01-20 13:33:35 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-01-20 13:33:35 (GMT) |
commit | 184be68580d19900b289bfc45d507980ea2bce8b (patch) | |
tree | 0f309ed3d8940a1e56c2d77d63d2161e9833595c /Source | |
parent | 606ad1764ee8aff62368878576ecec7dd8671bae (diff) | |
parent | 77cd74a3ea964fa390d85c371902387e9ffc4a92 (diff) | |
download | CMake-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.cxx | 10 |
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; |