file(DOWNLOAD|UPLOAD): Add 'USERPWD' suboption
This commit is contained in:
parent
112f758223
commit
e5ba1041be
|
@ -222,6 +222,9 @@ Options to both ``DOWNLOAD`` and ``UPLOAD`` are:
|
|||
``TIMEOUT <seconds>``
|
||||
Terminate the operation after a given total time has elapsed.
|
||||
|
||||
``USERPWD <username>:<password>``
|
||||
Set username and password for operation.
|
||||
|
||||
Additional options to ``DOWNLOAD`` are:
|
||||
|
||||
``EXPECTED_HASH ALGO=<value>``
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
1
|
|
@ -0,0 +1,4 @@
|
|||
^CMake Error at DOWNLOAD-pass-not-set.cmake:[0-9]+ \(file\):
|
||||
file DOWNLOAD missing string for USERPWD.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
|
@ -0,0 +1 @@
|
|||
file(DOWNLOAD "" "" USERPWD)
|
|
@ -2,7 +2,9 @@ include(RunCMake)
|
|||
|
||||
run_cmake(DOWNLOAD-hash-mismatch)
|
||||
run_cmake(DOWNLOAD-unused-argument)
|
||||
run_cmake(DOWNLOAD-pass-not-set)
|
||||
run_cmake(UPLOAD-unused-argument)
|
||||
run_cmake(UPLOAD-pass-not-set)
|
||||
run_cmake(INSTALL-DIRECTORY)
|
||||
run_cmake(INSTALL-MESSAGE-bad)
|
||||
run_cmake(FileOpenFailRead)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
1
|
|
@ -0,0 +1,4 @@
|
|||
^CMake Error at UPLOAD-pass-not-set.cmake:[0-9]+ \(file\):
|
||||
file UPLOAD missing string for USERPWD.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:[0-9]+ \(include\)$
|
|
@ -0,0 +1 @@
|
|||
file(UPLOAD "" "" USERPWD)
|
Loading…
Reference in New Issue