Browse Source

BUG: the directory the FILE DOWNLOAD command is writing to might not exist.

Sebastien Barre 17 years ago
parent
commit
cddb1346b7
1 changed files with 11 additions and 0 deletions
  1. 11 0
      Source/cmFileCommand.cxx

+ 11 - 0
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)
     {