Jelajahi Sumber

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

Sebastien Barre 17 tahun lalu
induk
melakukan
cddb1346b7
1 mengubah file dengan 11 tambahan dan 0 penghapusan
  1. 11 0
      Source/cmFileCommand.cxx

+ 11 - 0
Source/cmFileCommand.cxx

@@ -2060,6 +2060,17 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string>
       }
       }
     i++;
     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);
   std::ofstream fout(file.c_str(), std::ios::binary);
   if(!fout)
   if(!fout)
     {
     {