diff options
author | Ruslan Baratov <ruslan_baratov@yahoo.com> | 2016-09-13 17:24:12 (GMT) |
---|---|---|
committer | Ruslan Baratov <ruslan_baratov@yahoo.com> | 2016-09-13 17:24:12 (GMT) |
commit | e5ba1041be862212a3ad66bd51930fc7beeb8140 (patch) | |
tree | c1f176b9d343fa91e004cdb6af68e0e167e9a501 /Source/cmFileCommand.cxx | |
parent | 112f758223737464959a593084a357ba5d572e8b (diff) | |
download | CMake-e5ba1041be862212a3ad66bd51930fc7beeb8140.zip CMake-e5ba1041be862212a3ad66bd51930fc7beeb8140.tar.gz CMake-e5ba1041be862212a3ad66bd51930fc7beeb8140.tar.bz2 |
file(DOWNLOAD|UPLOAD): Add 'USERPWD' suboption
Diffstat (limited to 'Source/cmFileCommand.cxx')
-rw-r--r-- | Source/cmFileCommand.cxx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index ae7a511..2c226cd 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2481,6 +2481,7 @@ bool cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) std::string hashMatchMSG; CM_AUTO_PTR<cmCryptoHash> hash; bool showProgress = false; + std::string userpwd; while (i != args.end()) { if (*i == "TIMEOUT") { @@ -2564,6 +2565,13 @@ bool cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) return false; } hashMatchMSG = algo + " hash"; + } else if (*i == "USERPWD") { + ++i; + if (i == args.end()) { + this->SetError("DOWNLOAD missing string for USERPWD."); + return false; + } + userpwd = *i; } else { // Do not return error for compatibility reason. std::string err = "Unexpected argument: "; @@ -2703,6 +2711,11 @@ bool cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args) check_curl_result(res, "DOWNLOAD cannot set progress data: "); } + if (!userpwd.empty()) { + res = ::curl_easy_setopt(curl, CURLOPT_USERPWD, userpwd.c_str()); + check_curl_result(res, "DOWNLOAD cannot set user password: "); + } + res = ::curl_easy_perform(curl); /* always cleanup */ @@ -2783,6 +2796,7 @@ bool cmFileCommand::HandleUploadCommand(std::vector<std::string> const& args) std::string logVar; std::string statusVar; bool showProgress = false; + std::string userpwd; while (i != args.end()) { if (*i == "TIMEOUT") { @@ -2817,6 +2831,13 @@ bool cmFileCommand::HandleUploadCommand(std::vector<std::string> const& args) statusVar = *i; } else if (*i == "SHOW_PROGRESS") { showProgress = true; + } else if (*i == "USERPWD") { + ++i; + if (i == args.end()) { + this->SetError("UPLOAD missing string for USERPWD."); + return false; + } + userpwd = *i; } else { // Do not return error for compatibility reason. std::string err = "Unexpected argument: "; @@ -2930,6 +2951,11 @@ bool cmFileCommand::HandleUploadCommand(std::vector<std::string> const& args) ::curl_easy_setopt(curl, CURLOPT_INFILESIZE, static_cast<long>(file_size)); check_curl_result(res, "UPLOAD cannot set input file size: "); + if (!userpwd.empty()) { + res = ::curl_easy_setopt(curl, CURLOPT_USERPWD, userpwd.c_str()); + check_curl_result(res, "UPLOAD cannot set user password: "); + } + res = ::curl_easy_perform(curl); /* always cleanup */ |