diff options
Diffstat (limited to 'Source/cmConfigureFileCommand.cxx')
-rw-r--r-- | Source/cmConfigureFileCommand.cxx | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 051fe2885d..d6f2b683d3 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -36,6 +36,17 @@ bool cmConfigureFileCommand } this->InputFile += inFile; + // If the input location is a directory, error out. + if(cmSystemTools::FileIsDirectory(this->InputFile.c_str())) + { + cmOStringStream e; + e << "input location\n" + << " " << this->InputFile << "\n" + << "is a directory but a file was expected."; + this->SetError(e.str().c_str()); + return false; + } + const char* outFile = args[1].c_str(); if(!cmSystemTools::FileIsFullPath(outFile)) { @@ -44,6 +55,13 @@ bool cmConfigureFileCommand } this->OutputFile += outFile; + // If the output location is already a directory put the file in it. + if(cmSystemTools::FileIsDirectory(this->OutputFile.c_str())) + { + this->OutputFile += "/"; + this->OutputFile += cmSystemTools::GetFilenameName(inFile); + } + if ( !this->Makefile->CanIWriteThisFile(this->OutputFile.c_str()) ) { std::string e = "attempted to configure a file: " + this->OutputFile |