ENH: Allow blocking of writing into the source tree

This commit is contained in:
Andy Cedilnik
2006-03-22 14:40:36 -05:00
parent 10efe3b079
commit ee1975570e
8 changed files with 108 additions and 0 deletions
+15
View File
@@ -102,6 +102,13 @@ bool cmFileCommand::HandleWriteCommand(std::vector<std::string> const& args,
{
message += *i;
}
if ( !this->Makefile->CanIWriteThisFile(fileName.c_str()) )
{
std::string e = "attempted to write a file: " + fileName + " into a source directory.";
this->SetError(e.c_str());
cmSystemTools::SetFatalErrorOccured();
return false;
}
std::string dir = cmSystemTools::GetFilenamePath(fileName);
cmSystemTools::MakeDirectory(dir.c_str());
@@ -279,6 +286,14 @@ bool cmFileCommand::HandleMakeDirectoryCommand(
expr += "/" + *i;
cdir = &expr;
}
if ( !this->Makefile->CanIWriteThisFile(cdir->c_str()) )
{
std::string e = "attempted to create a directory: " + *cdir
+ " into a source directory.";
this->SetError(e.c_str());
cmSystemTools::SetFatalErrorOccured();
return false;
}
if ( !cmSystemTools::MakeDirectory(cdir->c_str()) )
{
std::string error = "problem creating directory: " + *cdir;