diff options
author | Brad King <brad.king@kitware.com> | 2012-09-19 15:28:00 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2012-09-19 15:31:36 (GMT) |
commit | 95a00116044ed52d92c20a467b9266476eb56632 (patch) | |
tree | d2770725839951940c45e21fed4cf4c76e4fcc79 /Source/cmFileCommand.cxx | |
parent | d407dcdbc824688510837ec85bb2e3c85cf096bd (diff) | |
download | CMake-95a00116044ed52d92c20a467b9266476eb56632.zip CMake-95a00116044ed52d92c20a467b9266476eb56632.tar.gz CMake-95a00116044ed52d92c20a467b9266476eb56632.tar.bz2 |
file(DOWNLOAD): Change EXPECTED_HASH to take ALGO=value
Make the EXPECTED_HASH option take only a single value instead of two to
avoid handling sub-keyword arguments. This is also consistent with
URL_HASH in ExternalProject.
Diffstat (limited to 'Source/cmFileCommand.cxx')
-rw-r--r-- | Source/cmFileCommand.cxx | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 4d9eb79..1a66d82 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2767,30 +2767,31 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) else if(*i == "EXPECTED_HASH") { ++i; - if(i != args.end()) + if(i == args.end()) { - hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New(i->c_str())); - if(!hash.get()) - { - std::string err = "DOWNLOAD bad SHA type: "; - err += *i; - this->SetError(err.c_str()); - return false; - } - hashMatchMSG = *i; - hashMatchMSG += " hash"; - - ++i; + this->SetError("DOWNLOAD missing ALGO=value for EXPECTED_HASH."); + return false; } - if(i != args.end()) + std::string::size_type pos = i->find("="); + if(pos == std::string::npos) { - expectedHash = cmSystemTools::LowerCase(*i); + std::string err = + "DOWNLOAD EXPECTED_HASH expects ALGO=value but got: "; + err += *i; + this->SetError(err.c_str()); + return false; } - else + std::string algo = i->substr(0, pos); + expectedHash = cmSystemTools::LowerCase(i->substr(pos+1)); + hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New(algo.c_str())); + if(!hash.get()) { - this->SetError("DOWNLOAD missing time for EXPECTED_HASH."); + std::string err = "DOWNLOAD EXPECTED_HASH given unknown ALGO: "; + err += algo; + this->SetError(err.c_str()); return false; } + hashMatchMSG = algo + " hash"; } ++i; } |