summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmFileCommand.cxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 8868812..aa9731b 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -2060,6 +2060,17 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string>
}
i++;
}
+
+ std::string dir = cmSystemTools::GetFilenamePath(file.c_str());
+ if(!cmSystemTools::FileExists(dir.c_str()) &&
+ !cmSystemTools::MakeDirectory(dir.c_str()))
+ {
+ std::string errstring = "FILE(DOWNLOAD ) error; cannot create directory: "
+ + dir + ". Maybe need administrative privileges.";
+ this->SetError(errstring.c_str());
+ return false;
+ }
+
std::ofstream fout(file.c_str(), std::ios::binary);
if(!fout)
{