From 8b143fab66a2d1e93bf01eb7837a33e52644c396 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 22 Nov 2010 15:45:30 -0500 Subject: [PATCH] Condense parsing of cache entries If a cache line is being parsed, it shouldn't matter whether it has a type or not; just parse it however possible. --- Source/cmCacheManager.cxx | 14 +++++++++----- Source/cmCacheManager.h | 4 ---- Source/cmLoadCacheCommand.cxx | 3 +-- Source/cmake.cxx | 3 +-- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index eabdf87ec..2baacbf2e 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -93,9 +93,9 @@ bool cmCacheManager::LoadCache(const char* path, return this->LoadCache(path, internal, emptySet, emptySet); } -bool cmCacheManager::ParseEntry(const char* entry, - std::string& var, - std::string& value) +static bool ParseEntryWithoutType(const char* entry, + std::string& var, + std::string& value) { // input line is: key=value static cmsys::RegularExpression reg( @@ -169,6 +169,11 @@ bool cmCacheManager::ParseEntry(const char* entry, value.size() - 2); } + if (!flag) + { + return ParseEntryWithoutType(entry, var, value); + } + return flag; } @@ -253,8 +258,7 @@ bool cmCacheManager::LoadCache(const char* path, } } e.SetProperty("HELPSTRING", helpString.c_str()); - if(cmCacheManager::ParseEntry(realbuffer, entryKey, e.Value, e.Type) || - cmCacheManager::ParseEntry(realbuffer, entryKey, e.Value)) + if(cmCacheManager::ParseEntry(realbuffer, entryKey, e.Value, e.Type)) { if ( excludes.find(entryKey) == excludes.end() ) { diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h index da1496621..314017bf5 100644 --- a/Source/cmCacheManager.h +++ b/Source/cmCacheManager.h @@ -139,10 +139,6 @@ public: std::string& value, CacheEntryType& type); - static bool ParseEntry(const char* entry, - std::string& var, - std::string& value); - ///! Get a value from the cache given a key const char* GetCacheValue(const char* key) const; diff --git a/Source/cmLoadCacheCommand.cxx b/Source/cmLoadCacheCommand.cxx index b06e2f9fb..a239e55bf 100644 --- a/Source/cmLoadCacheCommand.cxx +++ b/Source/cmLoadCacheCommand.cxx @@ -175,8 +175,7 @@ void cmLoadCacheCommand::CheckLine(const char* line) std::string var; std::string value; cmCacheManager::CacheEntryType type = cmCacheManager::UNINITIALIZED; - if(cmCacheManager::ParseEntry(line, var, value, type) || - cmCacheManager::ParseEntry(line, var, value)) + if(cmCacheManager::ParseEntry(line, var, value, type)) { // Found a real entry. See if this one was requested. if(this->VariablesToRead.find(var) != this->VariablesToRead.end()) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 2ebd16592..e33295549 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -362,8 +362,7 @@ bool cmake::SetCacheArgs(const std::vector& args) } std::string var, value; cmCacheManager::CacheEntryType type = cmCacheManager::UNINITIALIZED; - if(cmCacheManager::ParseEntry(entry.c_str(), var, value, type) || - cmCacheManager::ParseEntry(entry.c_str(), var, value)) + if(cmCacheManager::ParseEntry(entry.c_str(), var, value, type)) { this->CacheManager->AddCacheEntry(var.c_str(), value.c_str(), "No help, variable specified on the command line.", type);